$ £ ¥
¥ £ $

Помощник по графическим паттернам


Введение

Помощник по графическим паттернам (Chart Pattern Helper) — не автоматический торговый советник. В нем не реализована никакая торговая стратегия. Его единственное предназначение — исполнять сделки с помощью отложенных ордеров, основанных на некоторых объектах графика: трендовые линии, горизонтальные линии и равноудаленные каналы. В дополнение обычному исполнению сделок на прорывах, данный экспертный советник может совершать сделки на откатах, если вы по какой-то причине пропустили точку прорыва.

Основное достоинство Помощника по графическим паттернам — его способность устанавливать и настраивать отложенные ордера в соответствии с рядом объектов, помещенных на Форекс-график, включая объекты с наклоном. Это позволяет упростить торговлю на таких популярных фигурах как треугольники (восходящие, нисходящие и симметричные), каналы, флаги, вымпелы, прямоугольники, "Голова-плечи", "Двойное дно/вершина" и т.д.

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

У этого экспертного советника есть ряд входных параметров для регулировки его работы, но он может начать функционировать сразу, как только вы добавите его на график и разместите правильно названные графические объекты. Эти объекты можно будет затем свободно перемещать. ЭС продолжит определять их местоположение и поправлять параметры ордеров соответственно. По умолчанию, данный советник сообщает о своем текущем статусе с помощью комментария на графике.

Так как все объекты рисуются на цене спроса (Bid), то, когда нужно использовать цену предложения (Ask), советник прибавляет текущее значение спреда к уровням входа, стоп-лосса и тейк-профита. Такое поведение можно отключить с помощью входных параметров, уменьшив тем самым поток ордеров на изменение, отправляемых на торговый сервер.

Помощник по графическим паттернам способен рассчитывать размер позиции, основываясь на заданных параметрах, уровне стоп-лосса и балансе/средствах счета — точно так же как Position Sizer для МетаТрейдера. Вы можете отключить этот модуль и задать фиксированный объем сделки.


Операционный процесс

Этот экспертный советник проходит следующие шаги после инициализации:

  1. Обнаружить объекты в соответствии с названиями, заданными во входных параметрах.
  2. Уровень входа для ордера на покупку устанавливается на объект входа + спред (чтобы получилась цена предложения).
  3. Уровень входа для ордера на продажу устанавливается на объект входа (цена спроса).
  4. Уровень стоп-лосса для ордера на покупку устанавливается на минимум последнего бара, большая часть которого находится ниже объекта границы.
  5. Уровень стоп-лосса для ордера на продажу устанавливается на максимум последнего бара, большая часть которого находится выше объекта границы; затем к нему прибавляется спред.
  6. Если параметр UseDistantSL равен true, два предыдущих шага игнорируются и для стоп-лосса используется самая дальняя точка противоположной линии. Это работает только с горизонтальными и трендовыми линиями.
  7. Уровень тейк-профита для ордера на покупку устанавливается на объект ТП (цена спроса).
  8. Уровень тейк-профита для ордера на продажу устанавливается на объект ТП + спред (чтобы получилась цена предложения).
  9. Рассчитанные значения постоянно отображаются в комментарии к графику, если входной параметр Silent не установлен в true.
  10. Отложенные ордера размещаются в соответствии с этими рассчитанными значениями. Если отсутствует объект входа для покупки или продажи, размещается только один ордер. Ордера удаляются автоматически по истечению срока действия, когда закрывается текущий бар. В МТ4 минимальный срок годности — 11 минут; в МТ5 — 2 минуты.
  11. Если текущая цена ниже уровня входа для покупки и выше уровня входа для продажи, используются отложенные стоп-ордера. Если текущая цена ниже уровня входа для покупки или выше уровня входа для продажи, используется только один отложенный лимит-ордер.
  12. Отслеживать текущие значения объектов и подстраивать уровни входа, стоп-лосса и тейк-профита ордеров соответственно.
  13. Если используется расчет размера позиции, когда нужно, обновляется объем ордера. В этом случае ордер со старым объемом удаляется и создается новый ордер с новым объемом. Внимание: это может вызвать значительный поток отложенных ордеров, что может быть против правил вашего брокера. Чтобы предотвратить такое поведение, вы можете задать входной параметр UpdatePendingVolume равным false.
  14. Ордера с истекшим сроком действия воссоздаются с новым объемом (если необходимо) и обновленными уровнями входа/СЛ/ТП.
  15. Если один из ордеров срабатывает, другой (противоположный) удаляется (если только входной параметр OneCancelsOther не равен false). Все объекты переименовываются с помощью добавления к исходному названию «волшебного» номера экспертного советника. Таким образом, предотвращается открытие новых отложенных ордеров.
  16. Если PostEntrySLAdjustment установлен равным true, попытаться обновить стоп-лосс, когда откроется следующая свеча после прорыва.
  17. Продолжать обновлять уровень тейк-профита позиции в соответствии с объектом ТП.
  18. Прекратить активность по закрытии позиции.
  19. Перейти к первому шагу, как только контрольные объекты будут переименованы обратно в исходные названия.

Также, экспертный советник может работать в режиме торговли с трендлайном:

  1. Обнаружить графический объект верхней или нижней границы.
  2. Подождать, пока свеча не закроется выше/ниже трендлайна с минимальным расстоянием, определенным через входной параметр ThresholdSpreads. Открыть сделку, если такое закрытие произойдет.
  3. Использовать заданный объект стоп-лосса в качестве стоп-лосса.
  4. Использовать соответствующую линию верхнего/нижнего тейк-профита в качестве тейк-профита.

Входные параметры

Объекты

  • UpperBorderLine (по умолчанию = "UpperBorder") — название объекта (горизонтальной или трендовой линии), используемой для определения верхней границы паттерна. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • UpperEntryLine (по умолчанию = "UpperEntry") — название объекта (горизонтальной или трендовой линии), используемой для определения уровня входа для ордера на покупку. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • UpperTPLine (по умолчанию = "UpperTP") — название объекта (горизонтальной или трендовой линии), используемой для определения уровня тейк-профита ордера на покупку. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • LowerBorderLine (по умолчанию = "LowerBorder") — название объекта (горизонтальной или трендовой линии), используемой для определения нижней границы паттерна. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • LowerEntryLine (по умолчанию = "LowerEntry") — название объекта (горизонтальной или трендовой линии), используемой для определения уровня входа для ордера на продажу. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • LowerTPLine (по умолчанию = "LowerTP") — название объекта (горизонтальной или трендовой линии), используемой для определения уровня тейк-профита ордера на продажу. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • BorderChannel (по умолчанию = "Border") — название объекта «Равноудаленный канал», используемого для определения верхней и нижней границы паттерна. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • EntryChannel (по умолчанию = "Entry") — название объекта «Равноудаленный канал», используемого для определения уровней входа для ордеров покупки и продажи. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.
  • TPChannel (по умолчанию = "TP") — название объекта «Равноудаленный канал», используемого для определения уровней тейк-профита для ордеров покупки и продажи. Вы можете или назвать объект в соответствии со значением этого параметра, или изменить значение параметра так, чтобы оно подходило под название объекта, который вы использовали на графике.

Управление ордерами

  • OneCancelsOther (по умолчанию = true) — если true, то срабатывание одного отложенного ордера будет означать закрытие противоположного ордера. Если false, то противоположный ордер останется нетронутым и может сработать после того, как первая позиция закроется.
  • UseSpreadAdjustment (по умолчанию = true) — если true, то спред будет добавлен к уровню входа покупки и к уровням стоп-лосса/тейк-профита продажи. Это позволит компенсировать разницу, когда используется цена предложения (Ask), в то время как все графические объекты отрисованы на уровне спроса (Bid). Установив false, вы, тем самым, уменьшите количество запросов на изменение ордера, отправляемых на торговый сервер брокера.
  • UseExpiration (по умолчанию = true) — если true, то отложенные ордера будут закрываться по истечению срока действия по закрытии текущего бара или через 11 минут (МТ4), или 2 минуты (МТ5) после создания — что дальше. Если ваш брокер не поддерживает срок действия у ордеров, то надо будет установить этот параметр равным false.
  • DisableBuyOrders (по умолчанию = false) — если true, то новые ордера на покупку не будут создаваться, а существующие бычьи ордера и позиции будут игнорироваться.
  • DisableSellOrders (по умолчанию = false) — если true, то новые ордера на продажу не будут создаваться, а существующие медвежьи ордера и позиции будут игнорироваться.
  • PostEntrySLAdjustment (по умолчанию = false) — если true, то советник попробует исправить стоп-лосс при появлении новой свечи после прорывной. Он проверит, подходит ли до сих пор максимальный/минимальный уровень прорывной свечи для стоп-лосса. Это может привести к нарушению заданных правил расчета размера позиции, но зато поможет точнее определить уровень стоп-лосса для более точного следования правилам выхода из торговых позиций.
  • UseDistantSL (по умолчанию = false) — если true, советник установит стоп-лосс на самую дальнюю точку противоположной линии. Эта функция предназначена только для работы с «треугольниками» и «клиньями».

Торговля на трендлайне

  • OpenOnCloseAboveBelowTrendline (по умолчанию = false) — если true, сделка будет открыта после закрытия свечи выше/ниже граничного трендлайна.
  • SLLine (по умолчанию = "SL") — название для объекта линии стоп-лосса при торговле на трендлайне.
  • ThresholdSpreads (по умолчанию = 10) — число спредов в качестве минимального расстояния закрытия над/под граничным трендлайном для открытия сделки.

Размер позиции

  • CalculatePositionSize (по умолчанию = true) — если true, то размер позиции рассчитывается по заданному допустимому риску, размеру счета (балансу или средствам), валюте счета и валютной паре. Процесс расчета — точно такой же как и в Position Sizer. Если false, то используется фиксированный размер позиции.
  • UpdatePendingVolume (по умолчанию = true) — если true, то объем отложенного ордера обновляется, как только рассчитывается новый размер позиции. Это может вызвать избыточно большое количество ордеров, отправляемых на торговый сервер потому, что невозможно изменить объем существующего ордера; вместо этого, надо удалить ордер и создать новый с новым объемом. Если false, то объем ордера остается постоянным до истечения его срока действия и последующего воссоздания. Этот параметр игнорируется, если CalculatePositionSize = false.
  • FixedPositionSize (по умолчанию = 0.01) — если CalculatePositionSize = false, экспертный советник будет использовать значение этого параметра в качестве объема создаваемых отложенных ордеров.
  • Risk (по умолчанию = 1) — допустимый риск в процентных пунктах от баланса/средств счета. Работает только если CalculatePositionSize = true. Этот параметр игнорируется, если UseMoneyInsteadOfPercentage = true.
  • MoneyRisk (по умолчанию = 0) — допустимый риск в валюте счета. Работает только если CalculatePositionSize = true и UseMoneyInsteadOfPercentage = true.
  • UseMoneyInsteadOfPercentage (по умолчанию = false) — если true, то размер позиции рассчитывается на основании допустимого риска в валюте счета (MoneyRisk) вместо процентных пунктов от баланса/средств счета (Risk). Работает только если CalculatePositionSize = true.
  • UseEquityInsteadOfBalance (по умолчанию = false) — если true, то размер позиции рассчитывается на основании средств (equity) доступных на счете вместо баланса счета. Работает только если CalculatePositionSize = true. Игнорируется, если UseMoneyInsteadOfPercentage = true.
  • FixedBalance (по умолчанию = 0) — если равен ненулевому значению, то будет использоваться вместо текущего баланса/средств счета при расчете размера позиции. Работает только если CalculatePositionSize = true.

