问题描述
我想知道如何使用以下示例代码从Strategy Tester(MetaTrader4交易终端的一部分)中的时段设置以外的时间段中获取数据,我得到的op2
和{每当我在策略测试器中选择EMA2
以外的时间段设置时,就会使用{1}}。
我该如何解决?
M5
解决方法
Q :“我该如何解决?”
嗯,
在过去的12多年中,这种语法(否则是经过精心设计的)在MetaTrader Terminal 4 Strategy Tester中从未正常工作。
如果对此有疑问,可以尝试在Expert Advisor或Script-of-MQL4代码中重新运行相同的代码段,并且在那里您将看不到任何麻烦(当然,只有在外汇市场的情况下, QUOTE
-消息传递实时进行并提供 QUOTE
标记的外汇市场事件,触发EA-OnTick()
方法...出于显而易见的原因,对于Script-of-MQL4代码而言,这没问题
实际上,这是可以解决的,但有一个限制-在较低时间范围内进行回溯测试时,您只能请求较高时间范围数据。例如,如果要在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,21,MODE_EMA,PRICE_CLOSE,0) +
"\n EMA2 : " + iMA(NULL,0);
Comment(print);
}
幸运的是,通常可以用一种方式重写EA的逻辑,以便从较低的时间范围到较高的时间范围进行工作以进行回测。