如何解决为什么当第二个箭头指示器出现时EA不执行任何操作?
我已经在Expert Advisor上编写了一些代码,可以在斐济趋势指标上进行交易。 EA可以识别第一个箭头指示符并相应地执行交易,但是,当第二个箭头应显示在反向测试中时,其余代码则无济于事。
我看到当EA执行第一笔交易时,图表上买价之后的指标中的自定义价格框停止了价格上移或下移,也许那是出问题了?
double CloseAllTradesThisPair()
{
for (int i=OrdersTotal();i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TradES);
if (OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),10,Red);
}
}
}
extern bool bought = false;
extern bool sold = false;
double Lotsize = AccountBalance()/5000;
double Lots = normalizeDouble(Lotsize,2);
void OnTick()
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,MODE_TradES);
return(0);
}
double uparrow = iCustom(Symbol(),PERIOD_CURRENT,"fiji-trend-indicator",2,0);
double dnarrow = iCustom(Symbol(),3,0);
if(uparrow < 1000 && i==0)
{
double buyticket = OrderSend(Symbol(),OP_BUY,0.01,Ask,NULL,Green);
bought = true;
}
if(dnarrow < 1000 && i==0)
{
double sellticket = OrderSend(Symbol(),OP_SELL,Bid,Red);
sold = true;
}
if(bought != true && dnarrow < 1000 )
{
CloseAllTradesThisPair();
double sticket = OrderSend(Symbol(),Red);
}
if(sold != true && uparrow < 1000)
{
CloseAllTradesThisPair();
double bticket = OrderSend(Symbol(),Green);
}
}
解决方法
Q :“当EA执行第一笔交易时,可能是哪里出了问题?”
确定是。
给出代码,EA会完全按照void OnTick(){...}
代码中的指示进行操作:
...
for ( int i = 0; i < OrdersTotal(); i++ )
{
OrderSelect( i,SELECT_BY_POS,MODE_TRADES );
return( 0 ); // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _THE_TERMINATOR_ >>> FINITO...
}
...
此片段什么也没做,直到发出第一个命令为止(然后i
停止满足条件< OrdersTotal()
。
其余的很明显:return( 0 );
...除了从void
返回值的缺陷... ,在任何情况下都不会终止接下来的所有代码均通过OnTick()
代码进行传递,从而有效地避免了任何交易:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。