как сделать выполнение части кода эксперта 1 раз

 
if (Sob1==1 && OrderSelect(ticket1,SELECT_BY_TICKET)==TRUE)
       {
        if (OrderClosePrice()<=OrderStopLoss())
           {
           Alert("ордер на покупку закрыт по SL");
           SL1_2_mod=Price1_2-100*Point;
           bool ticket1_2_mod=OrderModify(ticket1_2,Price1_2,SL1_2_mod,TP1_2,0,clrNONE);
           if (ticket1_2_mod==TRUE)
              Alert("ордер модифицирован ");
              else Alert("ошибка модификации ордера", GetLastError());
           bool t2=OrderDelete(ticket2,clrNONE);   
           bool t3=OrderDelete(ticket3,clrNONE); 
           bool t4=OrderDelete(ticket4,clrNONE); 
           bool t5=OrderDelete(ticket5,clrNONE); 
           if (t2==TRUE && t3==TRUE && t4==TRUE && t5==TRUE)               
              Alert(" удалены ненужные ордера");     
              else Alert(" ошибка удаления ордеров", GetLastError());   
           Sob1++;
           }
        }
Доброго времени суток. Подскажите есть ли способ выполнить часть кода эксперта 1 раз без маркировки события вот как здесь Sob==1? Т.е. то же условие без Sob==1, но чтоб выполнилось один раз, а не каждый раз по приходу тика? Если можно с примером.
 
bobrush:
способ выполнить часть кода эксперта 1 раз
#property strict
int OnInit()
{                            // Смотрите тему   как ... учиться
  Alert("Эта часть кода выполняется 1 раз при запуске этого робота или повторном запуске терминала");
}
 
Не подходит. При наличии вот таких событий в количестве 10-100, которые причем следуют один за другим, т.е. события 2 не будет пока нет события 1. И мне каждый раз перезапускать терминал не хочется.
 
bobrush:
Не подходит. При наличии вот таких событий в количестве 10-100
Так выполнить часть кода эксперта 1 раз или событий в количестве 10-100 ?? Или это стёб ?  И как изменится выполнение, если событий будет 500 ?
 
STARIJ:
Так выполнить часть кода эксперта 1 раз или событий в количестве 10-100 ?? Или это стёб ?  И как изменится выполнение, если событий будет 500 ?

Событий может быть много, но у каждого события свои условия (код) выполнения, но эти события происходят не одновременно, а друг за другом через неизвестное количество времени. Я так понимаю в OnInit при запуске выполнится тот код, для которого условия однозначно уже существуют. А если условий нет, т.е. события этого не случилось, то и код просто проигнорируется. Мне же надо без маркировки конкретного события(Sob) выполнение кода 1 раз, при условии что это событие произошло.
 
 if (Sob_1==1) // событие 1(1/0)
       {
       bool mod1=OrderModify(ticket1_sell, OrderOpenPrice(), SL1_sell, Price1_sell, 0, clrNONE); 
       if (mod1==true)          
          Alert ("первый ордер на продажу успешно модифицирован");          
          else Alert("ошибка модификации первого ордера на продажу", GetLastError());
       Price2_buy=Ask;
       SL2_buy=Ask-SL*Point;
       TP2_buy=Ask+TP*Point;
       ticket2_buy=OrderSend( Symbol(),OP_BUY, lot2, Price2_buy, 20, SL2_buy, TP2_buy, NULL, 3, 0, clrGreen);      
       Sob_1++;
       Sob_1_1_0=1;
       }
             
       //----------------------------событие 11(1/0)------------------------------     
       
     if (Sob_1_1_0==1 && OrderSelect(ticket2_buy, SELECT_BY_TICKET)==true)
        {
        if (OrderClosePrice()>=OrderTakeProfit())
           {
           Alert("второй ордер на покупку закрыт, событие 11(1/0)");
           Sob_1_1_0++;
           Sob_11=1;
           }
        }
 

bobrush:  ... выполнение кода 1 раз, при условии что событие произошло.

Что Вы пудрите мозги новому человеку, объясните понятно:  выполнить некий код 1 раз или каждый раз при возникновении сочетания определенных условий
В программировании важно суметь сформулировать свою мысль и только потом писать программу.
И видите, у всех картинки. Вставьте свое фото - это будет здорово!!!
 
bobrush:
 if (Sob_1==1) // событие 1(1/0)
................
И еще следует сказать, надо избегать выкладки кода, выполняющего нечто отличное от того что требуется. Новичку легче ковыряться в чужом коде, чем написать что-то стоящее. А опытным программистам, к которым Вы обращаетесь, в тысячу раз легче написать что-то заново, чем разбираться в чужих ошибках.
 
Еще пример. При Sob_1==1 выполняется код, затем в конце условия Sob_1=2, чтоб Sob_1=1 никогда не повторилось и создается еще одно событие Sob_1_1_0=1. Далее при  Sob_1_1_0=1 и выбранном ордере проверяется его закрытие по профиту и чтоб этот код снова никогда не повторился Sob_1_1_0=2, затем снова создается Sob_11=1, и вызвав это событие в след. условии, что будет означать - прошла последовательность Sob_1, Sob_1_1_0.  Так вот как преобразовать код чтоб убрать строчку Sob1++, Sob_1_1_0++, чтоб фрагмент кода выполнился 1 раз?
 
STARIJ:
И еще следует сказать, надо избегать выкладки кода, выполняющего нечто отличное от того что требуется. Новичку легче ковыряться в чужом коде, чем написать что-то стоящее. А опытным программистам, к которым Вы обращаетесь, в тысячу раз легче написать что-то заново, чем разбираться в чужих ошибках.
Так ошибок в том то и дело что нет никаких, все работает. Просто при большом количестве этих событий я начинаю путаться в коде.
 
bobrush:
Так ошибок в том то и дело что нет никаких, все работает. Просто при большом количестве этих событий я начинаю путаться в коде.

Если все работает, так чего вы хотите? И сообщите все-таки

выполнить некий код 1 раз или каждый раз при возникновении сочетания определенных условий

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