有关copybuffer在回测中不好用的问题

 
void OnTick()
  {
   double xn,xTR[];
   int h=iATR(Symbol(),PERIOD_D1,20);
   ArraySetAsSeries(xTR,true);
   int a;
   a=CopyBuffer(h,0,0,3,xTR);
   IndicatorRelease(h);

  }

如上图所示,我在历史数据里面调试(如:选择2022年4月1日到 2022年4月16日),直接a=-1,取得不了ATR指标的值,不知道如何解决,希望大神帮忙解决

附加的文件:
1.jpg  76 kb
 

https://www.mql5.com/zh/docs/series/copybuffer

当向指标要求数据,如果要求的时序列没有建立或者需要从服务器上下载,函数很快会返回-1,但是下载/建立的过程将会开始。

当EA交易或脚本要求数据时,来自服务器的下载 会开始,如果终端本地没有这些数据,要求建立的时序列就会开始,如果数据可以从本地历史建立但尚未准备好。函数在超时期满时,会返回一定数量的准备好的数据,但是历史下载会继续,在下一个类似要求函数中会返回更多数据。

MQL5文档: 时间序列和指标访问 / CopyBuffer
MQL5文档: 时间序列和指标访问 / CopyBuffer
  • www.mql5.com
CopyBuffer - 时间序列和指标访问 - MQL5参考 - 参考MetaTrader 5的算法/自动交易语言
 

你说的这个我也看到了,就是立刻返回-1,如果我想copybuffer返回指定日期的数据应该如何写上面的代码?或者说在历史回测中如何调用copybuffer才能有数据返回,而不是-1