Трейл стоп

 

Подскажите пожалуйста!!

Если открыта позиция на Buy , то трейлинг работает

Если открыта позиция на Sell , то трейлинг работает

Если открыты позиции на Buy и Sell , то трейлинг не хочет работать

for(cnt=0;cnt<buyCurrentSymbolOrders||cnt<sellCurrentSymbolOrders;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         //------------Если открыта позиция buy
         if(OrderType()==OP_BUY)      
            (трейлинг стоп)
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- условия модификации закрытия
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                 
         else
           {
           if(OrderType()==OP_SELL)
          (трейлинг стоп)
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
 
Пример и не должен работать - не хватает фигурных скобок.
 
Anton Zverev:

У вас идет проверка:

Тут явно стоп равен нулю, а он ни как не может быть больше цены.

А по отдельности же работает

Или я не понял что то


Трейл работает только на первую открытую позицию

Т.е. если открыта на buy а потом на sell, то пока первая не закроетца, трейл на sell не действует, а потом на оборот

 
Вам же подсказали, что не хватает фигурных скобок! Если не понимаете переписывая, посмотрите источник и увидете, что там есть ещё и закрывающие скобки!
 
Boris:
Вам же подсказали, что не хватает фигурных скобок! Если не понимаете переписывая, посмотрите источник и увидете, что там есть ещё и закрывающие скобки!

Может у кого есть примерный код??

 
qwestxs:

Может у кого есть примерный код??

Вот, всё работает не первый год: https://www.mql5.com/ru/code/7778
e -Trailing
e -Trailing
  • голосов: 10
  • 2008.02.01
  • John Smith
  • www.mql5.com
Автоматический Trailing Stop всех открытых позиций. Вешать только на один график.
 

Когда фигурных скобок "не хватает" -- то код даже не проходит компиляцию -- это известно каждому, кто хоть раз компилировал с недостатком фигурных скобок.

Топикстартер говорит, что советник "работает", только не правильно -- значит фигурных скобок "хватает".

Они просто неправильно расставлены -- это видно по той части кода, которая предоставлена. 

 
Andrey F. Zelinsky:

Когда фигурных скобок "не хватает" -- то код даже не проходит компиляцию -- это известно каждому, кто хоть раз компилировал с недостатком фигурных скобок.

Топикстартер говорит, что советник "работает", только не правильно -- значит фигурных скобок "хватает".

Они просто неправильно расставлены -- это видно по той части кода, которая предоставлена. 

Код не проходит компиляцию если скобки непарные, а если просто не хватает одной или несколько пар скобок, то код будет работать, но не так как задумано.
 
Vitaly Muzichenko:
Вот, всё работает не первый год: https://www.mql5.com/ru/code/7778

Спасибо!!!

Не знаю почему, но работает!!!!

Может из за того что как функцию вставил.

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