Вопрос, почему VPS путает стоп лосс и трейлинг стоп? - страница 2

 
Eduard Menshikov:

Игор, все понятно, но трейлинг как задействуется, допустим стоит параметр 70, значит он появится в зоне б/у открытого ордера, когда цена пройдет на 70 пипсов в положительную сторону от него, если вы видели видео, там как раз все по другому, он сразу включается, как только включается VPS, VPS выключаем, удаляем ордера, включаем сову - все работает как надо. Такое ощущение, что где то есть косяки с миграцией на сервер VPS. Потому что проблема появляется именно в момент включения VPS. Второй момент - проблемы нет, если включить VPS когда ордеров нет, тогда сова работает как надо. Но это не удобно, потому как сова пока еще полуавтоматическая, требуется наблюдать, смотреть, включать, выключать. Третий момент, у нас есть сервис от MQL, в данном случае это VPS - мы за него платим деньги, я думаю мы в праве требовать чтобы сервис работал нормально, как вы думаете, или "коленочки" наше все? Сервис удобный, несомненно, но как у меня помню были проблемы с копированием сделок подписчикам, которые так и не удалось решить ни с помощью тех поддержки MQL ни с помощью тех поддержки брокера (там короче никто как оказалось не виноват, все так как оно есть (то есть криво-я про сервера поставляющие котировки) и никто ничего делать не будет), так и здесь с VPS MQL думаю есть какие то шероховатости. 

Дело в коде, а не в VPS. Функция SimpleTrailing четко указывает на то, как будет работать трейлинг:

void SimpleTrailing(int type) {
   for (int i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==_Symbol && OrderMagicNumber()==magic && OrderType()==type){
            if (OrderType()==OP_BUY){
               if (Bid>=priceFirst+trail*_Point){
                  if (OrderStopLoss()<Bid-trail*_Point){
                     double tp=OrderTakeProfit();
                     if (notTpTrail) tp=0;
                     ModifyOrder(-1, Bid-trail*_Point, tp);
                  }
               }
            }
            if (OrderType()==OP_SELL){
               if (Ask<=priceFirst-trail*_Point){
                  if (OrderStopLoss()>Ask+trail*_Point || OrderStopLoss()==0){
                     double tp=OrderTakeProfit();
                     if (notTpTrail) tp=0;
                     ModifyOrder(-1, Ask+trail*_Point, tp);
                  }
               }
            }
         }
      }
   }
}

Именно так и работает. Если нужно срабатывание трейлинга только в прибыльной зоне, то нужно модифицировать эту функцию.

 
Ihor Herasko:

Можно описание того, чем отличаются трелинг-стоп и Stop Loss, по Вашему разумению? Я, к примеру, разницы не вижу. Stop Loss - он и в Африке Stop Loss. Если его обозвать Trailing Stop, то сути это никак не меняет. В  приведенном коде тоже такого отличия нет. Если задан трейлинг-стоп, то Stop Loss будет двигаться за ценой на указанном расстоянии.

Разница очевидна. СЛ - это ограничение убытка, а ТС это фиксация прибыли. Скорее ТС можно прировнять к ТП, но не к СЛ...

 
Сергей Таболин:

Разница очевидна. СЛ - это ограничение убытка, а ТС это фиксация прибыли. Скорее ТС можно прировнять к ТП, но не к СЛ...

Trailing Stop - скользящий Stop Loss. Ничего тут про прибыль нет. То, что он должен быть в зоне прибыли - это дополнительное условие. Без этого условия Trailing Stop не теряет своей сути - перемещение Stop Loss за ценой, безотносительно к прибыли или убытку позиции. 

 
Ihor Herasko:

Trailing Stop - скользящий Stop Loss. Ничего тут про прибыль нет. То, что он должен быть в зоне прибыли - это дополнительное условие. Без этого условия Trailing Stop не теряет своей сути - перемещение Stop Loss за ценой, безотносительно к прибыли или убытку позиции. 

Вы ошибаетесь. Это основное условие! Мы достигли ожидаемого ТП, но при этом не закрываем позицию, а повышаем ТП. С тем условием, что прибыль будет уже не менее достигнутого ТП. Формально, это, конечно, можно назвать СЛ в зоне прибыли, но, по сути - это именно ТП.

 
Сергей Таболин:

Вы ошибаетесь. Это основное условие! Мы достигли ожидаемого ТП, но при этом не закрываем позицию, а повышаем ТП. С тем условием, что прибыль будет уже не менее достигнутого ТП. Формально, это, конечно, можно назвать СЛ в зоне прибыли, но, по сути - это именно ТП.

Нет, читайте определение уровней Take Profit и Stop Loss. Первый располагается в направлении получения прибыли (но не обязан давать прибыль), а второй - в направлении получения убытка (но не обязан давать убыток). 

 
Спасибо огромное за помощь всем, вроде разобрались, дело действительно не VPS, мои извинения MQL, спасибо Ihor Herasko, не поленился нашел в коде косяк
 
Eduard Menshikov:
Спасибо огромное за помощь всем, вроде разобрались, дело действительно не VPS, мои извинения MQL, спасибо  Ihor Herasko, не поленился нашел в коде косяк

В алгоритме TrailingStop нет косяков, косяки есть в реализации алгоритма. По крайней мере, нужно нормализовать рассчитываемую цену, передаваемую в функцию модификации.

Но повторюсь - Игорь никакого косяка не показывал вам в коде. Он вам просто показал, что TrailingStop сделан иначе, чем вы себе представили и ждали от него.