如何找到最接近的價格?
Results 1 to 1 of 1

Thread: 如何找到最接近的價格?

  1. #1
    我試圖找到一種方法來做到這一點。起初我嘗試使用 MathAbs 做一些事情並相互減去值,但似乎我過於簡單化了,因為我在這里處理大約 20 個價格。我已經聲明了所有這些,所以只需找到正確的即可。

    有沒有一種快速簡便的方法來獲取如此多的價格並獲得每種可能組合的價格差異(或者找到某種方法只獲得重要的組合)?或者也許用某個任意最大值過濾它們(如果差異超過它,價格將被忽略)?

  2. #2
    我已經有大約 1 年沒有使用數組了,忘記瞭如何使用它們。在 MetaEditor 中有一個幫助按鈕,您可以從那裡找到如何聲明數組等。或者在這裡:
    http://docs.mql4.com/抱歉,我沒有時間為您閱讀

  3. #3
    我發布的示例不起作用?也許為了更清楚地說明,這些價格是基於各種指標的未來價格的可能目標。我想找出這些可能目標中的多個何時接近並以這些價格為基礎進入/退出。我將如何定義緊密在一起是一個完全不同的問題,很可能可以使用 ATR 或類似的東西來解決,或者只是一個我可以隨著波動率變化而調整的外部值。我意識到這與線程標題中的要求不同,但問題是我還不是 100% 確定如何去做。中途我意識到最好定義一個最大值,因為可能有超過 2 個價格接近。我對如何基本進行設置感興趣,並且我可以從那裡走不同的路。如果我發布的代碼像我認為的那樣工作,那麼這對於我想做的事情應該足夠了。除了在 indiors 中使用的系列之外,我對數組沒有任何經驗,所以我不確定使用數組的正確方法是什麼。我認為您就像 Array [Dimension1] [Dimension2] 一樣,並且您擁有那些坐標處的值。我只是省略了數組中所有價格的重複聲明(Price0、Price1 應該繼續到 Price19)。例如,是 double Array[19][1];正確還是我需要使用 [20][2] 因為聲明時不計算零? (它應該創建一個 20x2 的數組,如果我假設正確,索引應該從 0 開始到 19 結束,第二維索引應該是 0 和 1)

  4. #4

    Quote Originally Posted by ;
    你知道在有 4-5 個值相對接近的情況下我必須如何調整嗎(比如差異,但它可以是低於指定最大值的任何數量:0.00005、0.00004、0.00003、0.00002)。並不是我特別需要最接近的 2 個價格,而是符合最大差異的多個價格?
    Pipsgeek,這和你問的不一樣。所以你想定義一個最大距離並找到所有彼此接近的價格對?有不止一種方法可以做到這一點。一種是:製作一個一維數組並用您擁有的所有價格填充它。對其進行排序(升序或降序,無關緊要)。在數組中循環一次並檢查這 2 個價格之間的距離是否 lt;= maximum_difference 如果是,則對該值執行某些操作。要么將它存儲在另一個數組中(或者在一個二維數組中進行整個檢查,其中索引 0 包含價格,索引 1 包含與先前價格的距離)從該檢查中您提取了所有價格水平,它們彼此更接近您定義的 maximum_difference (或等於 max diff )。我不能說更多,因為我不知道你為什麼要這樣做,也不知道你將如何處理提取的價格水平。但這對於了解如何存儲級別以及使用這些級別需要哪些額外信息是必要的。

  5. #5
    一種方法是:製作一個數組並用您要檢查的所有價格填充它。對數組進行排序,這樣您就可以使用 1 個命令以良好的升序或降序排列它們。聲明一個雙 LowestDistance = 9999999.99;從數組的一端開始比較價格,如下所示:if(price1-price2 lt;= LowestDistance) {LowestDistance=price1-price2;
    price_a = price1;價格_b = 價格 2; } if(price2 - price3 lt;= LowestDistance) {LowestDistance = price2-price3;
    price_a = price2; price_b = price3 } if(price3 - price4 lt;= LowestDistance) {LowestDistance = price3-price4;
    price_a = price3; price_b = price4 } ..... .... 這可以在循環中完成。循環結束後,您將有 3 個字段填充了正確的值: LowestDistance price_a price_b 我​​認為這就是您所需要的。

  6. #6
    謝謝。所以我創建一個數組,然後創建一個循環遍歷數組索引並比較索引中的值?你知道在有 4-5 個值相對接近的情況下我必須如何調整嗎(比如差異,但它可以是低於指定最大值的任何數量:0.00005、0.00004、0.00003、0.00002)。並不是我特別需要最接近的 2 個價格,而是符合最大差異的多個價格?這會是解決該問題的好方法嗎?插入代碼 double Array#91;19#93;#91;1#93;;數組初始化(數組#91;19#93;#91;1#93;,20);數組#91;0#93;#91;0#93; = 價格 0;數組#91;1#93;#91;0#93; =價格1;/等等……等等……等等……ArraySort(數組#91;19#93;#91;1#93;,WHOLE_ARRAY,0,MODE_ASCEND);最大差異 = 0.00005;停止 = 19;對於 (i=0;ilt;Stop;i ) { if (MathAbs(Array#91;i#93;#91;0#93; - Array#91;i 1#93;#91;0#93; ) lt;= maxdiff) {Array#91;i#93;#91;1#93; =我 1;數組#91;i 1#93;#91;1#93; = i;} 如果我像這樣正確使用數組,我們應該得到一個二維數組,第一維包含 20 個價格,第二個包含 20 或 0 到 19 的整數。如果整數為 20,則沒有價格足夠接近,如果價格為 0-19,則這對應於與該價格足夠接近的價格指數。儘管索引可以被下一個價格覆蓋,但另一個價格仍將包含該索引,我可能會添加一個比較價格 1 和價格 3 差異的檢查(價格 2 在價格 1 和價格 3 的 maxdiff 範圍內)在設置數組的第二維之前(如果(Array == 20),類似的東西)。

  7. #7
    大聲笑,感謝您給我使用數組的想法。我認為數組對您來說是小菜一碟,您可以立即查看它是正確的還是不正確的。從相當不清楚的 MQL4 幫助示例來看,聲明它的正確方法似乎是使用值的數量,而不是索引號(因此 Array[20][2] 用於 20x2 數組)。

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。