OrderSelect(0, SELECT_BY_POS, MODE_TRADES)) - страница 2

 

2 вопроса
1) зачем нужна строчка if (OrdersTotal()==4)
2) как открываешь ордер, покажи функцию

 
Techno >>:

2 вопроса
1) зачем нужна строчка if (OrdersTotal()==4)
2) как открываешь ордер, покажи функцию


if (OrdersTotal()==4) ето вообщем как для примера, тоесть если будет 4 ордера то надо произвести модификацию выбранного ордера, тот что с коментом "+Order_0"
открытие состоит из 2 частей 1-я: 
if (_ExpertOrdersTotal == 0 && NewTradeCycleAllowed) 
     {
      i = _ExpertOrdersTotal; 
      _OrderType      [i] = iif(TradeDirection > 0,OP_BUY,OP_SELL);
      _OrderLots      [i] = OrderLotsSize[i];

      _OrderOpenPrice [i] = iif(TradeDirection > 0,Ask,Bid);
      _OrderStopLoss  [i] = _OrderOpenPrice[i] - TradeDirection * Order_0_TakeProfit*Point; 
      
      _OrderComment   [i] = iifStr(TradeDirection > 0,StringSetChar(OrderCommentMes[i],0,'+'),StringSetChar(OrderCommentMes[i],0,'-'));
       _OrderSend();
       return(true);
     }
и 2-я : 
bool _OrderSend()
  {
   if (IsTradeContextBusy()) { return(false);} 
   _OrderTicket[i]=  
        OrderSend(Symbol(),_OrderType      [i]
                          ,_OrderLots      [i]
                          ,_OrderOpenPrice [i] ,3
                          ,_OrderStopLoss  [i]
                          ,_OrderTakeProfit[i]
                          ,_OrderComment   [i]
                          ,MagicNumberOwn,0,CLR_NONE);
   if (_OrderTicket[i] < 0)
    {
     LastError = GetLastError();
     Print("("+MagicNumberOwn+")"+_OrderComment[i]+OrderOpenSetErrorMes+" : "+ LastError+" - "+ErrorDescription(LastError));
     
     return(false);
    }
   Print("("+MagicNumberOwn+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderOpenSetOkMes);
   
   return(true);
}           
 

да уж, замысловатый код. В общем коммент должен быть установлен в этой строчке
_OrderComment [i] = iifStr(TradeDirection > 0,StringSetChar(OrderCommentMes[i],0,'+'),StringSetChar(OrderCommentMes[i],0,'-'));
А по проще код не хочешь сделать? Тебе бы было проще разобраться

 
Techno >>:

да уж, замысловатый код. В общем коммент должен быть установлен в этой строчке
_OrderComment [i] = iifStr(TradeDirection > 0,StringSetChar(OrderCommentMes[i],0,'+'),StringSetChar(OrderCommentMes[i],0,'-'));
А по проще код не хочешь сделать? Тебе бы было проще разобраться


где комент должден рамищатся я знаю..) но дело в том что функция дальше не выполняется  ( что касается модификации выбранного ордера)......не...таков уж весь код советника замысловатый))
 

ну ошибка значит где то в коде, это все полностью надо смотреть. кстати замысловатость это одна из причин по которой легко допустить ошибку и сложно найти.

Причина обращения: