Выполнение функции

 
У меня вот вопрос, получается у меня есть 2 функции 1-я,с одним условием : 
if (CalculateCurrentOrders(Symbol())== 2){
       for ( i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_SELL && OrderMagicNumber() == 777)
                if (OrderComment()=="-Order_0")
                 
                 OrderModify(OrderTicket(),0,OrderOpenPrice() + SL,0,0);
          }
  
   }
и 2 -я уже с другим условием :
if (CalculateCurrentOrders(Symbol())== 3){
       for (i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_SELL && OrderMagicNumber() == 777)
                 if (OrderComment()=="-Order_0")
                 OrderModify(OrderTicket(),0,OrderOpenPrice() + SL1,0,0);
          }
      
      }
но получается когда 1 -я функция выполнилась, то когда условия  2-рой подходят к выполнению, 1-я выполняется дальше и модифицирует ордер ...тоесть выходит что две функции модифицируют 1 ордер под свои параметры......как остановить функцию,чтоб она выполнялась только 1 раз и все??
 
Обыкновенным тригером, когда условие истинно то оно одновременно должно выставить разрешаущий флажок (bool переменную).
 
Что же за условие, что оно всюду подходит. О чём хотя бы.
CalculateCurrentOrders(Symbol()
 
Urain >>:
Обыкновенным тригером, когда условие истинно то оно одновременно должно выставить разрешаущий флажок (bool переменную).


спасиб, попробую.....скажу что получилось)
 
zhuki >>:
Что же за условие, что оно всюду подходит. О чём хотя бы.


Кол-ство ордеров по типу
 
И что их сразу и 2 и 3
 
zhuki >>:
И что их сразу и 2 и 3


вначале 2, потом открывается еще 1 и уже получается что выполняется старое условие по типу 2 и 3 по другому типу
 
Urain >>:
Обыкновенным тригером, когда условие истинно то оно одновременно должно выставить разрешаущий флажок (bool переменную).


ето какбы : 
int start()
  {
if (OrderModify1())return(0);
if (OrderModify2())return(0);
return(0); 
}
bool OrderModify1()
{ 
if (CalculateCurrentOrders(Symbol())== 2){
       for ( i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_SELL && OrderMagicNumber() == 777)
                if (OrderComment()=="-Order_0")
                 
                 OrderModify(OrderTicket(),0,OrderOpenPrice() + SL,0,0);
          }
  
   }
return(true);
}
bool OrderModify2()
{
if (CalculateCurrentOrders(Symbol())== 3){
       for (i=0; i<OrdersTotal(); i++)
       if (OrderSelect(i , SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_SELL && OrderMagicNumber() == 777)
                 if (OrderComment()=="-Order_0")
                 OrderModify(OrderTicket(),0,OrderOpenPrice() + SL1,0,0);
          }
      
      }
return(true);
}
так??
 
а как оно может по типу 2 выполняться ведь оно равно 3,может у вас с логикой, что то не так.
 
zhuki >>:
а как оно может по типу 2 выполняться ведь оно равно 3,может у вас с логикой, что то не так.


обьясняю на примере : открыто 2 ордера на buy - условия подходят...первая функция выполняется..... потом открывается еще 3 sell - условия для 2 функции походят...она выполняется,но при етом они работают совмесно и у первой какбы условия выполняются и во второй тоже, но мне нужно чтоб сработала функция одноразово.........
 
Ничего не понял у вас 3 sell,а срабатывает условие 2 sell . Ну да ладно.
Поставьте маяк .
Объявите глобальную переменную как false,в нечале функции проверяйте, а конце функции даете ей значение True. В каждой функции свой маяк. И подумайте что будет при перезапуске .Это самый нехороший вариант. Проще с логикой разобраться.
Причина обращения: