Универсальный робот для работы по сигналам пользовательских индикаторов.

Универсальный робот для работы по сигналам пользовательских индикаторов.



Введение

Эксперт exp_iCustom предназначен для торговли по сигналам пользовательского индикатора. Для настройки эксперта на использование индикатора не требуется никаких навыков программирования, все настройки выполняются через окно свойств эксперта: вводится имя индикатора, список параметров, и номера буферов индикатора.

Типы используемых индикаторов

Эксперт может работать со следующими типами пользовательских индикаторов:

1. Индикатор рисует стрелки (значки) на покупку/продажу. Советник открывает ордера по этим стрелкам (рис. 1).


2. Индикатор рисует две линии, будем называть их главной и сигнальной. Советник открывает ордера при пересечении этих линий (рис. 2).


3. Индикатор рисует одну линию. Советник открывает ордера при пересечении линией определенных уровней (рис. 3).


4. Индикатор рисует одну линию. Советник открывает ордера на экстремальных точках этой линии. Экстремум определяется по трем барам (рис. 4).


5. Индикатор рисует разноцветную линию. Советник открывает ордера в начале нового цветного участка. В этом режиме возможно использование не всех разноцветных индикаторов (рис. 5).


6. Смена цвета при пересечении через 0. Обычно такие индикаторы рисуют гистограммы в подокне, при значениях выше нуля гистограмма имеет один цвет, при значениях ниже нуля – другой (рис. 6).


Неподходящие индикаторы

1. Индикаторы имеющие строковые параметры. Проверить, есть ли у индикатора строковые параметры, можно посмотрев вкладку “Входные параметры” окна свойств индикатора. Строковые параметры отмечены значком с буквами “ab” (рис. 7).


2. Индикаторы использующие для рисования графические объекты. Проверить, рисует ли индикатор значки и линии при помощи индикаторных буферов, или графических объектов, можно попытавшись выделить значок (или линию) двойным щелчком мыши. Если значок или линию удается выделить и переместить, значит они нарисованы при помощи графических объектов (рис. 8, 9).



3. Некоторые разноцветные индикаторы.

Встречаются индикаторы использующие различные способы раскрашивания. Если одна линия всегда имеет значения, а вторая линия периодически имеет или не имеет значений, такой индикатор не может быть использован. Чтобы узнать какой способ раскрашивания применяется в индикаторе, можно увеличить толщину нижней линии и увидеть, существует ли она всегда или исчезает (рис. 10).


Настройка эксперта

Экспертом может использоваться три пользовательских индикатора: индикатор для открытия ордеров, индикатор для закрытия ордеров и индикатор для трейлинга. Соответственно, в окне свойств имеется три однотипных раздела параметров. Параметры раздела открытия ордеров начинаются с префикса “_O_”, параметры раздела закрытия с префикса “_С_”, параметры раздела трейлинга с префикса “_TR_”.

Шаг 1

В переменную iCustomName вводится имя индикатора. Имя индикатора соответствует имени файла индикатора без расширения. Чтобы не ошибиться, при вводе имени индикаторы, лучше всего выполнить его копирование при помощи мышки – найти требуемый индикатор в каталоге MQL4/Indicators, щелкнуть на нем правой кнопкой, выбрать команду “Переименовать”, при этом имя индикатора должно выделиться, затем еще раз щелкнуть правой мышкой и выбрать команду копировать (рис. 11).



После копирования имени индикатора в буфер обмена, следует открыть окно свойств индикатора – дважды щелкнуть мышкой на поле ввода значения правее переменной _O_iCustomName, затем еще раз щелкнуть правой кнопкой и выбрать команду “Вставить” (рис. 12), после этого удалить расширение и точку.



Шаг 2

В переменную _O_iCustomParam вводится список параметров индикатора через разделитель “/” (рис. 13).


Если в индикаторе имеется переменная типа datetime (в окне свойств у переменной значок с часами), необходимо указать тип переменной “date:”, например:

15/date:2011.10.17 16:36/30.

Аналогично с переменными типа color (в окне свойств у переменной значок с желто-оранжевым прямоугольником), необходимо указать тип переменной “color:”, например:

15/color:Red/30.

Шаг 3

В переменной _O_Mode указывается тип используемых сигналов индикатора, в переменной s0 имеется подсказка по возможным значениям: 1 – стрелки, 2 – главная и сигнальная, 3 – линия и уровни, 4 – экстремум, 5 – смена цвета

Шаг 4

