新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 133

 
大家好。你能告诉我如何改变这段代码吗 for(int i=OrdersTotal()-1;i>=0;i-){
目前,它正在关闭最近打开的那些。我想让它先关闭第一批的!
 
Rustam Bikbulatov:
大家好。你能告诉我如何改变这段代码吗 for(int i=OrdersTotal()-1;i>=0;i-){
目前,它正在关闭最近打开的那些。我想让它先关闭第一批的!
for(int i=0; i<OrdersTotal(); i++)
 
Rustam Bikbulatov:
大家好。请告诉我如何修改这段代码 for(int i=OrdersTotal()-1;i>=0;i--){
目前,它正在关闭最近打开的那些。你想让它先关上第一批!
for( int i = 0; i < OrdersTotal(); i++ )
   {
    if( /*Функция закрытия. Если вернула истину*/ )
       i--;
   }

这样试试吧。你应该使用函数来关闭订单,而不是注释。我没有检查其功能。而在这里,我认为我们将不得不每次都调用 计算订单量的函数,因为订单的数量会减少。

我们也可以尝试这样的变体。

while( OrdersTotal() > 0 )
   /*Функция закрытия ордера*/
 
Vitaly Muzichenko:
for(int i=0; i<OrdersTotal(); i++)
它不能正常关闭)
 
Rustam Bikbulatov:
它以一种尴尬的方式关闭)
正确的方法是记住哪些订单需要关闭,按照你的需要对列表进行排序,然后按照这个顺序关闭。

并不正确,但现在(直到一些构建),它是有效的:在成功关闭i-- 的时候



 
Rustam Bikbulatov:
大家好。你能告诉我如何改变这段代码吗 for(int i=OrdersTotal()-1;i>=0;i-){
目前,它正在关闭最近打开的那些。我想让它 先关闭第一批的!

//+------------------------------------------------------------------+
//|           Закрыть все позиции начиная с первых                   |
//+------------------------------------------------------------------+

double CloseOrders()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    break;
    
    if (OrderMagicNumber() != mn)
    break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, CloseColor );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, CloseColor );
                          break;
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
    }  
  }
return (True);
}
// End
 
Rustam Bikbulatov:
它以一种尴尬的方式关闭)
我所建议的方案一般来说是不协调的,不适合关闭。
如果你在谈论从旧到新的关闭,那么你就是在关闭电网。有了一些关于网格的经验,我可以肯定的是,你不应该根据头寸的年龄来选择,而应该根据它的手数来选择,而且你应该从大手数向小手数收盘。如果网格是单批的,那么在关闭的顺序上就没有区别。使用现成的功能来关闭,不要发明已经被发明过的东西)
 
非常感谢你们!我已经把它整理好了!!。
 
Vitaly Muzichenko:
我所建议的方案一般来说是不协调的,不适合封闭。
如果你在谈论从旧到新的关闭,那么你就是在关闭电网。有了一些关于网格的经验,我可以肯定的是,你不应该根据头寸的年龄来选择,而应该根据它的手数来选择,而且你应该从大手数向小手数靠拢。如果网格是单批的,那么在关闭的顺序上就没有区别。使用现成的函数进行关闭,不要发明已经发明过的东西)
这就对了。你是对的!
 
开发人员先生们!大家好。我对一个问题感兴趣,就是在创建专家顾问模板(脚本)时如何创建。这是否可以在某个地方进行编辑,如何进行?
原因: