首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从策略测试器(MT4)中的周期设置以外的时间范围获取数据

如何从策略测试器(MT4)中的周期设置以外的时间范围获取数据
EN

Stack Overflow用户
提问于 2020-11-02 14:33:44
回答 2查看 372关注 0票数 1

我想知道如何从策略测试仪( MetaTrader4交易终端的一部分)中的周期设置以外的时间段获取数据,使用下面的示例代码,每当我在策略测试仪中选择除M5之外的周期设置时,op2 & EMA2的结果为零。

我怎么才能修复它?

代码语言:javascript
运行
复制
  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);        
  }

EN

回答 2

Stack Overflow用户

发布于 2020-11-04 01:41:42

Q:“我如何修复它?”

井,

大约在过去的几年中,这个(否则精心设计的一段语法)在MetaTrader终端4策略测试器中从未正确工作过。

如果在这里有疑问,可以尝试在专家顾问或脚本类型的MQL4代码中重新运行相同的代码&您不会在那里看到任何问题(当然,只有在外汇市场QUOTE-message-feed是实时的并提供QUOTE-tick FX市场-触发EA-OnTick()-method的事件的情况下才会出现问题)。由于显而易见的原因,这对于脚本类型的MQL4代码来说是没有问题的)

票数 0
EN

Stack Overflow用户

发布于 2020-11-27 23:57:12

实际上,这是可以修复的,但有一个限制-您只能在较短的时间范围内运行后向测试时请求higher-timeframe数据。例如,如果您要在M5上运行反向测试,这将返回非零值:

代码语言:javascript
运行
复制
  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的逻辑,以便从较低的时间范围和较高的时间范围工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64640814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档