Торговый конструктор 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).


