我想知道如何从策略测试仪( MetaTrader4交易终端的一部分)中的周期设置以外的时间段获取数据,使用下面的示例代码,每当我在策略测试仪中选择除M5
之外的周期设置时,op2
& EMA2
的结果为零。
我怎么才能修复它?
void OnTick()
{
string print = "\n\n\n\n\n\n" +
"\n op1= " + iOpen(NULL,PERIOD_CURRENT,0) +
"\n op2= " + iOpen(NULL,PERIOD_M5,0) +
"\n EMA1 : " + iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,0) +
"\n EMA2 : " + iMA(NULL,PERIOD_M5,21,0,MODE_EMA,PRICE_CLOSE,0);
Comment(print);
}
发布于 2020-11-04 01:41:42
Q:“我如何修复它?”
井,
大约在过去的几年中,这个(否则精心设计的一段语法)在MetaTrader终端4策略测试器中从未正确工作过。
如果在这里有疑问,可以尝试在专家顾问或脚本类型的MQL4代码中重新运行相同的代码&您不会在那里看到任何问题(当然,只有在外汇市场QUOTE
-message-feed是实时的并提供QUOTE
-tick FX市场-触发EA-OnTick()
-method的事件的情况下才会出现问题)。由于显而易见的原因,这对于脚本类型的MQL4代码来说是没有问题的)
发布于 2020-11-27 23:57:12
实际上,这是可以修复的,但有一个限制-您只能在较短的时间范围内运行后向测试时请求higher-timeframe数据。例如,如果您要在M5上运行反向测试,这将返回非零值:
void OnTick()
{
string print = "\n\n\n\n\n\n" +
"\n op1= " + iOpen(NULL,PERIOD_CURRENT,0) +
"\n op2= " + iOpen(NULL,PERIOD_M15,0) +
"\n EMA1 : " + iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,0) +
"\n EMA2 : " + iMA(NULL,PERIOD_M15,21,0,MODE_EMA,PRICE_CLOSE,0);
Comment(print);
}
幸运的是,为了回溯测试的目的,通常可以重写EA的逻辑,以便从较低的时间范围和较高的时间范围工作。
https://stackoverflow.com/questions/64640814
复制相似问题