【发布时间】:2019-04-01 15:45:02
【问题描述】:
我需要以与交易视图代码 Pine Script 中相同的方式计算 ATR。我说的是股票或外汇技术分析中的平均真实范围指标。 在 Pine Script 的文档中说是这样计算的:
plot(rma(close, 15))
// same on pine, but much less efficient
pine_rma(x, y) =>
alpha = y
sum = 0.0
sum := (x + (alpha - 1) * nz(sum[1])) / alpha
plot(pine_rma(close, 15))
RETURNS
Exponential moving average of x with alpha = 1 / y.
我尝试了与 MQL5 文档中相同的方法,但策略的结果完全不相似,ATR 有问题。计算真实范围很简单,我知道问题在于如何计算这个 RMA(滚动移动平均线?)。它说是按照原始 RSI 指标计算的。有人可以更好地解释一下 Pine Script 中的 ATR 是如何计算的,希望有一个例子。目前我使用了带有 alpha= 1 / ATR_Period 的 EMA,如文档中所示,但似乎不一样。 Bellow是新ATR的代码,基本上和MT5默认的一样,我只改了最后一部分,计算的地方。 感谢您的帮助!
//--- the main loop of calculations
for(i=limit;i<rates_total && !IsStopped();i++)
{
ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
ExtATRBuffer[i]=(ExtTRBuffer[i] - ExtATRBuffer[i-1]) * (1 / ATR_Period) +ExtATRBuffer[i-1] ; // Here I calculated the EMA of the True Range
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
【问题讨论】:
标签: mql5 pine-script