我目前正在MT5策略测试器中回测一个多货币对的EA,当把它连接到不同的货币对时,我得到了不同的结果。该EA在澳元兑美元和英镑兑瑞士法郎上交易。
当我把它连接到澳元兑美元时,它获得了10K的利润。
当我把它连接到GBPCHF时,它获得了超过3万的利润。
当我把它附加到USDCHF(我认为OnTick()函数会在跟踪USDCHF时对AUDUSD和GBPCHF的变化做出反应),它得到了大约17000的利润。
这是使用OnTick()函数的问题吗?还是在回测多币种EA时存在一些隐藏的问题?或者只是我的代码中的一些混乱?
这段代码其实并不重要。如果所有的交易都是在两个预定义的货币对上进行的,而且所有的交易也是在新的条形图开盘时进行的,而不是每一个tick,为什么Tester会对所附的货币对有任何区别。
也许你应该尝试OnBookEvent()而不是OnTick()?- OnTick()只在当前符号tick到达时被触发。
书籍事件(OnBookEvent
OnBookEvent()函数是BookEvent 处理程序。只有当市场深度发生变化时,专家顾问才会产生BookEvent。它必须是无效类型,有一个字符串类型的参数。
voidOnBookEvent(conststring&symbol)。 |
要接收任何符号的BookEvent事件,你只需要使用MarketBookAdd() 函数预先订阅接收该符号的这些事件。为了取消订阅接收某一特定符号的BookEvent事件,请调用MarketBookRelease()。
与其他事件不同,BookEvent事件是广播的。这意味着,如果一个专家顾问使用MarketBookAdd订阅接收BookEvent事件,所有其他拥有OnBookEvent()处理程序的专家顾问都会收到这个事件。 因此,有必要分析符号的名称,它作为 const string& symbol 参数传递给处理程序 。
我遇到了同样的问题:回测一个多货币EA时,我得到了完全不同的行为,这取决于我在策略测试面板中选择的符号。
这是非常令人烦恼的事情。罗什?有谁能评论一下吗?
即使on tick只适用于选定的图表,envid和我都是在新条形图的开盘时操作。在我的案例中,我使用的是日线,所以即使各种货币的新条形图的开盘时间不同,也不应该出现我所经历的这种巨大的差异。
由于明显的原因,我没有包括我的EA。 让我们看看在这里发布的EA是否有同样的问题:https://www.mql5.com/en/articles/105。
我很高兴听到有人成功地构建了一个多币种的EA,特别是没有受到这种差异的影响。
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
也许你应该尝试OnBookEvent()而不是OnTick()?- OnTick()只在当前符号tick到达时被触发。
书籍事件(OnBookEvent
OnBookEvent()函数是BookEvent 处理程序。只有当市场深度发生变化时,专家顾问才会产生BookEvent。它必须是无效类型,有一个字符串类型的参数。
voidOnBookEvent(conststring&symbol)。 |
要接收任何符号的BookEvent事件,你只需要使用MarketBookAdd() 函数预先订阅接收该符号的这些事件。为了取消订阅接收某一特定符号的BookEvent事件,请调用MarketBookRelease()。
与其他事件不同,BookEvent事件是广播的。这意味着,如果一个专家顾问使用MarketBookAdd订阅接收BookEvent事件,所有其他拥有OnBookEvent()处理程序的专家顾问都会收到这个事件。 因此,有必要分析符号的名称,它作为 const string& symbol 参数传递给处理程序 。
下面是一个例子。使用来自https://www.mql5.com/en/articles/105 的TEMA EA,我们得到以下不同的行为。
你只需要EA exp_tema_en.mq5和指标multistochastic_en.mq5。
在这个例子中,我使用了附件中的参数设置文件。该EA交易欧元兑美元、美元兑瑞士法郎和美元兑日元(使用这些参数)。
当你把它连接到欧元兑美元时,你会得到
当你连接到USDCHF时,你会得到
然后,对于USDJPY,我们得到
更好的是,当在澳元兑美元上运行该EA时,结果是
同样的EA,同样的时间框架(H1),同样的交易对,同样的日期(2009.01.01-2009.03.01)。
是这样吗?如果是这样,谁能告诉我们这是什么意思?
我们真的准备好进行多货币回测/优化了吗?
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
下面是一个例子。使用来自https://www.mql5.com/en/articles/105 的TEMA EA,我们得到以下不同的行为。
你只需要EA exp_tema_en.mq5和指标multistochastic_en.mq5。
在这个例子中,我使用了附件中的参数设置文件。该EA交易欧元兑美元、美元兑瑞士法郎和美元兑日元(使用这些参数)。
当你把它连接到欧元兑美元时,你会得到
当你连接到USDCHF时,你会得到
然后,对于USDJPY,我们得到
更好的是,当在澳元兑美元上运行该EA时,结果是
同样的EA,同样的时间框架(H1),同样的交易对,同样的日期(2009.01.01-2009.03.01)。
是这样吗?如果是这样,谁能告诉我们这是什么意思?
我们真的准备好进行多货币回测/优化了吗?
嗨,我有同样的问题(不同的结果),但用IsNewBar()解决了这个问题。
我同意baq的观点,那么我们应该怎么做呢?"获取报价 "和 "这个函数 "都可以。
只有当IsNewBar(一些符号),然后胡说八道
对于我的EA,我得到了同样的结果,附加到不同的符号。
我从这里得到这个函数的文章是:https://www.mql5.com/en/articles/105
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
我目前正在MT5策略测试器中回测一个多货币对的EA,当把它连接到不同的货币对时,我得到了不同的结果。该EA在澳元兑美元和英镑兑瑞士法郎上交易。
当我把它连接到澳元兑美元时,它获得了10K的利润。
当我把它连接到GBPCHF时,它获得了超过3万的利润。
当我把它附加到USDCHF(我认为OnTick()函数会在跟踪USDCHF时对AUDUSD和GBPCHF的变化做出反应),它得到了大约17000的利润。
这是使用OnTick()函数的问题吗?还是在回测多币种EA时存在一些隐藏的问题?或者只是我的代码中的一些混乱?