作ろうとしているのがEAなのかインジケータなのかわかりませんが、EAの場合は下記のような流れになります。
0. iMAで移動平均のインジケータを作成
0. BarsCalculatedで計算済みのバーの数を確認
0. CopyBufferで移動平均を取得
MQL
1int ExtMAHandle;
2
3int OnInit()
4{
5 ExtMAHandle = iMA(NULL, PERIOD_CURRENT, 50, 0, MODE_SMA, PRICE_CLOSE);
6 if (ExtMAHandle == INVALID_HANDLE)
7 {
8 PrintFormat("iMA failed : %d", GetLastError());
9 return INIT_FAILED;
10 }
11
12 return INIT_SUCCEEDED;
13}
14
15void OnTick()
16{
17 if (BarsCalculated(ExtMAHandle) < 0)
18 {
19 return;
20 }
21
22 // 個別に取得
23 double currMa[1];
24 CopyBuffer(ExtMAHandle, 0, 0, 1, currMa);
25
26 double prevMa[1];
27 CopyBuffer(ExtMAHandle, 0, 1, 1, prevMa);
28
29 // まとめて取得
30 double ma[2];
31 CopyBuffer(ExtMAHandle, 0, 0, 2, ma);
32
33 PrintFormat("currMa = %f, prevMa = %f, ma[0] = %f, ma[1] = %f", currMa[0], prevMa[0], ma[0], ma[1]);
34}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/02 01:20