bool b1=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderComment(),MODE_BID),200);
MarketInfo(OrderComment(),MODE_BID) => obviously OrderComment() is a typo of OrderSymbol()
but quick workaround is: (for-loop needs to be reverse count for order closure)
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if((OrderComment()==(Symbol()+"buy") && OrderType()==OP_BUY))
{
if((sma1<sma2) && (sma1p>sma2p))// buy close
{
bool b1=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),200);
}
}
}
bool b1=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderComment(),MODE_BID),200);
MarketInfo(OrderComment(),MODE_BID) => obviously OrderComment() is a typo of OrderSymbol()
but quick workaround is: (for-loop needs to be reverse count for order closure)
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if((OrderComment()==(Symbol()+"buy") && OrderType()==OP_BUY))
{
if((sma1<sma2) && (sma1p>sma2p))// buy close
{
bool b1=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),200);
}
}
}
按照你的提示,更换了一下代码。但如果只是把markeinfo()项更换的话,日志确实没有向之前那样提示了。但报告2年时间只有100多单的交易(仅是简单的MA均线金叉死叉测试),为什么2年时间只有100多单的简单MA交叉开仓,是平仓出了问题吗?平仓我是强化的,有设置止损的以及如本题的平仓设置,应该不会有扛单,即时是扛单,交叉信号也不应该才100单哦,毕竟是1分钟图啊。这个EA设置了一个信号只能开一张单,2年的MA交叉也不应该是只有100个信号吧?问题会在哪里呢?
还有就是,如果把你给的代码整段都替换掉我的订单关闭代码的话(这个开始for (int i=OrdersTotal()-1;....),会造成测试没有单开仓,是不是我代码中开仓代码用的是for (int i=0;i<OrdersTotal();i++)(是用来检测只能开一张单的),所导致的冲突啊?
谢谢!
抱歉,不会英文回复你,麻烦你了。
做策略回撤的时候,提示我的EA002有一个错误,导致3年数据(15.1-17.12)的回撤仅下单十几单,而且都是直线向下的。显示如下图:
但是,我在实时MT4模拟盘中运行此EA的时候,却能正常开仓,平仓。为什么策略回撤就不行呢?以下是代码中问题代码的截图,请各位大神指点一下问题出在哪里?如何更改?谢谢!