Обсуждение статьи "Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг"
Привет, Энрико. Твоя великолепная работа продолжается. Не уставайте, продолжайте свою работу.
Здравствуйте,
Оказывается, нельзя установить конкретный объем (процент) для трейлинг-стопа?
Как использовать 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), безубыток будет работать нормально.
Как мне использовать 2 или более TS?
Это мой код:
Безубыток в этом случае не работает. Если я удаляю трейлинг-стоп (объект trail), безубыток работает нормально.
Да, это невозможно. CTrail и CTrails предназначены только для модификации уровня стопа. Для объема вам нужно установить его на CStop. Это будет зависеть от активации и расстояния, которое вы установили для обоих (безубытка и трейла). Но, скорее всего, трейлинг сработал раньше безубытка. Безубыток больше не будет применяться, если уровень стопа уже выше установленной вами цены безубытка.
//--- трейлинг-стоп 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);
Не работает.
Тоже не работает.
Попробуйте снизить цель активации по безубытку/трейлингу. Если вы установили безубыток или трейлинг, это не значит, что рынок обязан его достичь.
Попробуйте снизить цель активации по безубытку/трейлингу. Если вы установили безубыток или трейлинг, это не значит, что рынок обязан его достичь.
Я проверяю на том же периоде рыночной истории в бэктесте. Если я включаю и TS (обычный трейлинг-стоп), и BE, то работает только TS, а BE не работает (я не вижу стоп-линию). Если я отключаю TS, BE работает нормально. Я тестирую в бэктесте и проверяю стоп-линии.
Я проверяю на том же периоде истории рынка в бэктесте. Если я включаю и TS (обычный трейлинг-стоп), и BE, то работает только TS, а BE не работает (я не вижу стоп-линию). Если я отключаю TS, BE работает нормально. Я тестирую в бэктесте и проверяю стоп-линии.
Тоже не работает.
Ваш первый код активирует безубыток, а не трейлингстоп. Если и будет дальнейшая модификация SL, то это будет takeprofit. Но если ваш TP равен 500 пунктам, то трейлинг вообще не активируется при 500 пунктах, так как в этот момент сделка уже покинула рынок.
Ваш второй код использует трейлингстоп, но не безубыток. Потому что еще до того, как будет применен безубыток, SL уже переместился выше цены безубытка.
Опубликована статья Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг:
В статье обсуждается установка пользовательских стоп-уровней в кроссплатформенном советнике. Также описан тесно связанный с ними метод, который помогает задать изменение стоп-уровней с течением времени.
На рисунке ниже показана блок-схема расчета точки безубытка способом, описанным выше. Вычисляются три значения — активация, дезактивация и новый стоп-уровень. Если уровень текущей цены выше или равен минимальной цене, требуемой для начального этапа (установки стоп-лосса к уровню безубытка), тогда стоп-уровень, рассчитанный ранее, будет использоваться как предварительный новый стоп-уровень. В противном случае результатом будет 0. Следующим шагом нужно проверить, находится ли новый стоп-уровень пределах текущего стоп-уровня брокера. Проверка всегда возвращает true при удовлетворении предыдущего условия. Таким образом, в качестве конечного итога будет возвращен рсссчитанный стоп-уровень.
Автор: Enrico Lambino