Указание индексов индикаторных буферов. Для каждого типа сигналов имеются свои переменные, в которых указываются индексы буферов. При работе в режиме _O_Mode = 1 используются переменные_O_M1_iBuyBufIndex (индекс буфера со стрелками на покупку) и _O_M1_iSellBufIndex (индекс буфера со стрелками на продажу), в режиме 2 – _O_M2_iMainBufIndex (индекс буфера главной линии) и _O_M2_iSignalBufIndex ( индекс буфера сигнальной линии), в режиме 3 – _O_M3_iBufIndex (индекс буфера линии), в этом режиме в переменных _O_M3_BuyLevel и _O_M3_SellLevel указывается значение уровней при пересечении которых выполняется открытие ордера. При пересечении уровня _O_M3_BuyLevel снизу вверх выполняется открытие ордера buy, при пересечении уровня _O_M3_SellLevel сверху вниз выполняется открытие ордера sell. В режиме 4 используется переменная _O_M4_iBufIndex (индекс буфера линии), в режиме 5 – _O_M5_iBuyBufIndex (индекс буфера линии отображаемой при тренде вверх) и _O_M5_iSellBufIndex (индекс буфера линии отображаемой при тренде вниз). Определить индекс буфера индикатора можно по вкладке “Цвета окна свойств индикатора”, индекс буфера указан в колонке “№” (рис. 14).


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

На этом шаге основные настройки эксперта можно считать законченными.

Шаг 5

Настройка способов закрытия ордеров. Выбор способа закрытия выполняется переменой _OС_Mode, возможные значения: 1 – закрытие только по стоплосс и тейкпрофит, 2 – ордера закрываются по сигналам открытия противоположного ордера, 3 – используются сигналы дополнительного индикатора (переменные начинающиеся с префикса “_C_”)

При использовании режима _OС_Mode=1 необходимо установить требуемые значения стоплосс и тейкпрофит в переменных StopLoss и TakeProfit. Использования стоплос и тейпрофит возможно также и во всех других режимах закрытия, или можно отключить стоплосс и тейкпрофит, для отключения необходимо ввести значение 0. При использовании режима 3 необходимо выполнить настройки раздела переменных с префиксом “_С_”, выполнение настроек аналогично настройкам раздела переменных с префиксом “_O_” (шаги 1-4).

При выборе типа закрытия 2 и 3 возможно использование дополнительных правил закрытия – переменные CheckProfit, MinimalProfit, CheckSL, MinimalSLProfit. При включении CheckProfit, перед закрытием выполняется проверяется прибыль ордера, если прибыль ордера меньше чем MinimalProfit, ордер не закрывается. При включении CheckSL перед закрытие проверяется положение стоплосс ордера, если стоплосс фиксирует MinimalSLProfit или более пунктов прибыли, то закрытие ордера не выполняется.

Шаг 6

Выбор типа используемых ордеров. Эксперт может работать рыночными ордерами или отложенными. Тип ордеров выбирается переменной OrdType: 0 – рыночные, 1 – стоп, 2 – лимит. При выборе типа 0 (рыночные ордера) в переменной Slippage указывается допустимое отклонение от запрошенной цены (параметр соответствующий параметру расположенному в самом низу окна открытия ордера (рис. 15)).


При использовании типов 1 и 2 (отложенные ордера), задействуются переменные PendLevel, PendPromPrice, PendNewSigMode, PendPriceFollow, PendDelete, PendExpiration. В переменной PendLevel определяется уровень установки отложенных ордеров от цены, измеряется в пунктах. В переменной PendPromPrice определяется цена, от которой отсчитывается уровень установки отложенных ордеров: 0 – от текущей цены, 1 – от цены открытия бара. В переменной PendNewSigMode определяется способ управления отложенным ордером по новому торговому сигналу: 0 – если ордер уже был установлен, то при появлении нового торгового сигнала не выполняются ни какие действия, 1 – переустановка ордера по новому сигналу, 2 – по новому сигналу ордер переустанавливается только на “лучший уровень” – байстоп только вниз, байлимит только вверх, селлстоп только вверх, селлимит только вниз. Переменной PendPriceFollow включается режим “следования за ценой” – ордер подтягивается вслед за изменением цены (трейлинг отложенных ордеров). PendDelete – удаление отложенного ордера по противоположному торговому сигналу, при значении false, возможно одновременной существование двух ордеров разного направления. Переменной PendExpiration устанавливает время существования отложенного ордера, измеряется в минутах, минимальное значение 11 минут.

Шаг 7

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

Включение трейлинга выполняется переменной TrailingStop_Use – при значении true трейлинг используется, при false выключен. Переменная TrailingStopStart определяет прибыль ордера (в пунктах) при которой начинает перемещаться стоплосс. Переменной TrailingStop определяется уровень стоплосс (в пунктах) от текущей рыночной цены.

Включение безубытка выполняется переменной BreakEven_Use – при значении true безубыток используется, при false выключен Переменная BreakEvenStart определяет прибыль ордера (в пунктах) при которой срабатывает безубыток. Переменная BreakEvenLevel определяет уровень (в пунктах) на который устанавливается стоплосс от цены срабатывания безубытка, фиксируется BreakEvenStart-BreakEvenLevel пунктов прибыли.

Настройка трейлинга по индикатору выполняется в разделе переменных с префиксом “_TR_”, настройка аналогична настройке раздела открытия (шаг 1-4) – вводится имя индикатора, параметры, указываются индексы индикаторных буферов – переменные _TS_iForBuyBufIndex (индекс буфера для ордеров buy) и _TS_iForSellBufIndex (индекс буфера для ордеров sell). Дополнительно, параметром _TS_Indent определяется отступ в пунктах от значения индикаторной линии, на котором устанавливается стоплосс и параметром _TS_TrailInProfit включается режим, при котором трейлинг начинает работать только в том случае, если стоплосс устанавливается прибыльном для ордера уровне.

Шаг 8

Выбор типа управления объемом ордера. Возможно три режима: фиксированный лот, процент от депозита и процент от нормированного депозита. Тип устанавливается переменной MMMethod: 0 – фиксированный лот (переменная Lots), 1 – часть (Risk) от свободных средств, 2 – часть (Risk) от свободных средств нормированных по значению MeansStep, например Risk=0.1, MeansStep=1000, если средств меньше 2000, лот равен 0.1, если средств стало 2000 или более – 0.2 лота, 3000 и более – 0.3 лота и т.д. Переменной MeansType определяется тип средств используемых при расчете размера лота. 1 – Balance, 2 – Equity, 3 – FreeMargin. Переменая LotsDigits определяет количество знаков после запятой у размера лота 1 – один знак после запятой (лоты типа 0.1, 0.2…), 2 – два знака после запятой (лоты типа 0.01, 0.02…) и т.п.

Шаг 9

Установка максимального количества открытых ордеров. Переменной MaxOrdersCount определяется общее допустимое количество открытых ордеров buy и sell, при значении -1 общее количество ордеров не ограничено, MaxBuyCount – допустимое количество ордеров buy (при значении -1 – не ограничено), MaxSellCount – ордеров sell (при значении -1 – не ограничено).

Оптимизация эксперта

Параметры индикаторов вводятся в строковую переменную, что не позволяет выполнять их оптимизацию обычным способом, но в эксперте имеется возможность оптимизировать до 5 параметров индикатора, для этого в каждом разделе переменных индикатора (“_O_”,”_C_”, “_TR_”) существуют подразделы переменных “Opt” – в каждом разделе по 5 переменных Opt_Х_Use, Opt_X_Index, _O_Opt_X_Value. Переменной Opt_Х_Use выполняется включение использования соответствующих переменных Opt_X_Index и _O_Opt_1_Value. В переменой Opt_X_Index указывается номер (отсчет от 0) параметра индикатора для которого используется значение переменной _O_Opt_1_Value (рис. 16), при этом значение введенное в строке параметров игнорируется .


Индикаторы с перечислениями

У некоторых индикаторов внешние параметры могут задаваться при помощи перечислений, в этом с случае в окне свойств индикатора нет поля для ввода значения переменной, вместо него есть выпадающий список для выбора варианта, как например в индикаторе 2MACross (рис. 17).


При вводе параметров индикатора в переменную _O_iCustomParam (и другие подобные переменные) необходимо указывать числовое значение соответствующее какому-то конкретному пункту списка. Для того, что бы узнать какое число соответствует выбранному пункту списка, надо прикрепить индикатор на график, установить ему нужные параметры и сохранить шаблон. Для сохранения шаблона надо щелкнуть правой кнопкой мыши на графике и выбрать: Шаблон – Сохранить шаблон. Сохраненный шаблон открываем в блокноте (для этого можно открыть блокнот и перетащить на него файл шаблона), находим параметры индикатора и смотрим значения (рис. 18)

Как видим по изображению, для параметра FastMAPrice был выбран вариант “Median price”, ему соответствует значение 4. Значит в строку _O_iCustomParam вводим: 5/0/4/0/34/0/0/0.



Report Page