1.容許的滑點太小 平不到執行指令的價格
2. OrderClose(.....) 後面接著執行 i=OrdersTotal(); 確保平倉失敗時循環次數不會減少
for(int i=0;i<OrdersTotal();i++)换成 for(int i=OrdersTotal()-1;i>=0;i--) 因为0#订单被平了后,已经不在持仓列表,持仓列表中又形成了新的0#
Lin Luo:
for(int i=0;i<OrdersTotal();i++)换成 for(int i=OrdersTotal()-1;i>=0;i--) 因为0#订单被平了后,已经不在持仓列表,持仓列表中又形成了新的0#
for(int i=0;i<OrdersTotal();i++)换成 for(int i=OrdersTotal()-1;i>=0;i--) 因为0#订单被平了后,已经不在持仓列表,持仓列表中又形成了新的0#
应该是这个原因。
void OnStart() { for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue); } if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue); } if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT) || (OrderType()==OP_SELLLIMIT) || (OrderType()==OP_SELLSTOP)) { OrderDelete(OrderTicket()); } } } }
哥,BUY是Bid ,SELL是Ask