Разное

  • Magic (по умолчанию = 20130116) — «волшебный» номер, используемый экспертом для того, чтобы отличать свои ордера (МТ4 и МТ5) и позиции (только МТ4). Вам может понадобиться изменить его, если вы пользуетесь другим советником с таким же номером или, если вы хотите использовать больше одного Помощника по графическим паттернам с одной и той же валютной парой.
  • Slippage (по умолчанию = 30) — максимально допустимое значение проскальзывания; в пунктах брокера.
  • Silent (по умолчанию = false) — если true, то информация о текущем состоянии не будет отображаться в комментарии графика. Это может быть полезно, если вы пользуетесь каким-нибудь индикатором или ЭС, которые изменяют комментарий к графику, и вы хотите отдать приоритет в этом вопросе им.
  • ErrorLogging (по умолчанию = true — если true, ЭС будет сохранять сообщения об ошибках и прочих нестандартных ситуациях в файл-журнал. Он будет называться «CPH-Errors-<дата-время>» и может быть найден в подпапке /experts/files/ установочной папки вашего МетаТрейдера 4 или подпапке /MQL5/Files/ установочной папки вашего МетаТрейдера 5 (или же в папке с данными приложений пользователя, отведенной для МетаТрейдера 5, если вы работаете в Windows Vista или более поздней версии).

МиниFAQ

Безопасно ли отключать советник, как только были размещены ордера?

Да, но у ордеров истечет срок действия, если они не сработают раньше. Запущенный советник нужен, чтобы воссоздавать и обновлять их.

Он использует трейлинг-стоп?

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

Могу ли я модифицировать уровни стоп-лосса и тейк-профита позиции после срабатывания отложенного ордера?

Конечно! Вы можете начинать изменять стоп-лосс сразу же, а тейк-профит — как только переименуете/удалите соответствующий объект ТП или отключите экспертный советник.

Я рисую паттерны с помощью каналов, но хочу, чтобы советник торговал только на покупку или только на продажу. Как этого добиться?

Вы можете запретить экспертному советнику использовать ордера на покупку или ордера на продажу, установив входные параметры DisableBuyOrders или DisableSellOrders равными true.

Можете поменять кое-что для меня, пожалуйста?

Нет. Есть тысячи способов изменить данный советник, чтобы он соответствовал чьим-нибудь предпочтениям. Я не собираюсь реализовывать никакую модификацию потому, что всем все равно не угодишь. Однако, исходный код — открыт и хорошо закомментирован, так что можете сами попытаться воплотить любые изменения.


Примеры

MT4

Нижеприведенный график с примером демонстрирует торговый процесс Помощника по графическим паттернам. Этот нисходящий канал на недельном графике GBP/USD помечен тремя объектами типа «Равноудаленный канал»: граница (желтая), вход (бирюзовый) и ТП (лайм). Экспертный советник обнаружил все объекты и рассчитал соответствующие уровни входа, стоп-лосса и тейк-профита. Рассчитанные значения отображаются в комментарии графика (верхний левый угол). Были размещены отложенные стоп-ордера; их уровни СЛ/ТП также видны на графике.

Помощник по графическим паттернам — пример графика, показывающий стоп-ордера на МетаТрейдере 4.

MT5

Следующий график показывает, как Помощник по графическим паттернам размещает отложенный ордер на покупку, чтобы открыть сделку, пропущенную при прорыве фигуры. График AUD/CAD @ M5 использует трендовые линии, чтобы обозначить границу (желтая), вход (бирюзовый) и тейк-профит (лайм). Так же, как и в предыдущем примере, комментарий к графику в верхнем левом углу экрана показывает найденные уровни. Так как нижние объекты отсутствуют, рассчитываются только те уровни, которые имеют отношение к покупке. Был размещен один отложенный лимит-ордер на покупку, потому что текущая цена выше уровня входа.

Помощник по графическим паттернам — пример графика, показывающий лимит-ордер на МетаТрейдере 5.

Трендовая линия

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

Помощник по графическим паттернам - пример графика, показывающий подготовку ко входу на основании закрытия выше трендлайна в МетаТрейдере 4.

Этот советник совместим с ECN. Если вы торгуете через ECN-брокерарыночным исполнением ордеров), вы не можете устанавливать стоп-лосс или тейк-профит при открытии позиции. Вам следует открыть позицию сначала без этих уровней и только потом изменить позицию, добавив стоп-лосс и тейк-профит. Данный советник будет выполнять это автоматически.


Скачать (ver. 1.14, 2024-03-06)

Скачать «Помощник по графическим паттернам» для MT4 Скачать «Помощник по графическим паттернам» для MT4 в zip-архиве Скачать «Помощник по графическим паттернам» для MT5 Скачать «Помощник по графическим паттернам» для MT5 в zip-архиве


Обсудить

У вас есть собственные результаты тестирования или замечания к этому экспертному советнику? Обсудите их на форуме!


Список изменений

Версия 1.14 — 2024-03-06

  • Исправлен баг, который мог привести к постоянному потоку запросов к торговому серверу на изменение ордера.
  • Исправлены все сравнения дробных чисел, чтобы избежать возможных проблем.
  • Исправлен небольшой баг в версии для МТ5, который иногда (очень редко) мог привести к неудачному обновлению отложенного ордера.

Версия 1.13 — 2023-05-22

  • Исправлена еще одна ошибка при работе с горизонтальными линиями.

Версия 1.12 — 2023-05-19

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

Версия 1.11 — 2022-07-09

  • Небольшие улучшения в расчете размера позиции.

Версия 1.10 — 2022-04-25

  • Добавлен вариант вход на основе закрытия выше/ниже трендлайна.
  • Обновлены описания входных параметров.
  • Исправлены некоторые потенциальные ошибки расчета размера позиции.

Версия 1.09 — 2020-12-13

  • Исправлен расчет размера позиции для отложенных ордеров, когда базовая валюта пары равна валюте счета.

Версия 1.08 — 2020-11-30

  • Исправлены некоторые ошибки расчета стоп-лосса.

Версия 1.07 — 2020-11-19

  • Обновление расчета размера позиции.

Версия 1.06 — 2020-06-24

  • Дальнейшие улучшения по расчету цены пункта в версии для МТ4.

Версия 1.05 — 2020-05-30

  • Исправлена ошибка в версии для MT5, которая могла привести к неверному расчету цены пункта.

Версия 1.04 — 2020-05-16

  • Небольшая коррекция изменений, внесенных с версией 1.03.

Версия 1.03 — 2020-05-15

  • Улучшена точность расчета размера позиции.
  • Исправлена потенциальная ошибка 131 (неправильный объем сделки) в МТ4 и код возврата 10014 (TRADE_RETCODE_INVALID_VOLUME) в МТ5 из-за того, что размер позиции не учитывал параметр шага объема для торгового символа.

Версия 1.02 — 2020-03-31

  • Добавлена поправка на гранулярность размера тика, чтобы предотвратить ошибку 130 (неправильные стопы) в МТ4 и ошибку 4756 в МТ5, когда размер тика у торгового инструмента больше 1 пункта. Это особенно часто может пригодится при торговле на CFD.

Версия 1.01 — 2019-02-11

  • Добавлена возможность устанавливать стоп-лосс на самую дальнюю точку треугольника/клина.
  • Исправлена ошибка, которая могла приводить к неправильному расчету значения стоп-лосса в версии для МТ4.

Версия 1.00 — 2013-03-07

  • Первый релиз.