invest:mt5
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
invest:mt5 [2023/11/13 11:33] – admin | invest:mt5 [2024/06/03 12:54] (当前版本) – admin | ||
---|---|---|---|
行 6: | 行 6: | ||
- | ===== MT5编程 ===== | + | ===== MT5资源、编程参考 |
- | === 0到底代表最左柱还是最右柱? === | + | [[https:// |
- | <wrap hi> | ||
- | 分下面两种情况: | + | ===== MT5编程 ===== |
- | 1,Indicator 编程中,0代表最左侧 | + | ==== 0到底代表最左柱还是最右柱? ==== |
- | **在自定义 Indicator 的编程中,预定义函数 OnCalculate 参数中的 close[0] 是图表最左侧蜡烛,close[rates_total-1] 是图表最右侧蜡烛。** 因此,如果在自定义 Indicator 中使用其他指标,为保持计数方向统一,在定义 XxxBuffer 的时候,不进行 ArraySetAsSeries(XxxBuffer, true); 的设置(不设置XxxBuffer为时间序列),那么在 BarsCalculated(XxxHandle) => CopyBuffer(XxxHandle, n, 0, count, XxxBuffer) 之后,XxxBuffer | + | <wrap hi>编程中非常重要的一个问题:在 EA, Indicator, Script |
- | 2,EA 和 Script 编程中,0代表最右侧 | + | === EA 和 Script 编程 |
- | 在 EA 和 Script 的编程中,为计算方便起见,为 Indicator 和 MqlRates 定义的 XxxBuffer[] 和 rates[],在定义后进行 | + | 为计算方便起见,为保存 |
* ArraySetAsSeries(XxxBuffer, | * ArraySetAsSeries(XxxBuffer, | ||
* ArraySetAsSeries(rates, | * ArraySetAsSeries(rates, | ||
的设置,使 XxxBuffer 和 rates 成为时间序列,0代表最右侧蜡烛(the current bar)。 | 的设置,使 XxxBuffer 和 rates 成为时间序列,0代表最右侧蜡烛(the current bar)。 | ||
+ | |||
+ | === Indicator 编程 === | ||
+ | |||
+ | 根据计算方便程度而定: | ||
+ | |||
+ | 1, 当从左到右计算比较方便的时候 | ||
+ | |||
+ | 默认情况下,预定义函数 OnCalculate 参数中的 close[0] 是图表最左侧蜡烛,close[rates_total-1] 是图表最右侧蜡烛。因此,如果从左到右计算比较方便的时候,为保存其他 Indicator 数据而定义的 XxxBuffer,不进行 ArraySetAsSeries(XxxBuffer, | ||
+ | |||
+ | 2, 当从右到左计算比较方便的时候 | ||
+ | |||
+ | 在预定义函数 OnCalculate 的开头部分,先把 time[], close[] 等设置为时间序列(最右侧最新bar为0),在编程中使用到的保存其他 Indicator 数据的 XxxBuffer,也设置为时间序列: | ||
+ | * ArraySetAsSeries(time, | ||
+ | * ArraySetAsSeries(close, | ||
+ | * ArraySetAsSeries(XxxBuffer, | ||
+ | |||
+ | <wrap em> | ||
+ | |||
invest/mt5.1699846423.txt.gz · 最后更改: 2023/11/13 11:33 由 admin