Работа трейдера сопряжена с постоянным наблюдением за различными графиками. Однако случаются жизненные ситуации, когда необходимо отлучиться от рабочего места. При этом возникает потребность в использовании каких-то средств автоматизации торговых процессов. В этом плане возможности терминала MetaTrader4 весьма скудны: выставление TP/SL, постановка отложенных ордеров и использование Trailing Stop Loss.
Что умеем?
В данной статье представлены программы, которые могут совершить одноразовую обработку такого события как достижение индикатором некоторого уровня.
В качестве индикаторов используются стандартные представители этого класса в терминале MetaTrader4. Для каждого из них представлена отдельная программа. В качестве уровней для сравнения со значением индикатора используются графические объекты — вертикальные линии.
Реализованы обработки двух событий: «значение индикатора больше нанесённой линии» и «значение индикатора ниже нанесённой линии». При обнаружении такого события программы могут в зависимости от настроек помочь:
1) Закрывать все рыночные продажи (Sell) по данному инструменту;
2) Закрывать все рыночные покупки (Buy) по данному инструменту;
3) Удалять все отложенные продажи (Sell Limit и Sell Stop) по данному инструменту;
4) Удалять все отложенные покупки (Buy Limit и Buy Stop) по данному инструменту;
5) Закрывать (для рыночного ордера) или удалять (для отложенного ордера) ордер по его тикету (независимо от символа ордера);
6) Открывать ордер любого типа (Buy, Sell, Buy Limit, Sell Limit, Buy Stop, Sell Stop) по данному инструменту;
7) Подавать предупреждающий сигнал об обнаружении события.
Как работаем?
Рассмотрим в общих чертах алгоритм работы такой программы. Он достаточно прост:
1. Скрипт ищет графический объект с заданным именем (указывается в настройках) на главном окне графика.
2. Если в скрипте используются индикаторы, которые отображаются в отдельных подокнах, в случае обнаружения такого объекта робот его удаляет, предполагая, что с ним он работать не может.
3. Затем скрипт ищет заданный объект в подокнах. Если находит, то считывает значение линии и сравнивает его со значением индикатора.
4. Далее, исходя из настроек скрипта, ищется один из двух вариантов события:
1. «Значение индикатора больше нанесённой линии»;
2. «Значение индикатора меньше нанесённой линии».
5. Если событие произошло, то программа один раз совершает отмеченные трейдером желательные действия. При этом при открытии сделки она предварительно проверяет — нет ли уже подобной открытой (с таким магическим числом), что является дополнительной гарантией того, что робот не «наворотит» лишнего.
Работа со скриптами
Все скрипты снабжены исчерпывающими комментариями, поэтому необходимости в отдельном описании каждого не видим.
Настройки скриптов необходимо делать согласно настройкам индикатора, с которым планируется его использовать. Кроме того, отмечаем, что робот использует только те настройки, которые указаны в его (!) параметрах, а не в параметрах вашего индикатора.
При нанесении линии на окно графика внимательно следите за тем, чтобы имя было указано верно. Скрипт не увидит линии с неправильным именем (у робота, в свою очередь, название линии указывается во входных параметрах).
Также следует учитывать, что робот не отслеживает, на каком именно подокне нанесена линия. Следите, чтобы линия находилась именно в подокне нужного индикатора!
Общие входные параметры для всех роботов:
— Count_Of_Trade_Try — количество попыток совершения операции (при возникновении ошибок);
— Pause_Of_Trade_Try — пауза (в секундах) между попытками совершения операции (при возникновении ошибок);
— Mode — режим событий: 1 — ждём ситуацию, когда значение индикатора больше линии, 2 — ждём ситуацию, когда значение индикатора ниже линии;
— SL_Of_Order — величина StopLoss. Для рыночных ордеров — в пунктах от цены открытия (например, 50), для отложенных задаётся явно (например, 1.6592);
— Lots — объём открываемых позиций;
— Order_Comment — комментарий открываемых позиций;
— Close_By_Ticket — включение/выключение закрытия сделки по её тикету при отработке события;
— Ticket — тикет для закрытия сделки при включённом Close_By_Ticket;
— Slipage — уровень допустимой реквоты при совершении операций;
— Magic_Number — магическое число ордеров. Используется для определения роботом «своих» сделок. Если необходимо закрывать ордера, открытые не этим роботом (с иным или отсутствующим магическим числом), следует указывать 0. При закрытии по тикету магическое число не учитывается!;
— Alerts — включение/выключение появления алертов при событии.
Далее следуют параметры того индикатора, который вы планируете использовать. С ними следует ознакомиться особенно тщательно, и выполнять их настройку аналогично тем индикаторам, с графиком которых планируется работа.
Безусловно, данные скрипты не охватывают всех возможных событий и задач, но могут оказать значительную помощь в автоматизации торговли.