Торговый конструктор TradeBuilderMT5 - руководство пользователя.

Торговый конструктор TradeBuilderMT5 - советник, предназначенный для построения торговых систем на базе произвольных наборов технических индикаторов.
Работа советника основана на формировании и обработке следующих сигналов:
- OpenBuy/ OpenSell - открытие позиций;
- StopBuy/ StopSell - закрытие позиций;
- TakeProfitBuy/ TakeProfitSell - получение уровней TP;
- StopLossBuy/ StopLossSell - получение уровней SL;
- NoLossBuy/ NoLossSell - перевод в состояние безубытка;
- MinProfitBuy/ MinProfitSell - закрытие части позиции;
- CancelBuy/ CancelSell - разрешение повторного сигнала на открытие;
- DeleteBuy/DeleteSell - удаление отложенных ордеров.
Сигналы формируется из нескольких последовательных шагов (для Open - 10 шагов, для остальных - по 2 шага), задаваемых через входные параметры. Каждый шаг содержит следующие поля:
- indicator (выпадающий список) - выбор индикатора из перечня MT5, включая CUSTOM, а так же, дополнительно цены Open, Close, High, Low, текущие цены Bid и Ask, наименьшее Low и наибольшее High указанного интервала (Lowest, Highest);
- tf (выпадающий список) - выбор временного периода;
- action (выпадающий список) - функция шага;
- param - строка параметров через запятую (для индикатора CUSTOM первый параметр должен быть строковый с именем индикатора);
- bar - индекс бара;
- line - индекс буфера;
- arg - аргумент шага( double);
- freeze - признак запоминания результата шага на заданное количество баров
Во входных параметрах название шагов кодируется текстом с разделителями: <имя сигнала>_<шаг>_<параметр>, например, OpenBuySignal_0_indicator - параметр, задающий тип индикатора шага 0 сигнала OpenBuy.
Каждый шаг имеет результат выполнения (true/false) и значение, используемое для дальнейшей обработки. Список функций с описанием приведен в таблице ниже.
Функция | Описание |
---|---|
EmptyAction | Пустое действие (используется, например, для получения значения индикатора в определенной точке). Результат выполнения функции всегда true. |
Above | Сравнение значения, полученного на текущем шаге с предыдущим. Если значение текущего шага выше предыдущего, то результат true, в противном случае - false. |
Below | Сравнение значения, полученного на текущем шаге с предыдущим. Если значение текущего шага ниже предыдущего, то результат true, в противном случае - false. |
AboveArg | Сравнение значения, полученного на текущем шаге с значением, заданным в поле arg. Если значение текущего шага выше заданного, то результат true, в противном случае - false. |
BelowArg | Сравнение значения, полученного на текущем шаге с значением, заданным в поле arg. Если значение текущего шага ниже заданного, то результат true, в противном случае - false. |
AddPoint | Добавление к значению, полученному на текущем шаге количества пунктов, заданного в поле arg. Результат выполнения функции всегда true. |
Empty | Проверка значения, полученного на текущем шаге с 0 или EMPTY_VALUE. Результат выполнения выполнения устанавливается в true при нулевом значении текущего шага. |
NotEmpty | Проверка значения, полученного на текущем шаге с 0 или EMPTY_VALUE. Результат выполнения выполнения устанавливается в true при ненулевом значении текущего шага. |
CrossUp | Проверка пересечения вверх линий индикаторов, заданных на текущем и предыдущем шаге. Результат устанавливается в true когда новая точка индикатора, заданного на текущем шаге выше предыдущего, а прошлые точки - наоборот. |
CrossDown | Проверка пересечения вниз линий индикаторов, заданных на текущем и предыдущем шаге. Результат устанавливается в true когда новая точка индикатора, заданного на текущем шаге ниже предыдущего, а прошлые точки - наоборот. |
MoveUp | Проверка движения линии, заданной на текущем шаге вверх. Результат устанавливается в true когда новая точка индикатора выше предыдущей. |
MoveDown | Проверка движения линии, заданной на текущем шаге вниз. Результат устанавливается в true когда новая точка индикатора ниже предыдущей. |
CrossArgUp | Проверка пересечения линией вверх, значения, заданного в параметре arg. Результат устанавливается в true, когда условие выполняется. |
CrossArgDown | Проверка пересечения линией вниз, значения, заданного в параметре arg. Результат устанавливается в true, когда условие выполняется. |
EqualArg | Проверка значения на равенство заданному в параметре arg. Результат устанавливается в true, когда условие выполняется. |
NotEqualArg | Проверка значения на неравенство заданному в параметре arg. Результат устанавливается в true при неравенстве. |
Equal | Проверка на равенство значений текущего и предыдущего шагов. Результат устанавливается в true, когда условие выполняется. |
NotEqual | Проверка на равенство значений текущего и предыдущего шагов. Результат устанавливается в true при неравенстве. |
AddToPrice | Значение индикатора добавляется к текущей цене. Используется множитель, заданный в поле arg. Может использоваться, например, для вычисления уровня SL или TP по значению ATR. |
Сигнал возвращает значение true, если таковое получено на каждой функции сигнала.
Ниже приводится пример настройки сигнала при пересечении вверх скользящих средних с периодами 10 и 20. Цифрами на скриншоте обозначено:
- выбран индикатор MA
- текущий тайм-фрейм
- пустое действие
- параметры MA
- бар 1
- линия 0
- индикатор MA на следующем шаге
- функция пересечения вверх
- параметры второй MA
- EmptyIndicator на последующем шаге - признак завершения сигнала
Для определения строки параметров необходимо обратиться к документации по техническим индикаторам mql5. Здесь, выбрав требуемый индикатор, мы получим описание, типа ниже следующего:
int iMA( string symbol, // имя символа ENUM_TIMEFRAMES period, // период int ma_period, // период усреднения int ma_shift, // смещение индикатора по горизонтали ENUM_MA_METHOD ma_method, // тип сглаживания ENUM_APPLIED_PRICE applied_price // тип цены или handle );
Необходимо через запятую ввести числовые значения всех параметров, кроме symbol и period. В данном случае, для индикатора MA - 4 параметра. Ниже приводят строки параметров по-умолчанию для каждого индикатора и номера линий.
Индикатор | Строка параметров | Номера линий, комментарий |
---|---|---|
AC | ||
AD | ||
ADX | 14 | 0 - MAIN_LINE, 1 - PLUSDI_LINE, 2 - MINUSDI_LINE |
ADXW | 14 | 0 - MAIN_LINE, 1 - PLUSDI_LINE, 2 - MINUSDI_LINE |
ALLIGATOR | 13,8,8,5,5,3,2,4 | 0 - GATORJAW_LINE, 1 - GATORTEETH_LINE, 2 - GATORLIPS_LINE |
AMA | 15,2,30,0,0 | |
AO | ||
ATR | 14 | |
BANDS | 20,0,2.0,0 | 0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND |
BEARS | 13 | |
BULLS | 13 | |
BWMFI | 0 | |
CCI | 14,5 | |
CHAIKIN | 3,10,1,0 | |
CUSTOM | имя_индикатора *** | |
DEMA | 14,0,0 | |
DEMARKER | 14 | |
ENVELOPES | 14,0,0,0,0.1 | 0 - UPPER_LINE, 1 - LOWER_LINE |
FORCE | 13,0,0 | |
FRACTALS | 0 - UPPER_LINE, 1 - LOWER_LINE | |
FRAMA | 14,0,0 | |
GATOR | 13,8,8,5,5,3,2,4 | 0 - UPPER_HISTOGRAM, 1- цвет верхней гистограммы, 2 - LOWER_HISTOGRAM, 3- цвет нижней гистограммы |
ICHIMOKU | 9,26,52 | 0 - TENKANSEN_LINE, 1 - KIJUNSEN_LINE, 2 - SENKOUSPANA_LINE, 3 - SENKOUSPANB_LINE, 4 - CHIKOUSPAN_LINE |
MA | 10,0,0,0 | |
MACD | 12,26,9,0 | 0 - MAIN_LINE, 1 - SIGNAL_LINE |
MFI | 14,0 | |
MOMENTUM | 14,0 | |
OBV | 0 | |
OSMA | 12,26,9,0 | |
RSI | 14,0 | |
RVI | 10 | |
SAR | 0.02,0.2 | |
STDDEV | 20,0,0,0 | |
STOCHASTIC | 5,3,3,0,0 | 0 - MAIN_LINE, 1 - SIGNAL_LINE |
TEMA | 14,0,0 | |
TRIX | 14,0 | |
VIDYA | 15,12,0,0 | |
VOLUMES | 0 | |
BITMAP, TREND, TEXT |
Проверка графического объекта OBJ_BITMAP, OBJ_TREND, OBJ_TEXT в позиции, заданной в поде bar. | |
Btn_BUY, Btn_SELL, Btn_CloseBUY, Btn_CloseSELL |
Открытие сделок на покупку/продажу или их закрытие при нажатии на соответствующую кнопку (советник сам размещает кнопки на графике). |
*** Пользовательский индикатор CUSTOM в качестве параметров должен содержать минимально один параметр - его имя. Все параметры вводится одной строкой, с разделителем - запятая. Советник выделяет из строки значения следующих типов: string (обрамлено одиночными кавычками); int (содержит только символы 0..9); double (символы 0..9 и точка); bool (true или false). Параметры других типов должны быть приведены к перечисленным форматам.
Пример настройки сигнала на пользовательском индикаторе из маркета приведен на скриншоте ниже.
Ниже приводится пример конфигурации сигнала StopLossBuy для получения уровня SL по наименьшему значению цены за последние 6 баров. Цифрами на скриншоте обозначено:
- выбран индикатор Lowest
- начальный бар
- счетчик баров
- EmptyIndicator, как признак завершения сигнала
Перечень параметров для настройки торговли:
- startLot - фиксированный объем сделок;
- riskPercent - процент для расчета объема от остатка свободных средств (при ненулевом SL);
- takeProfit - фиксированный TP;
- takeProfit_factor - расчет TP но уровню SL
- stopLoss - фиксированный SL;
- noLoss - фиксированный уровень перевода в безубыток;
- noLoss_factor - уровень перевода в безубыток в процентах от свободных средств;
- minProfit - фиксированный уровень частичного закрытия;
- minProfit_percent - уровень частичного закрытия в процентах от от свободных средств;
- minProfit_factor - размер частичного закрытия
- trailStop - фиксированный уровень трейлинга;
- trailStop_factor - уровень трейлинга от уровня TP;
- trailStep - шаг трейлинга;
- numOrders - количество сделок в одном направлении;
- bothOrdersDir - разрешение сделок Buy при наличии Sell и наоборот;
- GridDistance - минимальное расстояние между ордерами сетки;
- GridFactor - коэффициент изменения объема сетки;
- autoGrid - разрешение автоматического открытия сделок;
- useVirtual_SL_TP, color_SL, color_TP - использование виртуальных SL и TP, цвета линий;
- AverageClose_percent, AverageClose_price - процент и сумма закрытия однонаправленных сделок;
- DiffClose_percent, DiffClose_price - процент и сумма закрытия разнонаправленных сделок;
- martin_factor - коэффициент изменения объема после получения убытка;
- tradeMon, tradeTue, tradeWed, tradeThu, tradeFri - время торговли по дням недели;
- orderTypes - тип открываемых ордеров (рыночные, limit, stop).