目录

MT5

MT5工具使用

MetaTrader のショートカットキー(ホットキー)を使いこなす

MT5资源、编程参考

Expert - 编程控制EA停止、启动

MT5编程

0到底代表最左柱还是最右柱?

编程中非常重要的一个问题:在 EA, Indicator, Script 中,0到底代表最左侧蜡烛还是最右侧蜡烛?

EA 和 Script 编程

为计算方便起见,为保存 Indicator 数据和 MqlRates 数据定义的 XxxBuffer[] 和 rates[],在定义后进行

的设置,使 XxxBuffer 和 rates 成为时间序列,0代表最右侧蜡烛(the current bar)。

Indicator 编程

根据计算方便程度而定:

1, 当从左到右计算比较方便的时候

默认情况下,预定义函数 OnCalculate 参数中的 close[0] 是图表最左侧蜡烛,close[rates_total-1] 是图表最右侧蜡烛。因此,如果从左到右计算比较方便的时候,为保存其他 Indicator 数据而定义的 XxxBuffer,不进行 ArraySetAsSeries(XxxBuffer, true) 的设置(不设置XxxBuffer为时间序列)。那么在 BarsCalculated(XxxHandle) ⇒ CopyBuffer(XxxHandle, n, 0, count, XxxBuffer) 之后,XxxBuffer 中的序列,跟 OnCalculate 参数中的 close[] 同样也是0代表最左侧,rates_total-1 代表最右侧。

2, 当从右到左计算比较方便的时候

在预定义函数 OnCalculate 的开头部分,先把 time[], close[] 等设置为时间序列(最右侧最新bar为0),在编程中使用到的保存其他 Indicator 数据的 XxxBuffer,也设置为时间序列:

注意:如果在 Indicator 的编程中用到其他 Indicator,需要在 indicator_buffers N 里计入该 Indicator 的输出值,并且设置 SetIndexBuffer(n, XxxBuffer, INDICATOR_CALCULATIONS) ,否则通过 CopyBuffer(XxxHandle, 0, 0, n, XxxBuffer) 复制输出值的时候 XxxBuffer 的要素个数将与 close[] 的要素个数不匹配。