Мне нужно рассчитать ATR так же, как в Pine Script, коде торгового представления.Я говорю о индикаторе Average True Range в техническом анализе акций или валют.В документации в 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.Может кто-нибудь лучше объяснить, пожалуйста, как рассчитывается ATR в Pine Script, надеюсь, с примером.На данный момент я использовал EMA с alpha = 1 / ATR_Period, как в документации, но, похоже, не то же самое.Ниже приведен код для нового 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);
}
//+------------------------------------------------------------------+