Обсуждение статьи "Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг"

 

Опубликована статья Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг:

В статье обсуждается установка пользовательских стоп-уровней в кроссплатформенном советнике. Также описан тесно связанный с ними метод, который помогает задать изменение стоп-уровней с течением времени.

На рисунке ниже показана блок-схема расчета точки безубытка способом, описанным выше. Вычисляются три значения — активация, дезактивация и новый стоп-уровень. Если уровень текущей цены выше или равен минимальной цене, требуемой для начального этапа (установки стоп-лосса к уровню безубытка), тогда стоп-уровень, рассчитанный ранее, будет использоваться как предварительный новый стоп-уровень. В противном случае результатом будет 0. Следующим шагом нужно проверить, находится ли новый стоп-уровень пределах текущего стоп-уровня брокера. Проверка всегда возвращает true при удовлетворении предыдущего условия. Таким образом, в качестве конечного итога будет возвращен рсссчитанный стоп-уровень.


Безубыток

Автор: Enrico Lambino

 

Привет, Энрико. Твоя великолепная работа продолжается. Не уставайте, продолжайте свою работу.

 

Здравствуйте,

Оказывается, нельзя установить конкретный объем (процент) для трейлинг-стопа?

 

Как использовать 2 или более TS?

Это мой код:

//--- трейлинг-стоп
   CTrails *trails=new CTrails();
   //--- установление безубыточности
   CTrail *trail_be=new CTrail();
   trail_be.Set(BELevel,BEOpenPriceDist,0);   
   trails.Add(trail_be);
   //--- установка трейлинг-стопа
   CTrail *trail=new CTrail();
   trail.Set(trail_value,trail_start,trail_step);
   trails.Add(trail);
   //--- 
   main.Add(trails);

Безубыток не работает в этом случае. Если я удалю трейлинг-стоп (объект trail), безубыток будет работать нормально.

 
mbjen:

Здравствуйте,

Оказывается, нельзя задать конкретный объем (процент) для трейлинг-стопа?

Да, это невозможно. CTrail и CTrails предназначены только для модификации уровня стопа. Для объема необходимо задать его в CStop.
mbjen:

Как мне использовать 2 или более TS?

Это мой код:

Безубыток в этом случае не работает. Если я удаляю трейлинг-стоп (объект trail), безубыток работает нормально.

Это зависит от активации и расстояния, которое вы установили для двух ТС (безубытка и трейла). Но, скорее всего, трейлинг сработал раньше, чем безубыток. Безубыток больше не будет применяться, если уровень стопа уже находится выше установленной вами цены безубытка.
 
Enrico Lambino:
Да, это невозможно. CTrail и CTrails предназначены только для модификации уровня стопа. Для объема вам нужно установить его на CStop. Это будет зависеть от активации и расстояния, которое вы установили для обоих (безубытка и трейла). Но, скорее всего, трейлинг сработал раньше безубытка. Безубыток больше не будет применяться, если уровень стопа уже выше установленной вами цены безубытка.
Ниже приведены настройки, которые я использую. Безубыток не работает. Как я понимаю, второй трейс должен быть активирован на расстоянии 500, верно? Значит, безубыток должен быть активирован раньше. Почему тогда он не работает?
   //--- трейлинг-стоп
   CTrails *trails=new CTrails();
   //--- установление безубыточности
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- установка трейлинг-стопа
   CTrail *trail=new CTrail();
   //trail.Set(trail_value,trail_start,trail_step);
   trail.Set(200,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);
 
//--- трейлинг-стоп
   CTrails *trails=new CTrails();
   //--- установление безубыточности
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- установка трейлинг-стопа
   CTrail *trail=new CTrail();
   //trail.Set(trail_value,trail_start,trail_step);
   trail.Set(400,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);

Не работает.

 
mbjen:

Тоже не работает.

Попробуйте снизить цель активации по безубытку/трейлингу. Если вы установили безубыток или трейлинг, это не значит, что рынок обязан его достичь.

 
Enrico Lambino:

Попробуйте снизить цель активации по безубытку/трейлингу. Если вы установили безубыток или трейлинг, это не значит, что рынок обязан его достичь.


Я проверяю на том же периоде рыночной истории в бэктесте. Если я включаю и TS (обычный трейлинг-стоп), и BE, то работает только TS, а BE не работает (я не вижу стоп-линию). Если я отключаю TS, BE работает нормально. Я тестирую в бэктесте и проверяю стоп-линии.

 
mbjen:

Я проверяю на том же периоде истории рынка в бэктесте. Если я включаю и TS (обычный трейлинг-стоп), и BE, то работает только TS, а BE не работает (я не вижу стоп-линию). Если я отключаю TS, BE работает нормально. Я тестирую в бэктесте и проверяю стоп-линии.

Каково значение вашего тейкпрофита? Оно такое же или больше, чем цена активации (в пунктах) для BE?
 
mbjen:

Тоже не работает.

Ваш первый код активирует безубыток, а не трейлингстоп. Если и будет дальнейшая модификация SL, то это будет takeprofit. Но если ваш TP равен 500 пунктам, то трейлинг вообще не активируется при 500 пунктах, так как в этот момент сделка уже покинула рынок.

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