2016-09-24 33 views
2

如何在MQL4中編寫多維動態數組?我對編碼MQL4相當陌生。目前編寫我的第一個EA,並剛剛瞭解陣列。我想知道,如何編寫動態數組?如何對多維動態數組進行編碼?

我想要做的是,當我的EA初始化爲過去的100個酒吧,找出最高50個酒吧並保存並相應地命名它們,然後從50個酒吧中找出前10個最高交易量並保存並重新命名。我想使用動態數組來保存酒吧,但我不知道該怎麼做。

回答

-1

定義多維數組:double array[][2];

檢查數組函數ArrayCopySeries()ArraySort()

ArrayCopyRates()不是有用,如果您需要使用一些排序,而不是第一維,恐怕。

所有文檔都here

+0

IMHO,2-細胞在第二尺寸是不足夠的工作具有laman定義處理所需的值,需要3+個值來存儲/處理。使用指定的動態數組的原因似乎還不清楚,一旦在O/P中給出了100巴,50巴和10巴的要求。 StackOverflow還鼓勵用戶*而不是發佈遠程站點內容的副本,而不是留下內容的鏈接,而不對該遠程內容進行任何闡述。此類內容在更近的將來可能會變得不可用或無法訪問,因此您可能需要對其進行編輯 – user3666197

0

沒什麼特別的,只是用普通工具:

double array[][2]; 
int size = 100; 

void FunctionArray(){ 
    ArrayResize(array, size); 
    for(int i = 0; i < size; i++){ 
      array[i][0] =   iHigh( _Symbol, 0, i); 
      array[i][1] = (double) iVolume(_Symbol, 0, i); 
    } 

// Print(__LINE__, " ", array[0][0], " ", array[1][0], " ", array[2][0], " ", array[3][1], " ", array[size-1][0], " ", array[size-1][1]); 

    ArraySort(array, WHOLE_ARRAY, 0, MODE_DESCEND); 

// Print(__LINE__, " ", array[0][0], " ", array[0][1]); 

    double  new50Array[50][2]; 
    ArrayCopy(new50Array, array, 0, 0, size);   // block-copying 

// Print(__LINE__, " ", array[0][0], " ", array[0][1], " ", array[1][0], " ", array[1][1], " ", array[49][0], " ", array[49][1]); 
    } 

與同爲卷 - 你需要制定爲ArraySort()爲第一要素只在運行自己的工具;
可選地 - 拷貝由元件成new50Array[][]
iVolume()在首位
iHigh()在第二,
代替「複製」,然後調用ArraySort()再次