Трайлингстоп не работает

 

Доброго времени,

все мои сделки открываются сразу с тейкпрофитом и стоплосом.

Цель кода: после прохождения определенного количества пути от цены открытия до тейкпрофита (в процентах proz), подвинуть стоплос в безубыток(или даже на pipo пипсов в плюс)

Проблема в том, что стоплос передвигается сразу к ценe открытия, когда цена ещё не прошла заданный путь в сторону тейкпрофита.

по логике и расчетам вроде все правилно, но все равно не работает, почему ???

input int proz=10;
input int pipo=0;

//.....
void OnTick()
  {

for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {            
            if(proz>0)
              {
               if(OrderStopLoss()<OrderOpenPrice())
                 {  
                  if((OrderOpenPrice()+((OrderTakeProfit()-OrderOpenPrice())*(proz/100)))<Bid)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point*pipo,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            if(proz>0)
              {
               if(OrderStopLoss()>OrderOpenPrice())
                 {
                  if((OrderOpenPrice()-((OrderOpenPrice()-OrderTakeProfit())*(proz/100)))>Ask)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point*pipo,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }
  }


спасибо

 

люди ! помогите ! есть тут кто нибудь вобще ? )

вобщем я думаю проблема либо тут:

if((OrderOpenPrice()+((OrderTakeProfit()-OrderOpenPrice())*(proz/100)))<Bid)

либо тут:

if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point*pipo,OrderTakeProfit(),0,Green))
 
Обращайтесь во фриланс и там помогут.
Причина обращения: