MetaTrader 4 (MT4)的编程语言MQL4为开发者提供了一套强大的工具,用于创建自定义的交易指标和策略。一个常见的任务是计算需要处理的柱状图的数量。在此,我们将解析三种不同的计算方法。
- 老版本的写法:
int ExtCountedBars=IndicatorCounted();
if (ExtCountedBars<0) return(-1);
if (ExtCountedBars>0) ExtCountedBars--;
int pos=Bars-ExtCountedBars-1;
在此方法中,首先调用IndicatorCounted()
函数,获取已经计算的柱子数量。如果返回值为负,程序会立即返回,终止执行。如果已经计算的柱子数量大于0,我们减1,以重新计算上一个柱子,防止漏掉新的数据。最后,我们通过从总柱子数量中减去已计算的柱子数量,得到新的开始位置pos
。
- 新版本常见写法:
int limit=rates_total-prev_calculated;
if(prev_calculated>0)
limit++;
此方法首先将总柱子数量(rates_total
)与上一次已经计算的柱子数量(prev_calculated
)相减,得到本次需要计算的柱子数量limit
。如果上一次已经计算的柱子数量大于0,那么将本次需要计算的柱子数量加1,以重新计算上一个柱子,确保不会错过新的数据。
- AI 方法:
int start;
if(prev_calculated <= 0)
start = rates_total - 1;
else
start = rates_total - prev_calculated;
AI方法采取了一种更直接的方式来确定需要进行计算的起始点start
。如果上一次已经计算的柱子数量(prev_calculated
)小于或等于0,意味着没有柱子被计算过,那么我们将从最后一个柱子开始计算。否则,我们会从总柱子数量中减去已经计算过的柱子数量的位置开始计算。
以上三种方法各有优缺点,需要根据具体的开发需求和环境选择适合的计算方式。