С Днём Победы!
Подскажите, пожалуйста.
В советнике приведён цикл поочередного перебора всех открытых позиций. В цикле используется функция PositionGetDouble(POSITION_SL). Из описания параметра POSITION_SL следует, что с его помощью может быть получен уровень Stop Loss для открытой позиции.
Вопрос 1: какое значение покажет функция PositionGetDouble(POSITION_SL), если открытая позиция сформировалась в итоге срабатывания нескольких отложенных ордеров с разными уровнями стоп-лоссов?
Вопрос 2: если открытая позиция сформировалась в итоге срабатывания нескольких отложенных ордеров с разными уровнями стоп-лоссов, то каким образом лучше получить данные об уровнях этих стоп-лоссов?
Если подобная тема уже рассматривалась ранее, прошу указать ссылку.
- www.mql5.com
С Днём Победы!
Вопрос 1: какое значение покажет функция PositionGetDouble(POSITION_SL), если открытая позиция сформировалась в итоге срабатывания нескольких отложенных ордеров с разными уровнями стоп-лоссов?а вы проверяли что возвращает функция?
Нет, не проверял. В силу незнания всех значимых первоначальных условий, которые необходимо соблюдать при проверке (тестировании) конкретной функции. А также в силу отрицательного отношения к возможности использования метода научного тыка при изучении нового для меня языка программирования.
Пояснение. Наличие крайне малого количества статей, посвящённых советникам, и отсутствие учебника по MQL5, вынуждает рядового пользователя при реализации собственной торговой стратегии ориентироваться на имеющиеся в сети материалы и, в том числе, на данную (и очень полезную) статью.
Как Вы сами прекрасно понимаете, мои вопросы касаются теоретически-прикладных аспектов, которые не отражены в текущей версии Справочника по MQL5, а также в имеющихся статьях по советникам на MQL5.
При таких условиях считаю гораздо более разумным задавать сведущим людям (разработчикам языка и авторам статей) вопросы по тем или иным теоретически-прикладным аспектам функций MQL5, а не заниматься каждый раз проведением экспериментов, "проверкой, что возвращает функция" при тех или иных условиях, и тому подобной самодеятельностью.
Согласитесь, что ответ сведущих людей о том, "что должно быть", выглядит более оптимальным, чем встречный вопрос типа "а Вы проверяли, что возвращает функция" (при отсутствии понимания с моей стороны особенностей её функционирования).
Ответ нашёл. В Руководстве пользователя клиентского терминала:
...Уровни Тейк Профит и Стоп Лосс устанавливаются для позиции по последнему ордеру (рыночному или сработавшему отложенному).
Иными словами, стоп уровни в каждом последующем ордере по одной позиции заменяют предыдущие.
...Срабатывание ордеров Тейк профит и Стоп Лосс приводит к полному закрытию позиции.
Странно. Так как для каждого финансового инструмента возможна только одна открытая позиция, то получается, что сценарии с частичным закрытием позиции по стоп-лоссу не могут быть реализованы в принципе?
P.S. После выяснения этой особенности, заложенной в МТ5, отпадает необходимость осуществлять проверку того, какое значение возвращает функция PositionGetDouble(POSITION_SL), если открытая позиция сформировалась в итоге срабатывания нескольких отложенных ордеров с разными уровнями стоп-лоссов.
Ответ нашёл. В Руководстве пользователя клиентского терминала:
Странно. Так как для каждого финансового инструмента возможна только одна открытая позиция, то получается, что сценарии с частичным закрытием позиции по стоп-лоссу не могут быть реализованы в принципе?
P.S. После выяснения этой особенности, заложенной в МТ5, отпадает необходимость осуществлять проверку того, какое значение возвращает функция PositionGetDouble(POSITION_SL), если открытая позиция сформировалась в итоге срабатывания нескольких отложенных ордеров с разными уровнями стоп-лоссов.
можно сделать в виде функции "изподвыподверт выпертый подвыперт" которая будет разбивать тейк профит согласно обьёмам сделок на данном инструменте на отложенные ордера по уровням
но лично я для себя считаю данную функцию излишней поскольку плотно знаком с оффициальными торговыми терминалами где нету локирований
можно сделать в виде функции "изподвыподверт выпертый подвыперт" ...
Да, я уже чесал репу на эту тему. Получается три варианта :)
- либо творчески перерабатывать имеющиеся сценарии под особенности МТ5;
- либо создавать класс подвыверт-функций "С-подвыверты";
- либо избегать использования стоп-лоссов и тейк-профитов в ордерах, изначально оперируя вместо них связками ордеров противоположной направленности.
Ничё, прорвёмся! :)
Вопрос по поводу размещения функций ArraySetAsSeries в советнике.
Функции ArraySetAsSeries размещены в функции OnTick() сразу после функций CopyTime, CopyHigh и CopyLow.
Имеются ли какие-нибудь препятствия для размещения функций ArraySetAsSeries в функции OnInit(), или же массивы всегда следует индексировать только после их копирования?
- www.mql5.com
Вопрос по поводу размещения функций ArraySetAsSeries в советнике.
Функции ArraySetAsSeries размещены в функции OnTick() сразу после функций CopyTime, CopyHigh и CopyLow.
Имеются ли какие-нибудь препятствия для размещения функций ArraySetAsSeries в функции OnInit(), или же массивы всегда следует индексировать только после их копирования?
Для индикаторных буферов говорится SetIndexBuffer:
Примечание
После связывания динамический массив buffer[] будет иметь индексацию как в обычных массивах, даже если для связываемого массива будет предварительно установлена индексация как в таймсериях. Если необходимо изменить порядок доступа к элементам индикаторного массива, необходимо применить функцию ArraySetAsSeries() после связывания массива функцией SetIndexBuffer().Для советников должно быть аналогично, проверьте
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Знакомство с MQL5: написание простого советника и индикатора:
В этой статье проведен краткий обзор языка MQL5, приведен пример написания советника и индикатора. Данная статья ориентирована как на читателей, знакомых с программированием на языке MQL4, так и на тех, кто только начинает знакомство с программированием торговых систем и индикаторов.
Автор: Denis