TrailStop барахлит - страница 2

 
как это догадаться, модификация происходит ведь на сервере и только тогда после подтверждения в терминале меняется результат...по моему вы ошибаетесь извините за мой нубизм но все же
 
вот же
 trade[number].PositionModify(PositionTicket, NormalizeDouble(CalculatedStopLoss-10*_Point, _Digits),0);// move the stop loss 

 
или вы имели ввиду проверить успешную модификацию?
 
да проверил все работает как под надфилем, всем спасибо за помощь
 
Gaiatsu:
да проверил все работает как под надфилем, всем спасибо за помощь

Всем привет !

У меня никак не получается чтобы трейлинг стоп сработал.

подскажите пожалуйста что где не так ?

Спасибо заранее

#include <Trade\trade.mqh>
CTrade trade;



void OnTick()
  {

   double Balance=AccountInfoDouble(ACCOUNT_BALANCE);

   double Equity=AccountInfoDouble(ACCOUNT_EQUITY);

   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), _Digits);

   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID), _Digits);

   if(PositionsTotal()==0 && OrdersTotal()==0)
     {

         trade.BuyStop(1,Ask+1*_Point,_Symbol,Ask-4*_Point,Ask+11*_Point, ORDER_TIME_GTC,0,0);

         trade.SellStop(1,Bid-1*_Point,_Symbol,Bid+4*_Point,Bid-11*_Point, ORDER_TIME_GTC,0,0);

     }

   if(Balance!=Equity)
     {
         
         CancelOrder();    
         
      }
      
      TrailingStop(Ask, Bid);
 }



void CancelOrder()
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {

      ulong OrderTicket = OrderGetTicket(i);

      trade.OrderDelete(OrderTicket);

     }

  }
  


void TrailingStop(double Ask, double Bid)
 {

   double SL_Ask = NormalizeDouble(Ask-1*_Point, _Digits);
   
   double SL_Bid = NormalizeDouble(Bid+1*_Point, _Digits);
   
   for (int i=PositionsTotal()-1; i>=0; i--)
      {
   
         string symbol=PositionGetSymbol(i);
      
         if (_Symbol==symbol)
         
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
            {
      
               ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
               
               double PositionBuyPrice = PositionGetDouble(POSITION_PRICE_OPEN);
         
               double CurrentSL = PositionGetDouble(POSITION_SL);
         
         if(CurrentSL>SL_Ask)
            {
         
               trade.PositionModify(PositionTicket,(CurrentSL+3*_Point),0);
        
            }
            
         if (Ask==(PositionBuyPrice-2*_Point))
            {
               
               trade.PositionModify(PositionTicket,CurrentSL+1*_Point,0);
               
            }
         
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
            {
            
               ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
         
               double CurrentSL = PositionGetDouble(POSITION_SL);  
         
         if(CurrentSL<SL_Bid)
            {
         
               trade.PositionModify(PositionTicket,(CurrentSL-3*_Point),0);
         
            }
            
         if (Bid==(PositionBuyPrice-2*_Point))
            {
               
               trade.PositionModify(PositionTicket,CurrentSL+1*_Point,0);
               
            }
         
            }
      
            }
   
   
      }

 }

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