Обнуление параметра мешает реализовать трейлинг

 

Всем доброго дня!

Пытаюсь сделать трейлинг: например, при смещении цены на 10 пунктов в сторону профита, стоп уменьшается на 20 или на 30 пунктов. Но столкнулся с проблемой - NewOpen обнуляется. Как сделать чтобы он был равен условию Price+Step*Point??? Если такое уже обсуждалось, пожалуйста, подскажите тему.

extern int    Kboost1=4;
extern int    Step=100;
...
int start()
  {
   int    Total, Tip=-1, LotsDigit, Ticket, Magic=18052010, Slippage=100, tick, 
          DayOpenOrder, Stop, CH, KS, KP, OstLoss, K1, K2, flag=0;
   static double ema0, ema1; 
   double Lot, WorkLot, SpyLot, Price, SL, TP, NSL, NSLprov, StepSize, NewOpen, NewLevel, NO, NL;
...
         Ticket=OrderTicket();
         Tip   =OrderType();
         Price =OrderOpenPrice();
         SL    =OrderStopLoss();
         TP    =OrderTakeProfit();
         Lot   =OrderLots();
         TimeO =OrderOpenTime();
...
   if (Tip==0 && ModifyOrder==9)//тип buy трал стопа
      {
       if (SL<Price)
         {
          if (SL<(Price-(StopLoss-Step)*Point)) 
             {
              flag=1;
              NewOpen=TP;
             }
          if (flag==1 && Bid>=Price+Step*Point)
             {
              NewOpen=Price+Step*Point;
              NSL=SL+(Kboost1*Step)*Point;
              OrderModify(Ticket,Price,NSL,TP,0);
             }
          if (Bid>=NewOpen+Step*Point)//*** обнуление происходит здесь, а я хочу чтобы NewOpen равнялся зеленому выражению
             {
              NSL=SL+(Kboost1*Step*Point);
              if (NSL<Bid-Step*Point)
               {                
                NO=NewOpen+Step*Point;
                NewOpen=NO;
                OrderModify(Ticket,Price,NSL,TP,0);
               }
             }
         }
 
//-------------------------------------------------------------------+
extern int    Magic          = 0;
//-------------------------------------------------------------------+
extern bool   Trailing       = true;
extern int    MinProfit      = 34;
extern int    TrailingStop   = 13;
extern int    TrailingStep   = 3;
//+------------------------------------------------------------------+
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;
    {    
      if (OrderType() == OP_BUY && (OrderMagicNumber()==Magic || Magic == 0)) 
      {
        if (NormalizeDouble(Bid,Digits)-OrderOpenPrice() > MinProfit*Point) 
        {
          if (OrderStopLoss() < NormalizeDouble(Bid,Digits)-(TrailingStop+TrailingStep-1)*Point) 
          {
            OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid,Digits)-TrailingStop*Point,OrderTakeProfit(),0,CLR_NONE);          
          }
        }
      }   
      if (OrderType() == OP_SELL && (OrderMagicNumber()==Magic || Magic == 0))
      {
        if (OrderOpenPrice()-NormalizeDouble(Ask,Digits) > MinProfit*Point) 
        {
          if (OrderStopLoss() > NormalizeDouble(Ask,Digits)+(TrailingStop+TrailingStep-1)*Point) 
          {
            OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask,Digits)+TrailingStop*Point,OrderTakeProfit(),0,CLR_NONE);          
          }
        }
      }   
    }   
  }  
 
WindSW:

Всем доброго дня!

Пытаюсь сделать трейлинг: например, при смещении цены на 10 пунктов в сторону профита, стоп уменьшается на 20 или на 30 пунктов. Но столкнулся с проблемой - NewOpen обнуляется. Как сделать чтобы он был равен условию Price+Step*Point??? Если такое уже обсуждалось, пожалуйста, подскажите тему.

вынести объявление NewOpen из функции start()
 
WindSW:

Всем доброго дня!

Пытаюсь сделать трейлинг: например, при смещении цены на 10 пунктов в сторону профита, стоп уменьшается на 20 или на 30 пунктов. Но столкнулся с проблемой - NewOpen обнуляется. Как сделать чтобы он был равен условию Price+Step*Point??? Если такое уже обсуждалось, пожалуйста, подскажите тему.


В прицепе - целая библиотека трейлинг-стопов от Юрия Дзюбан с описанием функций, выбираете любую, правите, по необходимости, под какие-либо Ваши дополнительные условия, подобный вид трала, как у Вас - там есть.

Сам ей пользуюсь - вопросов не возникало вообще никаких.

Файлы:
 

Всем спасибо!!!

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