Как сделать чтобы после каждого срабатывания стопа лот увеличивался вдвое от предыдущего

 
NextOrderLots = OrderLots()*2
 
Esc писал (а):
NextOrderLots = OrderLots()*2

да но тогда как я понимаю буде ордер увеличиваться каждый раз а мне нужно только тогда когда срабатывает стоплосс
 
Проверяйте открытый ордер на существование на каждом тике. Как только OrderSelect не сработает - значит ордер закрылся. (я так понимаю вручную вы закрываться не собираетесь?)
 
Каждый тик (или как вам будет нужно) нужно просматривать историю закрытых ордеров.
Пример работы с историей ордеров здесь: http://www.alpari.org/ru/experts/articles/24.html
В ордере сравниваем цену закрытия с ценой стоплосса. Если они равны - значит ордер закрылся по стоплоссу. У последнего ордера будет самое большое время закрытия. А далее делаете увеличение лота.
 

Я думаю, не надо смотреть на цену закрытия. Достаточно анализа OrderProfit().

 
Хочу добавить, что если торговля ведется с несколькими открытыми ордерами и при каждом закрытии по стоп-лоссу необходимо увеличивать лот вдвое, то лучше всего вести массив тикетов для открытых ордеров и проверять по тикетам. Т.е. на каждом тике просмотриваете все открытые ордера по тикетам. Если OrderSelect(id,SELECT_BY_TICKET) не сработал, то проверяем ордер по OrderSelect(id,SELECT_BY_TICKET, MODE_HISTORY) и, произведя необходимые операции, удалите тикет из массива.
 
  total=OrdersTotal();
   if(total<1) 
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
 
if(indicator>0 && Bid<=BuyTral)
      
        {                                        
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-Stop*Point,Ask+TakeProfit*Point,"priceEX",16384,0,Green);
         
         if(ticket>0)
           {
        
             TPbuy=Ask+TakeProfit*Point;
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); //MODE_TRADES
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
 
if (Ask>=(TPbuy+TakeProfit*Point)) TPbuy=Ask; 
if (Ask>=TPbuy) BuyTral=TPbuy-Point*TakeProfit*(DeltPersent/100);

А почему так не работает??? на прмере Buy Sell аналогично
Причина обращения: