为什么 MQL4 回测 RSI 值与图表上的 RSI 不匹配?

Why MQL4 Backtest RSI values do not match with RSI on chart?

我有以下 EA 的简单回测:

    void OnTick()
    {
       double rsi = iRSI( Symbol(), PERIOD_M5, 14, PRICE_CLOSE, 0 );
       
       int day  = TimeDay(    TimeCurrent() );
       int hour = TimeHour(   TimeCurrent() );
       int min  = TimeMinute( TimeCurrent() );
       if (  day  ==  7
          && hour >=  9
          && hour <  11
             ) {      
          Print( Symbol(), " / ", PERIOD_M5, " rsi: ", (string) rsi );
       }
    }

然而,回测日志似乎与图表中显示的图像不匹配:

http://i.imgur.com/PRhtvQD.png

能给个解释吗?

Q : "Could you please give some explanation?"

当然,您的代码计算并更新打印的 RSI(14) 值(每笔报价)

请注意,前一根柱线 08:55 的收盘价 RSI(14) 远高于 HLINE ~ 30%(如果有疑问,您可以先 Print( iRSI( Symbol(), PERIOD_M5, 14, PRICE_CLOSE, 1 ) );将以数字形式看到“上一个”栏值。

从大约该值(高于 ~ 30%)开始,新打开的柱 [0] 将开始“发展”新柱内的实际 RSI(14) 值。因此,最初,这些值将“移动”并且图表绘制/重新绘制线条(我们可以将每个此类更改可视化为点、标记或 Hi/Lo-range ),这就是 原因,为什么我们最终看到一条蓝线下降到 Close[0] 在退出审查中的柱时“完成”的位置(09:00 柱,大约在 09:04:59:9999 次).