Как переместить StopLoss ?

 

Как переместить StopLoss ?

if(LastSL < NewSL) OrderModify(-,-,NewSL,-);


 

 
Natashe4ka:

Как переместить StopLoss ?

if(LastSL < NewSL) OrderModify(-,-,NewSL,-);


 

Взять и открыть поиск, искать трал.
 
Vitalie Postolache:
Взять и открыть поиск, искать трал.

Неее, трал не нужен.
Работает NoLoss, стоп не движется за ценой а стоит на месте. 
Старый NoLoss надо переместить на более свежий. 

 
Natashe4ka:

Неее, трал не нужен.
Работает NoLoss, стоп не движется за ценой а стоит на месте. 
Старый NoLoss надо переместить на более свежий. 

Наталья попробуйте так 
void OnTick()
  {
   if(LastSL<NewSL) ModifySL(_Symbol,NewSL);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void ModifySL(string symbol,double sl)
  {
   if(sl<=0)return;
   bool res;
   double price=0.0;
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
   double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);

   if(bid<=0.0)return;
   if(ask<=0.0)return;

   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderSymbol()!=symbol)continue;
      if(OrderType()>1)continue;
      if(OrderStopLoss()!=0)
        {
         if(sl==OrderStopLoss())continue;
         res=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0);
         if(!res)
           {
            int error=GetLastError();
            rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," №- ",error);
            Print(rezult);
           }
        }
     }
  }
//+------------------------------------------------------------------+
....
 
Sergey Gritsay:
Наталья попробуйте так 
....

Спасибо.
Стоп перемещает, но мешает моим стопам  устанавливаться, пропускает потом ставит и потом перемещает (как то ругаются они в общем).

NewSL правильно у меня определён ?

   for(i=OrdersTotal()-1;i>=0;i--)
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
      NewSL=NormalizeDouble(OrderStopLoss(),Digits);
   }


 

 
Natashe4ka:

Спасибо.
Стоп перемещает, но мешает моим стопам  устанавливаться, пропускает потом ставит и потом перемещает (как то ругаются они в общем).

NewSL правильно у меня определён ?

   for(i=OrdersTotal()-1;i>=0;i--)
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
      NewSL=NormalizeDouble(OrderStopLoss(),Digits);
   }


 

Так как вы не выкладываете свой код полностью, трудно что-то писать не зная что у вас там твориться. Лучше записывать NewSL для ордера при открытии ордера, надеюсь Стоп лосс у вас как-то рассчитывается перед открытием. То действия примерно такие. 
tiket=OrderSend();
   if(tiket>0)NewSL=NormalizeDouble(Значение расчетного стоплосса,Digits);
   тут первый код модификации стопов, если они у вас устанавливаються не в OrderSend()
   далее функция которую я вам привел для примера.
...