Самообучение языку MQL5 с полного нуля - страница 56

 
Valeriy Yastremskiy:

В общем то тут две мотивации с противоположным эффектом. Близкий СЛ уменьшает убыток и делает вероятность закрытия по СЛ выше. Если СЛ будет близко в отношении волатильности, то лучше конечно Ваш вариант, если на нормальном уровне и подтягивание СЛ не скажется на частоте срабатывания, то мой.

Вы уже забежали в область стратегии;) научите сначала выставить 1 бу а потом уже его двигать

 
VVT:

Вы уже забежали в область стратегии;) научите сначала выставить 1 бу а потом уже его двигать

Здравствуйте! С одной стороны Вы правы - можно просто остановиться на одном безубытке и написать код только для него. Но, на мой взгляд, если изначально нет понимания, как должен работать трейлинг стоп в целом, это тоже не лучший вариант. Кроме того, практически все советники пишутся по четко обозначенной стратегии. Как говорят в таких случаях - "нужно договариваться на берегу".

Чувствую, что опять во мне "проснулся" электронщик.

С уважением, Владимир.

 
Vasiliy Sokolov:

Я так и понял. У Вас две функции перестановки трейлинга. Первая переставляет трейлинг в безубыток, руководствуясь параметром "Уровень трейлинга", Вторая функции подтягивает стоп-лосс дальше за ценой, руководствуясь параметром "шаг трейлинга". Имхо, первый параметр я бы назвал "Уровень перестановки стоп-лосса в безубыток" - потому что это не трейлинг как таковой а именно перестановка ордера в безубыток.

Да, Василий, абсолютно верно! Вы правильно поняли и сформулировали моё представление о трейлинг стопе. Параметр изначально должен был так и называться: "Уровень перестановки стоп-лосса в безубыток". Терминология пока ещё хромает у меня. Спасибо, Вам!

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте! С одной стороны Вы правы - можно просто остановиться на одном безубытке и написать код только для него. Но, на мой взгляд, если изначально нет понимания, как должен работать трейлинг стоп в целом, это тоже не лучший вариант. Кроме того, практически все советники пишутся по четко обозначенной стратегии. Как говорят в таких случаях - "нужно договариваться на берегу".

Чувствую, что опять во мне "проснулся" электронщик.

С уважением, Владимир.

Здравствуйте! Если Вы научитесь пошагово подвинуть стоп лосс один раз, то после сможете двигать его 100 раз при необходимости, лишь бы было куда ;)

Советник подгоняется под стратегию а не наоборот

 
MrBrooklin:

Да, Василий, абсолютно верно! Вы правильно поняли и сформулировали моё представление о трейлинг стопе. Параметр изначально должен был так и называться: "Уровень перестановки стоп-лосса в безубыток". Терминология пока ещё хромает у меня. Спасибо, Вам!

С уважением, Владимир.


Добрый день, Владимир. Посмотрите этот мой пост. Там в тралах можно модифицировать с уровня профита и не париться с выделенным уровнем перевода в безубыток
https://www.mql5.com/ru/forum/352460/page55#comment_18711100
 
Aleksey Masterov:

Добрый день, Владимир. Посмотрите этот мой пост. Там в тралах можно модифицировать с уровня профита и не париться с выделенным уровнем перевода в безубыток
https://www.mql5.com/ru/forum/352460/page55#comment_18711100

Здравствуйте, Алексей! Извините, что сразу не отреагировал на Ваш пост. Ссылка очень интересная. Просмотрел коды всех 11-ти видов трейлингов и библиотеки функций. Всё очень позновательно, хотя и написано на языке MQL4. Честно говоря, даже и не предполагал, что существует столько видов трейлинга. Большое Вам спасибо за содействие!

С уважением, Владимир.

 

Всем доброго утра и хорошего настроения!

Продолжаю обучение языку программирования MQL5. С учетом поправок от Василия Соколова алгоритм советника по трейлингу Stop Loss у открытой позиции теперь выглядит таким образом:

  1. Создаем советник для автоматизации работы по трейлингу (сопровождению) уровня Stop Loss у открытой позиции.
  2. В советнике создаем блок входных параметров с двумя параметрами: "Уровень перестановки Stop Loss в безубыток" и "Шаг трейлинга".
  3. При поступлении новых котировок обрабатываем их функцией OnTick( ). Трейлинг работает только при поступлении нового тика по текущему символу.
  4. Запрашиваем данные в момент поступления события OnTick.
  5. Для каждой позиции Buy определяем, где находится текущая цена относительно цены открытой позиции.
  6. Если текущая цена выше цены открытия позиции, то проверяем на какой уровень она поднялась.
  7. Если текущая цена достигла "Уровня перестановки Stop Loss в безубыток" заданного во входных параметрах, то переносим Stop Loss на уровень без убытка равного цене открытия позиции Buy. В противном случае ничего не делаем.
  8. Если текущая цена превысила "Уровень перестановки Stop Loss в безубыток" на величину равную "Шаг трейлинга", то тогда Stop Loss перемещается с уровня цены открытия позиции Buy на величину равную "Шаг трейлинга" и так до тех пор, пока цена не достигнет заданного для данной позиции уровня Take Profit.
  9. Если цена развернется и достигнет уровня уже перемещенного в без убыток Stop Loss, то позиция закрывается.
  10. [Далее следует аналогичное описание для позиции Sell]

  Упрощенная версия описания трейлинга от Василия Соколова:
  1. Обработка трейлинга происходит при поступлении нового тика, в функции OnTick.
  2. Трелинг стоп состоит из двух последовательных частей:
  3. Часть 1. Для каждой открытой позиции рассчитывается цена, при достижении которой, ее стоп-лосс переносится в безубыток.
  4. Часть 2. После того, когда стоп перенесен в безубыток, для активной позиции активируется алгоритм подтягивания стопа в след за ценой.

Далее нужно следовать шаблону:

Часть 1. Перенос в безубыток:
  • Для покупки;
  • Для продажи;
Часть 2. Подтягивание стопа:
  • Для покупки;
  • Для продажи;

Этот вариант алгоритма советника по трейлингу Stop Loss у открытой позиции является окончательным и по нему продолжаю написание программного кода.

С уважением, Владимир.

 
VVT:

Здравствуйте! Если Вы научитесь пошагово подвинуть стоп лосс один раз, то после сможете двигать его 100 раз при необходимости, лишь бы было куда ;)

Советник подгоняется под стратегию а не наоборот

Здравствуйте! Ранее уже отмечал в своем посту, что Вы правы в своем суждении. Всё дело в том, что при помощи, оказанной Василием Соколовым, относительно быстро сформировался алгоритм советника по трейлингу Stop Loss у открытой позиции, поэтому буду придерживаться именно его.

С уважением, Владимир.

 
Хитрый у Вас подход - по написанию Эксперта. И маркет не понадобится. 
 

Продолжаю обучение языку программирования MQL5. Ранее был опубликован код цикла, запускающего перебор открытых позиций. Теперь, после того, как был запущен цикл, начинаем работу с символом на текущем графике:

     {
     /* Для работы с символом создадим переменную _Symbol, в которой будем хранить имя символа текущего графика.
        Делаем запрос на сервер. Сервер возвращает нам символ соответствующей открытой позиции и автоматически
        выбирает позицию для дальнейшей работы с ней при помощи функций PositionGetDouble, PositionGetInteger,
        PositionGetString. Если получим от сервера ответ о том, что для текущего символа была выбрана позиция для 
        дальнейшей работы с ней, то в торговом терминале выводим соответствующее сообщение во вкладке "Эксперт".*/
      if(_Symbol==PositionGetSymbol(i))
         Print("Выбираем позицию для дальнейшей работы с ней"); //
     }

Для того, чтобы была оперативная обратная связь буду периодически выкладывать написанные коды с собственными комментариями. Прошу участников данной темы поправлять меня, если в коде или комментариях будут неточности с моей стороны.

С уважением, Владимир.

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