Exp - The xCustomEA Универсальный торговый советник на пользовательских индикаторах. Советник по индикатору!

Exp – The xCustomEA Универсальный торговый советник на пользовательских индикаторах. Советник по индикатору!

VirtualTradePad LOGO
Exp – VirtualTradePad Торговая панель. Торговля в 1 клик с графика или клавиатуры!
Copylot logo
Copylot – копировщик сделок форекс для МТ4 и МТ5 Полная инструкция
VirtualTradePad LOGO
Exp – VirtualTradePad Торговая панель. Торговля в 1 клик с графика или клавиатуры!
Copylot logo
Copylot – копировщик сделок форекс для МТ4 и МТ5 Полная инструкция

Table of contents

  1. Описание
  2. Предисловие
    1. Разница между The X и The xCustomEA?
  3. Основные Функции и описание параметров
    1. Определение Сигнала и Фильтра
  4. Простая установка пользовательского индикатора в сигналах и фильтрах
    1. FAQ Ответы на Вопросы
  5. Блок подключения пользовательского индикатора в нашего советника
    1.  
  6. Внешние переменные и настройки
    1. Пример работы советника по индикатору PipFinite
  7. Файл шаблона индикатора
  8. Программирование своей стратегии
  9. MetaTrader 4 Программирование своей стратегии по пользовательскому индикатору в МТ4
    1. MetaTrader 4 Шаг 1: Шаг загрузки индикаторов в ресурсы!
    2. MetaTrader 4 Шаг 6: Главный шаг создания стратегии и сигналов для открытия позиций!
    3. MetaTrader 4 Шаг 7: Шаг для указание фильтров от ваших индикаторов, или использование вашего индикатора как фильтр для стратегии!
  10. MetaTrader 5 Программирование своей стратегии по пользовательскому индикатору в МТ5
    1. MetaTrader 5 Шаг 0: Шаг загрузки индикаторов в ресурсы!
    2.  
    3. MetaTrader 5 Шаг 1: Шаг загрузки индикаторов в ресурсы!
    4. MetaTrader 5 Шаг 2: Шаг объявления переменных для хранения хендлов индикаторов стратегии!
    5. MetaTrader 5 Шаг 3: Шаг объявления переменных для хранения данных индикаторов!
    6. MetaTrader 5 Шаг 4: Шаг создания хендлов индикаторов, для загрузки в советник!
    7. MetaTrader 5 Шаг 5: Главный шаг создания стратегии и сигналов для открытия позиций!
    8. MetaTrader 5 Шаг 7: Шаг для указание фильтров от ваших индикаторов, или использование вашего индикатора как фильтр для стратегии!

Описание

Exp – The xCustomEA Универсальный торговый советник на пользовательских индикаторах.

Наш новый советник The xCustomEA построен на базе советника The X – Universal EA

Функциональные возможности универсального торгового советника The xCustomEA в точности повторяют все параметры нашего советника The X за исключением одного:

The xCustomEA работает на пользовательских индикатор и имеет возможность программирования своей собственной стратегии торговли для терминалов МТ5 и МТ4.

Другими словами: The xCustomEA имеет связь с пользовательскими индикаторами, которые могут быть скачаны с интернета или маркета mql5 .

Предисловие

Программируя советники на заказ мы не были удивлены тем, что 90 % заказов построены на стратегиях по индикаторам.

Поэтому основная наша работа заключалась в том, чтобы встроить пользовательский индикатор в наш шаблон для написания советника.

Но стоимость такой работы + шаблон для написания + открытый код такого шаблона слишком велика. И не все трейдеры соглашаются на то, чтобы написать торговый советник на один пользовательский индикатор.

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

Мы нашли выход из этой ситуации и разработали новый универсальный торговый советник The xCustomEA

Этот советник не имеет предустановленной стратегии, он умеет торговать по сигналам других индикаторов. Вы можете запрограммировать Ваш пользовательский индикатор, а наш советник The xCustomEA будет открывать позиции по сигналам.

Купив Наш Универсальный торговый советник The xCustomEA , Вы сможете программировать советники по индикаторам каждый день!

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

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

Только после получения прибыльных результатов в тестере стратегий, Вы можете купить пользовательский индикатор и запустить советник по этому индикатору на реальном или демо счете!

СтатьяОптимизация и тестирование! Поиск настроек советника!

Разница между The X и The xCustomEA?

Эти два советник построенны на одной одинаковой базе и отличаются лишь в том, что:

The X = Это Универсальный советник , который работает на стандартных индикаторах терминала MetaTrader (Около 20 стандартных стратегий по стандартным индикаторам).

The xCustomEA = Это Универсальный советник , который работает на пользовательских индикаторах. + Добавлено 20 стандартных стратегий из The X Список индикаторов и фильтров

  1. В этом советнике нет встроенной стратегии и нет выбора стратегий. Вы можете устанавливать пользовательские индикаторы в этот советник.
  2. Это значит, что Вы можете выбрать любой пользовательский индикатор, которые показывает сигналы с СТРЕЛКАМИ и торговать по нему.
  3. Также в этом советнике Вы можете программировать свою стратегию по любым индикаторам, которые есть в интернете!
  4. Также Вы можете скачивать готовые стратегии, которые были запрограммированы для этого советника. Этот список пополняется по мере возможности.
  5. Также в этом советнике можно загрузить все стратегии сигналов от The X – и использовать свои кастомные изменения в стратегиях!

Если Вы не умеете и не желаете изучать программирование и Вам достаточно торговать по стандартным индикаторам, то Ваш выбор = The X .

Если Вы умеете программировать и у Вас есть интерес к изучению других индикаторов, то Ваш выбор = The xCustomEA .

Основные Функции и описание параметров

Мы не будем останавливаться на подробном описании основных параметров советника потому, что 99% параметров соответствуют нашей систему The X.

Полное описание всех основных параметров и функций рассмотрено в инструкции по The X. Описание параметров Exp The xCustomEA

В The xCustomEA имеются такие функции как:

  1. Автолот (расчет лота от текущего баланса), мани менеджмент;
  2. Фиксированный лот;
  3. Работа по времени (ограничение работы советника по времени торговли);
  4. Трейлингстоп (стандартный, с алгоритмом “Только прибыльные”);
  5. Трейлингстоп по индикатору Parabolic SAR
  6. Функции обработки ошибок для реальных счетов;
  7. Блок закрытия по общей прибыли и убытку с возможностью отключить советник на счете;
  8. Безубыток (установка стоплосса на точку безубыточности) (установка Стоп Лосс на нулевой уровень);
  9. Мартингейл (увеличение следующего лота после убыточной позиции);
  10. Работа исключительно по сигналам индикатора (Сигнал – открытие, Сигнал – закрытие противоположного ордера – открытие);
  11. Закрытие противоположного сигнала при смене сигнала;
  12. Функция “РЕВЕРС”, переворот сигналов вашей стратегии;
  13. Функция усреднения убыточной позиции.
  14. Функция дополнительного открытия позиций по тренду и против тренда.
  15. Функции виртуальных стоплосс, тейкпрофит и трейлингстопа.
  16. Работа позициями, отложенными ордерами, лимитными ордерами.
  17. Работа с просадкой;
  18. Работа с лимитом прибыли и убытка;
  19. Работа с результатами тестирования;
  20. Работа в полуавтоматическом режиме без открытия позици с оповещенеим о том, что стратегия получила сигнал на открытие, на экран выводится АЛЕРТ;

Полное описание всех основных параметров и функций рассмотрено в инструкции по The X. Описание параметров Exp The xCustomEA

Определение Сигнала и Фильтра

Сигнал

  1. Сигнал – происходит тогда, когда есть все условия для сигнала, например факт пересечения линий МА. Или появление новой точки ZigZag .
  2. Например : Пересечение уровня 70 для индикатора RSI это сигнал. А если RSI выше уровня 70, то это уже фильтр.
  3. Сигнал – это то, что появляется в момент поступления котировок, фиксируется на баре. Советник принимает факт совершения сигнала.
  4. Например: Включился свет. Это сигнал потому, что свет только что включился. При включении света , человек проснулся. Это сигнал.
  5. Открытие позиций происходит по факту совершения сигнала, линии пересеклись , тогда открывается позиция. Если линии были пересечены ранее, то это не сигнал. Сигнал уже прошел.
  6. Добавлено 20 стандартных стратегий из The X Список индикаторов и фильтров

Фильтр:

  1. Фильтр – Это текущее положение индикатора, например текущее положение линий МА относительно друг друга. Или текущая последняя вершина ZIGZAG
  2. Фильтр – это то, что на данный момент показывает индикатор. Это не факт совершения сигнала. Это текущее положение индикатора.
  3. Например: Свет горел. Это фильтр потому, что свет уже был включен и он уже горит. При включенном свете человек уже не спит. Это фильтр.
  4. Фильтрация сигналов происходит по текущему значению индикатору. Если Быстрая МА выше медленной МА, то это фильтр на то, что должны открываться только BUY.
  5. Добавлено 20 стандартных стратегий из The X Список индикаторов и фильтров

Простая установка пользовательского индикатора в сигналах и фильтрах

Есть два типа работы советника :

xCustomEA – Работа советника по нашему индикатору, в котором Вы лично программируете свою стратегию.

Если Вам необходимо программировать работу советника по индикатору, перейдите в следующий раздел: Программирование своей стратегии

xArrow – Работа советника напрямую с пользовательским индикатором, у которого есть буферы типа Стрелок (Arrow) которые можно использовать для советника.

Например: Буфер с сигналами индикатора на BUY и Буфер с сигналами индикатора на SELL

Такие буферы должны иметь тип Стрелки.

Наш советник определяет сигнал по типу : Значение буфера не равно пустому значению и выше 0.:

 //--- проводим проверку условия и устанавливаем значение для sig
 if(xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=0)
 sig=1;
 else
 if(xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=0)
 sig=-1;

Если Вы не хотите программировать свою стратегию и Ваш пользовательский индикатор позволяет работать напрямую с советником, Вы можете указать название индикатора и задать буферы для его работы по сигналам на BUY и SELL

например:

1. Укажите имя пользовательского индикатора! Если этот индикатор был скачан с маркета MQL5, тогда Вам необходимо указать с папки Market:

Market\\PipFinite Trend PRO

Обязательно нужно писать двойной обратный слэш \\

2. Укажите тип сигналов xArrow

3. Укажите номер буфера сигналов для открытия BUY (в данном примере буфер номер 8)

4. Укажите номер буфера сигналов для открытия SELL (в данном примере буфер номер 9)

Пример буфера:

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

Наш пример пользовательского индикатора содержит буферы для работы советника и мы напрямую можем с ним взаимодействовать!

В нашем разделе The xCustomEA Примеры стратегий мы будем выкладывать примеры программирования стратегий и советники по индикаторам известных в маркете!

Пример советника по индикатору PipFinite Trend PRO

FAQ Ответы на Вопросы

Какой индикатор мне использовать?

Какой фильтр подойдет к моему индикатору?

Где найти хороший индикатор?

Вы можете создать мне стратегию?

Вы программируете на заказ?

Здравствуйте.
Я попытаюсь ответить на Ваш комментарий более подробно:

12 лет назад я стал заниматься программированием на заказ.
Мне заказчики присылали техническое задание и я программировал советника по этому заданию .
Я выполнил очень много заказов по программированию.
Очень много заказов были похожи друг на друга.
С одними и теми же функциями работы.
И потом мне надоело программировать потому, что каждое задание похоже на предыдущее.
Поэтому я сделал этот советник xCustomEA , чтобы пользователи сами его настраивали.
И Самым главным правилом здесь есть то, что советник без стратегии торговли.
 Он чистый.
И его главная функция – это торговля по Вашим индикаторам. Он торгует По вашей стратегии.

У меня нет каких-то определенных индикаторов-фильтров, которые будут фильтровать “все индикаторы с маркета“.
Почему я говорю “ВСЕ”?
Потому что это универсальный советник. У него нет стратегии. Он торгует по сигналам Вашего индикатора, того, который Вы запишите в его настройки.

Я отказался от программирования потому, что у меня нет больше сил на программирование на заказ.

Сейчас я программирую только свои утилиты и делаю свои программы для торговли.

Если Ваш индикатор, который дает сигналы , не достаточно прибыльный?

Значит нужно искать те индикаторы, которые будут прибыльные и будут давать свою прибыль, которая будет вас радовать.
У меня таких индикаторов нет.

Этот советник – это универсальный торговый советник, который торгует по Вашим индикаторам.

Это шаблон для робота.

В Видео я попытался объяснить самое главное, почему я создал эту программу.


Естественно, я буду отвечать на Ваши вопросы и постараюсь помочь Вам в программировании Ваших индикаторов.
Для этого я создал у себя на форуме раздел: /forum/69
В котором создаю стратегию по интересным индикаторам, которые предложили пользователи.


Но, пожалуйста, не задавайте мне вопрос про то, какой фильтр индикатор использовать для Вашего сигнала.
Я не знаю. Это Ваши сигналы. Я могу рассказать про функции своего советника. (Полное описание есть в блоге).
Я могу постараться помочь запрограммировать Вам Вашу стратегию.
Но если Вы хотите узнать мои сигналы, то лучше используйте мою стратегию TickSniper – Полностью автоматический торговый робот.

Блок подключения пользовательского индикатора в нашего советника

Новый блок работы с пользовательской стратегией (пользовательский индикатор ) был включен в нашего нового советника.

ПараметрОписание
OWN Signal options
SignalNameIndicatorИмя пользовательского индикатора, с которого будет получены основные сигналы для открытия позиций.По умолчанию: “Ind – The xCustomEA“Это стандартный пустой индикатор, в который Вы можете запрограммировать свою стратегию по нашему примеру!Также мы создали пример пользовательского индикатора по сигналам The X“Ind – The xCustomEA Example TheX”Вы можете использовать наш пример для получения сигналов по стандартным индикаторамОписание стандартных стратегий The XThe xCustomEA Примеры стратегий
SignalTypeIndicatorТип индикатора для сигналов.Есть два типа работы советника :xCustomEA – Работа советника по нашему индикатору, в котором Вы лично программируете свою стратегию.xArrow – Работа советника напрямую с пользовательским индикатором, у которого есть буферы типа Стрелок (Arrow) которые можно использовать для советника.Например: Буфер с сигналами индикатора на BUY и Буфер с сигналами индикатора на SELLТакие буферы должны иметь тип Стрелки.Наш советник определяет сигнал по типу : Значение буфера не равно пустому значению и выше 0.: //— проводим проверку условия и устанавливаем значение для sig if(xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=0) sig=1; else if(xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=0) sig=-1;+ Добавлено 20 стандартных стратегий из The X Список индикаторов и фильтров+Добавлен тип сигналов индикатора (xColorArrow with 1 Buffer and 2 colors), у которых сигнальные стрелки имеют 2 разных цвета (DRAW_COLOR_ARROW)
При использовании типа сигнала xColorArrow Вам необходимо установить следующие значения:SignalBuferforBUY = Номер буфера для стрелок (Необходимо уточнить у автора) или вычислив этот номер буфера опытным путем.SignalBuferforSELL = Номер буфера цвета для этих стрелок (Необходимо уточнить у автора) , обычно этот номер идет следующим за буфером стрелок.Внимание! Данный типо поддерживает 2 цвета, где :
0(первый цвет стрелки) – это сигнал для открытия BUY;
1(первый цвет стрелки) – это сигнал для открытия SELL;
Если у Вашем индикаторе эти цвета перевернуты, то можете дополнительно использовать параметр Signal_Reverse
Для дополнительной информации мы сделали пример использования такого индикатора с DRAW_COLOR_ARROW буфером!
Пример использования: /forum/69-990-1
IndSigToTradeВыбор индикатора и сигнала для открытия первой и главной позиции.
Номер стратегии из пользовательского индикатора SignalNameIndicatorЕсли заданная стратегия не найдена в индикаторе, советник будет выгружен с графика с ошибкой!Если задан 0 , тогда сигналы стратегии не используются но используются фильтры!
TF_IndSigToTrade1Таймфрейм для 1 главного индикатора. Вы можете выбрать ТаймФрейм, по которому индикатор будет принимать сигналы.
Period_Current – текущий Таймфрейм
SIGNALStrategyInputsВнешние параметры для пользовательского индикатора, в режиме SignalTypeIndicator=xArrowВы можете указать внешние переменные индикатора в том виде, как они записаны в таблице настроек через запятую!Важно: Необходимо соблюдать порядок переменных и тип переменных.Тип переменнойЗаписьВажноПримерintx 110777doublex.xОбязательно указание через точку .0.21.10string”x”В MT5: Обязательно указание строки (не цифры ), можно просто записать как “X”В MT4: Внимание! В версии для MetaTrader4 запрещено передавать строковые параметры! При передаче строковых параметров (string) индикатор может быть загружен неправильно!“XXX””TEST SAME”datetimeD’year.month.day’Обязательно указание D и одинарных ковычек!Если необходимо записать без конкретной даты, то Вам неободимо написать в виде строки:”00:00” или “23:59″D’2018.11.08’D’2015.01.01′”00:00” или “23:59″colorC’red/green/blue’Обязательно указание С и одинарных ковычек. Перечисление цвета через слэш /C’0/128/128’C’0/256/0’enum (список, перечисление)х(цифра)Если в Вашем индикаторе есть список (выбор параметра из списка), т.е. В настройках нужно записывать цифру!Пример, как это сделать: /forum/69-965-25469-16-1587798560 напримерinput int InpCCIPeriod=1;
input double InpCCIPeriod2=2.0;
input color InpCCIPeriod3=clrGreen;
input string InpCCIPeriod6=”text”;
input datetime InpCCIPeriod4=2018.11.08;
input bool InpCCIPeriod5=false;записывается как:SIGNALStrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,falseНапример:Например:
Signal_ReverseПереворачивать сигналы этого индикатора. Эта опция переворачивает сигналы только главного индикатора.
ClosePositionifChangeOWNSignalВключить \ Выключить закрытие позиций по обратному сигналу главного индикатора, без участия остальных фильтров и других параметров
OWNSIGNAL_shiftНомер бара для сигнала, который будет генерировать индикатор,
1 = последний закрытый бар, сигналы на таком баре считаются завершенными.
0 = Текущий открытый бар, сигналы на таком баре считаются рисующими.
Подробнее о этом параметре: Подробная статья о сигнальных барах
SignalBuferforBUYSignalBuferforSELLНомер буфера в пользовательском индикаторе, для получения сигнала на BUY и SELLНе изменять для Ind – The xCustomEA и Ind – The xCustomEA Example TheX
Close options 
 Данный блок позволяет закрывать открытые позиции по сигналам пользовательского индикатора.
Используется в том случае, если пользовательский индикатор предоставляет сигналы на закрытие позиций (отдельно от сигналов открытия новой позиции).
Если Вам необходимо указать советнику сигналы на закрытие позиций, тогда Вам нужно указать: имя индикатора (может быть идентичным с именем индикатора для закрытия позиций), набор параметров (Если они отличаются от параметров индикатора по умолчанию), ТаймФрейм, Сдвиг бара, а также номер буферов для получения сигналов на закрытие. Отдельно для BUY и SELL позиций.
Внимание: Если Вы хотите закрывать позицию при получении противоположного сигналы, тогда Вам не нужно использовать этот блок.
CloseNameIndicatorИмя пользовательского индикатора, с которого будет получены основные сигналы для закрытия позиций.
CloseTypeIndicatorТип индикатора для сигналов.Есть два типа работы советника :xCustomEA – Работа советника по нашему индикатору, в котором Вы лично программируете свою стратегию.xArrow – Работа советника напрямую с пользовательским индикатором, у которого есть буферы типа Стрелок (Arrow) которые можно использовать для советника.Например: Буфер с сигналами индикатора на закрытие BUY и Буфер с сигналами индикатора на закрытие SELLТакие буферы должны иметь тип Стрелки.Наш советник определяет сигнал по типу : Значение буфера не равно пустому значению и выше 0.: //— проводим проверку условия и устанавливаем значение для sig if(xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_BUY_buffer[OWNSIGNAL_shift]!=0) sig=1; else if(xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=EMPTY_VALUE && xCustom_SIGNAL_SELL_buffer[OWNSIGNAL_shift]!=0) sig=-1;
Остальные настройкиCloseTimeFrame
Close_shift
CloseStrategyInputs
CloseBuferforBUY
CloseBuferforSELL
Close_IndSigToClose
Filter options
FilterNameIndicatorИмя пользовательского индикатора, с которого будет получены фильтры при открытии позиций.По умолчанию: “Ind – The xCustomEA“Это стандартный пустой индикатор, в который Вы можете запрограммировать свою стратегию по нашему примеру!Также мы создали пример пользовательского индикатора по фильтрамThe X“Ind – The xCustomEA Example TheX”Вы можете использовать наш пример для получения фильтров по стандартным индикаторамОписание стандартных стратегий The XThe xCustomEA Примеры стратегий
FilterTypeIndicatorТип индикатора для фильтра.Есть два типа работы советника :xCustomEA – Работа советника по нашему индикатору, в котором Вы лично программируете свою стратегию фильтра.xArrow – Работа советника напрямую с пользовательским индикатором, у которого есть буферы типа Стрелок (Arrow) или не пустое значение буфера которые можно использовать для советника.Например: Буфер с фильтром индикатора на BUY и Буфер с фильтром индикатора на SELLТакие буферы должны иметь тип Стрелки.Наш советник определяет фильтр по типу : Значение буфера не равно пустому значению и выше 0.: //— проводим проверку условия и устанавливаем значение для sig if(xCustom_FILTER_BUY_buffer[shift]!=EMPTY_VALUE && xCustom_FILTER_BUY_buffer[shift]!=0) sig=1; else if(xCustom_FILTER_SELL_buffer[shift]!=EMPTY_VALUE && xCustom_FILTER_SELL_buffer[shift]!=0) sig=-1;+ Добавлено 20 стандартных стратегий из The X Список индикаторов и фильтров
FILTER_IndSigToTradeВыбор индикатора и фильтра для фильтрации основного сигнала.
Номер стратегии из пользовательского индикатора FilterNameIndicatorЕсли заданная стратегия не найдена в индикаторе, советник будет выгружен с графика с ошибкой!Если IndSigToTrade задан 0 , тогда советник будет работать по фильтрам!
FILTER_TF_IndSigToTradeТаймфрейм для фильтра. Вы можете выбрать ТаймФрейм, по которому индикатор будет принимать сигналы фильтра.
Period_Current – текущий Таймфрейм.
Например: При использовании МА как главного сигнала с ТФ = М30, Вы можете включить фильтрацию по старшему МА с ТФ=Н4
Filter_ReverseПереворачивать сигналы этого фильтра. Эта опция переворачивает сигналы только этого фильтра.
Например: Главный индикатор МА показывает BUY но старший индикатор МА показывает SELL, при использовании этой функции мы переворачиваем сигналы старшего МА и получаем совокупный сигнал BUY
FILTERSIGNAL_shiftНомер бара для сигнала, который будет генерировать индикатор,
1 = последний закрытый бар, сигналы на таком баре считаются завершенными.
0 = Текущий открытый бар, сигналы на таком баре считаются рисующими.
Подробнее о этом параметре: Подробная статья о сигнальных барах
FilterBuferforBUYFilterBuferforSELLНомер буфера в пользовательском индикаторе, для получения фильтра на BUY и SELLНе изменять для Ind – The xCustomEA и Ind – The xCustomEA Example TheX
SLTP options 
 Данный блок позволяет устанавливать стоплосс или тейкпрофит при открытии позиций по сигналу, которые могут быть взяты из значений буферов пользовательского индикатора.
Если у Пользовательского индикатора установлены отдельные буферы для получения стоплосса или тейкпрофита, Вы можете использовать эти значения при открытии новой позиции.

Внимание: Стоплосс или тейкпрофит устанавливается только при открытии новой позиции по новому сигналу. В функциях Усреднения, Дополнительного открытия используется параметры стоплоссов и тейкпрофитов из прошлых переменных. Стоплосс и тейкпрофит, полученный от пользовательского индикатора в Усреднении и дополнительном открытии участия не принимают.
Стоплосс и тейкпрофит от пользовательского индикатора также устанавливается при использовании функции ForcedModifySLTP

Если Вам необходимо указать советнику значения стоплосс и тейкпрофит от пользовательского индикатора, тогда Вам нужно указать: имя индикатора
(может быть идентичным с именем индикатора для открытия / закрытия позиций), набор параметров (Если они отличаются от параметров индикатора по
умолчанию), ТаймФрейм, Сдвиг бара, а также номер буферов для получения значений. Отдельно для BUY и SELL позиций и отдельно для StopLoss и TakeProfit.
SLTPNameIndicatorИмя пользовательского индикатора, с которого будет получены Стоплосс и Тейкпрофит.
SLTPTypeIndicatorТип индикатора .xPrice – Значение цены, котороые будет передано в соответствующую переменную (Стоплосс, Тейкпрофит)
SLTPTimeFrame 
SLTP_shift 
SLTPStrategyInputs 
SLTPBuferforBUY_StopLossНомер буфера, для получения значения StopLoss для позиций BUY , -1 означает, что данная опция не работает.
SLTPBuferforSELL_StopLossНомер буфера, для получения значения StopLoss для позиций SELL , -1 означает, что данная опция не работает.
SLTPBuferforBUY_TakeProfitНомер буфера, для получения значения TakeProfit для позиций BUY , -1 означает, что данная опция не работает.
SLTPBuferforSELL_TakeProfitНомер буфера, для получения значения TakeProfit для позиций SELL , -1 означает, что данная опция не работает.

 

Внешние переменные и настройки

ПараметрОписание
Signal options Дополнительный блок работы с сигналами
Show_alert_without_opening_positionsПоказ Alert вместо открытия позиций!При включении данного параметра, советник не будет открывать новую позицию по сигналу, а только оповещать пользователя о том, что появился новый сигнал. При этом все остальные функции будут работать в штатном режиме.
Позволяет пользователю самостоятельно открывать позицию, если советник выдал сигнал. Но советник не совершает эту сделку и не открывает позицию, а только оповещает пользователя о сигнале.
Send_Push_without_opening_positionsОтправка PUSH уведомления на телефон вместо открытия позиций!При включении данного параметра, советник не будет открывать новую позицию по сигналу, а только оповещать пользователя о том, что появился новый сигнал. При этом все остальные функции будут работать в штатном режиме.
Позволяет пользователю самостоятельно открывать позицию, если советник выдал сигнал. Но советник не совершает эту сделку и не открывает позицию, а только оповещает пользователя о сигнале.
OpenBarControlOnlyРабота советника только по открытым барам. Данный режим позволяет моделировать работу советника по открытию бара(как в тестере стратегий).
При включении данного режима, советник будет торговать точно также , как при режиме тестирования OpenPriceOnly.
Все! функции советника будут исполняться 1!! раз на открытии нового бара (в Зависимости от ТФ, какой ТФ у Вас установлен, такой таймфрейм и будет использоваться), в том числе и Модификация, Трейлингстоп, Усреднение, открытие сигналов и т.д.
ControlNewBarforSIGNALпроверка сигнала индикаторов только каждый новый бар (без проверки на каждом тике),
работает только тогда, когда OWNSIGNAL_shift!==1 и IndSigToTrade!=NoSignal(при NoSignal, советник проверяет
значения фильтров каждый тик)
При включении ControlNewBarforSIGNAL=true, скорость оптимизации увеличивается в 1.5 раза
ReverseSignalПереворот общего сигнала стратегии, полученного от Главного индикатора + фильтров!
Opening Filter options Фильтры открытия позиций
TypeTradeBUYSELLнаправление торговли:Buy и SellOnly BuyOnly SellПри этом: Если использовать отложенные ордера и работать только в 1 направлении: каждый раз при новом сигнале, старый отложенный ордер будет удален и выставлен на новую цену.
MinuteToOpenNextPosition(Разрешение на открытие следующего сигнала после последней открытой позиции),
если нет открытых позиций, то советник считает время от последней закрытой позиции.
Время считается по одноименному типу. Если сигнал на BUY то время считается от последней открытой \ закрытой BUY….
количество минут для открытия следующей сделки по сигналам индикаторов.
Позволяет фильтровать сделки при использовании ONlyOnePosbySignal=false.
DistanceToOpenNextPosition
Минимальная Дистанция для открытия следующей позиции по основному сигналу (Если установлено ONlyOnePosbySignal=false и OnePosPerDirection=false).
Если DistanceToOpenNextPosition выше 0, тогда следующая позиция может быть открыта только тогда, когда предидущая позиция по сигналу прошла DistanceToOpenNextPosition пунктов прибыли!
Если DistanceToOpenNextPosition ниже 0, тогда следующая позиция может быть открыта только тогда, когда предыдущая позиция по сигналу находится на расстоянии DistanceToOpenNextPosition пунктов в обе стороны прибыли или убытка!
OpenOppositePositionAfterStoplossоткрывать противоположную позицию при закрытии текущей по стоп-лоссу. Позволяет открывать противоположную позицию сразу же после получения стоп-лосса предыдущей сделки без использования сигналов индикатора.
Если последняя позиция была закрыта по стоплоссу, советник немедленно откроет противоположную позицию
ONlyOnePosbySignalТорговать только 1 текущей главной позицией одного направления.
Если советник открыл позицию SELL , тогда все остальные сигналы на SELL будут игнорироваться
OnePosPerDirectionОткрытие 1 сделки на 1 направление
например:
если OnePosPerDirection=true и ONlyOnePosbySignal = false
тогда советник может открыть 1 сделку Бай по сигналу и 1 сделку Селл по сигналу
если OnePosPerDirection=false и ONlyOnePosbySignal = true
тогда советник может открыть только 1 сделку по сигналу либо Бай либо СЕЛЛ
если OnePosPerDirection=false и ONlyOnePosbySignal = false
тогда советник может открывать любые сделки по каждому сигналу индикаторов
OnlyOnePositionPerMagicОткрытие 1 позиции на 1 магик,
Советник проверяет есть ли открытые позиции по данному магику у других валютных пар. Если позиции нет – советник откроет сделку по сигналу, а остальные советники будут ждать завершения этой сделки.
Если OnePosPerDirection= false, тогда OnlyOnePositionPerMagic=true работает так: разрешена 1 позиция по магическому номеру;
Если OnePosPerDirection= true, тогда OnlyOnePositionPerMagic=true работает так: разрешена 1 позиция каждого из направлений по магическому номеру;
OnlyAlternateSignalsOnlyAlternateSignals
Позволяет открывать позиции только поочередно.
Если последняя закрытая позиция была SELL, следующая может открыться
только BUY!
Необходима для торговли главного индикатора в режиме No Signal
MAX_BUY_POSITIONпараметр ограничения максимального количества сделок BUY. Учитывается позиции, открытые по сигналам индикаторов. Позиции усреднения и доливок не учитываются
MAX_SELL_POSITIONпараметр ограничения максимального количества сделок SELL. Учитывается позиции, открытые по сигналам индикаторов. Позиции усреднения и доливок не учитываются
MaxSpreadToNotTradeМаксимальный спред, при котором советник может открыть позицию
Если текущий спред на момент получения сигнала больше указанного значения, сигнал индикатора игнорируется до тех пор, пока спред не станет меньше указанного значения.
MinSpreadToNotTradeМинимальный спред, при котором советник может открыть позицию
Внимание: Данный фильтр используется только! для открытия позиций по сигналу, усреднению, доливке. Все остальные функции работают в штатном режиме.Внимание: Данный фильтр предназначен для Позиций. Для отложенных ордеров этот фильтр не имеет значения. Поэтому фильтр работает только тогда, когда Вы используете Позиции.
Include_Commission_SwapУчитывать авторский расчет комиссии и свопа при включении функций : Безубыток (установка стоплосса на точку безубыточности), Трейлингстоп, Усреднение.Авторский расчет комиссии основывается на формуле расчета стоимости 1 пункта из открытых позиций по данному символу и магику, В расчете участвует отрицательный своп и комиссия. Функция возвращает стоимость отрицательного свопа и комиссии в пунктах и учитывает это при работе функций Безубыток (установка стоплосса на точку безубыточности)и трейлингстопа.Внимание: Если у Вас на брокере плавающий спред, расчет комиссии выполняется и устанавливается в момент работы функций Безубыток (установка стоплосса на точку безубыточности)и трейлингстопа, но спред может увеличиться, что понесет дополнительные пункты убытка. Это не является ошибкой расчета!Также стоит учитывать, что при возникновении свопа, советник пересчитывает линию Безубыток (установка стоплосса на точку безубыточности) и устанавливает новые стоплоссы, если сервер позволяет это сделать (Ограничение на минимальный стоп уровень у Вашего брокера StopLevel) . Если сервер не разрешает устанавливать безубыток и возвращает ошибку минимальных стоп уровней, советник не сможет модифицировать позицию и Вы можете получить дополнительные пункты убытка.Во избежания получения убытка при использовании счета с комиссией и при получении отрицательного свопа, рекомендуем Вам увеличить дистанцию Безубыток (установка стоплосса на точку безубыточности)или трейлингстопа.Уровень Безубыток (установка стоплосса на точку безубыточности) (LevelWLoss) можно рассчитать самостоятельно, учитывая комиссию.например: Комиссия за открытие и закрытие позиции = 2 доллара(EURUSD) на 1 лот. Значит, для того, чтобы покрыть убыток по комиссии, Вам необходимо установить LevelWLoss = 2(пункта)+1(контрольный) = 3 пункта.Таким образом: советник установит Безубыток (установка стоплосса на точку безубыточности) на +3 пункта , что в свою очередь покроет убыток по комиссии.
Close options Блок функций по закрытию позиций!
ClosePosifChangeЗакрывать позиции при обратном общем сигнале индикаторов.
Разница между ClosePosifChange и ClosePositionifChangeOWNSignal в том, что при ClosePosifChange – смена сигнала считается по всем фильтрам + основной сигнал.
а при ClosePositionifChangeOWNSignal – смена сигнала считается только по главному индикатору.
Работает также и для отложенных ордеров.
ClosePosition_After_X_MinutesЗакрытия позиции спустя установленное количество минут.
Также советник проверяет включенный параметр CloseChangeOnlyInProfit: Закрытие только прибыльных позиций.
CloseChangeOnlyInProfitзакрывать сделки при обратном сигнале, только когда текущая позиция вышла в прибыль.
Pending orders options Блок работы с отложенными и лимитными ордерами.
StopOrderUSEОткрывать отложенные ордера или лимитные ордера вместо позиций.
Позволяет устанавливать отложенный или лимитный ордер на полученный сигнал на расстоянии StopOrderDeltaifUSE пунктов. Тем самым мы перепроверяем сигнал на прибыльность.
Если сигнал открыт в правильном направлении движения цены, тогда отложенный ордер сработает через StopOrderDeltaifUSE пунктов.Use Virtual Stop Orders: Выставляет виртуальный отложенный стоп ордер на расстоянии StopOrderDeltaifUSE
пунктов;
Use Virtual Limit Orders: Выставляет виртуальный отложенный лимит ордер на расстоянии StopOrderDeltaifUSE
пунктов;
Внимание: Работает только в режиме Визуализации или на реальном графике, только при включенном терминале.
Не работает в режиме оптимизации!
StopOrderDeltaifUSEКоличество пунктов для отложенного или лимитного ордера
StopOrderDayToExpirationStopOrderDayToExpiration= количество дней для истечения ордера.0 – ORDER_TIME_GTC Ордер будет находится в очереди до тех пор, пока не будет снят1 – ORDER_TIME_DAY Ордер будет действовать только в течение текущего торгового дня2…X – ORDER_TIME_SPECIFIED Ордер будет действовать до даты истеченияЕсли отложенный ордер не сработал в течении указанных дней, то он автоматически удаляется.
StopOrderBarToExpirationИстечение отложенного ордера в барах.
Если задан StopOrderBarToExpiration=10, и ТФ = М1, тогда Отложенный ордер будет снят через 10 минут после установки.
Внимание: Каждый брокер имеет свой минимальный параметр времени для истечения.
ReInstallStopOrdersNewSignalAppearsПереустанавливать отложенные ордера, если появился новый сигнал от индиктаоров. Позволяет снимать текущий отложенный ордер BUYSTOP и устанавливать новый BUYSTOP на новом уровне тогда, тогда индикаторы показали новый сигнал.
Trading options Параметры для торговли
Magicмагический номер позиций, открываемых советником.
SlippageУровень максимально возможного проскальзывания в пунктах при открытии и закрытии позиций.
MarketWatchВключает возможность открытия позиций с стоплосс \ тейкпрофитом на счете с MARKET исполнением.
Первая открывается позиция, после успешного открытия модифицируются уровни стоплосс и тейкпрофит.
CommentToOrderДополнительный комментарий к открываемым позициям.
Вы можете указать здесь дополнительный комментарий, который будет добавлен к открываемой позиции для разграничения настроек .Внимание! Для корректной работы советника, устанавливайте комментарий не длинее , чем 12 символов.например:Правильно: ExpforexTheXНе правильно: Expforex The X Set #12345
RoundingDigitsКоличество знаков после запятой при открытии позиции или ордера.
Варианты выбора:Without roundingTo 1 digitTo 2 digits
TypeFillingТип заливки позиций и ордеров.
Используется для МТ5 терминала.
В режиме AUTO – советник пытается определить тип заливки автоматически. Но, в некоторых ситуациях Вам необходимо самому установить нужный тип заливки.
Если при открытии позиции Вы получаете ошибку 10030
TRADE_RETCODE_INVALID_FILL
Указан неподерживаемый тип исполнения ордера по остатку
Установите тот тип заливки, который указывает Ваш брокер.
FillOrKill ,ImmediateOrCancel ,Return
Stops options Параметры стоп приказов, стоплосс, тейкпрофит
VirtualStopsФункция включения виртуальных стоплосс\тейкпрофит\трейлингстопов вместо реальных.
Включение виртуальных (невидимых) уровней стоплосс\тейкпрофит\трейлингстоп\ Безубыток (установка стоплосса на точку безубыточности)
Полностью переработан алгоритм Виртуальных стоплосс\тейкпрофит\трейлингстоп\ Безубыток (установка стоплосса на точку безубыточности).
Теперь все виртуальные стопы отображаются на графике и являются ключевыми при закрытии позиций по этим уровням.
Данные записываются в виде линий и глобальных переменных.
Внимание: Если удалить линию стопа на графике и глобальные переменные – Виртуальное закрытие по это линии работать не будет.
Внимание: Проверьте Ваши эксперты и индикаторы на удаление линий с графика и глобальных переменных!
Внимание: Виртуальные уровни срабатывают по текущей цене, после чего происходит закрытие.
Во время закрытия могут быть проскальзывания в пару пунктов!
Внимание МТ4: В режиме оптимизации, виртуальный стоплосс\тейкпрофит не работает.
Внимание: При включении VirtualStops – скорость тестирования значительно ниже.Внимание: Виртуальные стопы не имеют ограничения и запреты сервера. Поэтому могут устанавливаться по текущей цене! После чего происходит моментальное закрытие.
SetMinStopsАвтоматически нормализовать все параметры советника до минимально допустимых уровней стопов.
При виртуальных стопах – этот параметр не имеет силы.
При AutoSetMinLevel уровни стопов будут приведены к минимально возможным уровням, разрешенным на сервере;
При ManualSet пользователь получит сообщение о том, что уровни стопов в советнике меньше минимального и советник перестанет торговать.
StopLossСтоплосс каждой открываемой позиции в пунктах
TakeProfitТейкпрофит каждой открываемой позиции в пунктах
ForcedModifySLTPПринудительная модификация позиций , установленным стполоссом и тейкпрофитом.Имеется ввиду, что советник будет модифицировать стоплосс и тейкпрофит всех своих позиций принудительно.Например: Если сервер брокера открыл сделку, но не вернул ее тикет, тогда эксперт принудительно проверит все свои позиции и если он обнаружит, что стоплосс или тейкпрофит позиции равен 0, советник принудительно установит стоплосс и тейкпрофит.
TimeToCheckAverageSpread– TimeToCheckAverageSpread Количество (миллисекунд, 20 000 = 20 секунд) для определения среднего спреда
– AutoCheckLowSpread Автоопределение низкого спреда.
Автоматически определяет слишком низкий спред (Меньше 1 пункта) и приводит все настройки системы к минимально возможному спреду.
Позволяет защитить систему от понижения спреда на брокере.Как использовать:
Для того, чтобы параметр, который рассчитывается в пунктах, был рассчитан по среднему спреду валютной пары, Вам необходимо указать параметр с знаком –
Например:
StopLoss = 2000 означает, что Стоплосс каждой позиции будет равен 2000 пунктов!
StopLoss = -100 означает, что Стоплосс каждой позиции будет равен 100*Средний спред, который был рассчитан советником за TimeToCheckAverageSpread миллисекунд.
Если спред = 20 пунктам, то стоплосс на момент открытия будет равен 2000 пунктов.
При плавающем спреде это значение всегда меняется.Параметры, доступные для установки в режиме спреда: Distance, DistanceAdditionalOpening, StopOrderDeltaifUSE, StopLoss, TakeProfit, TrailingStop, TakeProfitALL, StopLossALL, LevelWLoss, LevelProfit.Средний и текущий спред, а также уровень Автоопределения низкого спреда будет отображаться на нашей панели в разделе Strategy Info
Lots options Параметры работы с лотом позиций
LotsФиксированный лот для открытия позиции.
 AdditionalLots – Дополнительный лот, который будет добавлен к каждой новой сделке по новому сигналу
CoeficienteLots – Коэффициент лота, на который будет умножен лот к каждой новой сделке по новому сигналу
(При разрешении советнику открывать более одной позиции по каждому сигналу ONlyOnePosbySignal=false / OnePosPerDirection=false)
DynamicLotДинамический лот, Автолот для открываемой позиции.
Включение динамический расчет лота в процентах от свободной маржи и других факторов.
Расчет нашего автолота.
LotBalancePercentПроцент для автолота
RiskRateRiskRate – курс вашей валюты по отношению к доллару.
По умолчанию RiskRate = 0 – означает, что советник будет пытаться найти правильный курс в Обзоре рынка.
Для того чтобы автолот работал адекватно со всеми валютными парами, вам необходимо включить в Обзоре рынка “Показать все валютные пары”.
MaxLotМаксимальный лот, который может открыть советник при расчете автолота и мартингейла на первую главную позицию
MartinСтандартное умножение лота последней закрытой позиции в убытке.
Если Martin = 1, тогда мартингейл не включается.
Если Martin = 0, тогда советник не сможет открыть следующую позицию
Если Martin = 2, тогда первый лот = 0.1, второй лот = 0.2, и так далее, 0.4 – 0.8 – 1.6
Если Martin = 0.5, тогда первый лот = 1, второй лот = 0.5, и так далее, 0.25 – 0.125
Averager options Блок функций усреднения позиций, открытие позиций против тренда
UseAverAdditionalOpeningOrderinOneКоличество ордеров считается общее и для доливки и для усреднителя.Внимание! Только для МТ4 версии
AverageUSEВключение функции усреднения позиций.
Если Главная позиция уходит в убыток на определенное количество пунктов, наш советник открывает позицию такого же типа. Тем самым усредняя первую позицию.
Все функции советника (трейлингстоп, Безубыток (установка стоплосса на точку безубыточности)…) будут работать уже от средней линии позиций, которая рассчитывается от всех позиций одного типа.
Например:
Если открыта позиция SELL с ценой 1.200, и цена идет вверх. Тогда при превышении цены на 100 пунктов (например) 1.300 – советник открывает еще одну позицию SELL
Средняя линия от этих двух позиций = 1.250
Трейлингстоп и все остальные функции будут работать от средней линии этих двух позиций.
Внимание: При разных лотах позиций, средняя цена рассчитывается по математической формуле.
TakeProfitALLДистанция общего тейкпрофита при открытии сделок усреднения.
Данный параметр целесообразно использовать только при включении AverageUSE.
Устанавливает заданный тейкпрофит от текущей средней линии всех позиций для ВСЕХ позиций
Работает только тогда, когда открывается позиция усреднения
DistanceДистанция от последней открытой позиции одного типа для усреднения. Размер дистанции между позициями, ячейка сетки.
Вы можете установить 100 пунктов, тогда каждая новая позиция усреднения будет открываться через 100 пунктов убытка от последней открытой позиции
DistanceMartinкоэффициент увеличения дистанция при усреднении на каждую следующую сделку.
Вы можете установить 1,5, тогда каждая новая позиция усреднения будет открываться через 100 + 50 (100 * 1,5) пунктов потери от последней открытой позиции. (100,150,225,337,506)
LotsMartinУвеличение лота для сетки позиций. Коэффициент увеличения каждой позиции усреднения.
Например:
Начальный лот главной позиции = 0.1
LotsMartin=2, тогда
Следующий лот открываемой позиции усреднения будет 0.2, 0.4, 0.8 и так далее.
Внимание: Средняя линия при этом будет рассчитана по формуле с использованием лотов.
Позволяет приблизить уровень Безубыток (установка стоплосса на точку безубыточности) (средней линии) к текущей цене.
Но мартингейл может быть опасен для Вашего счета. Пожалуйста, рассчитывайте этот параметр так, чтобы Ваш депозит выдержал такую нагрузку
LotAdditional– добавочный лот для усреднения позиции для открытия против тренда.
MaxOrdersOpenМаксимальное количество позиций усреднений. Если сетка позиций будет равна MaxOrdersOpen, тогда следующие позиции усреднения игнорируются.
  
Additional opening Блок функций для дополнительного открытия позиций по тренду
AdditionalOpeningВключение функции открытия дополнительных позиций.
Если Главная позиция уходит в прибыль на определенное количество пунктов, наш советник открывает позицию такого же типа. Тем самым усредняя первую позицию.
Это помогает доливаться при прибыльном сигнале.
Все функции советника (трейлингстоп, Безубыток (точка безубыточности) …) будут работать уже от средней линии позиций, которая рассчитывается от всех позиций одного типа.
Например:
Если открыта позиция SELL с ценой 1.200, и цена идет вниз. Тогда при превышении цены на 100 пунктов (например) 1.100 – советник открывает еще одну позицию SELL
Средняя линия от этих двух позиций = 1.150
Трейлингстоп и все остальные функции будут работать от средней линии этих двух позиций.
Внимание: При разных лотах позиций, средняя цена рассчитывается по математической формуле.
StopLossALLДистанция общего стоплосса при открытии дополнительных сделок.
Данный параметр целесообразно использовать только при включении AdditionalOpening.
Устанавливает заданный стоплосс от текущей средней линии всех позиций для ВСЕХ позиций
Работает только тогда, когда открывается позиция доливки
DistanceAdditionalOpeningДистанция от последней открытой позиции одного типа для доливок. Размер дистанции между позициями, ячейка сетки.
Вы можете установить 100 пунктов, тогда каждая новая позиция доливок будет открываться через 100 пунктов прибыли от последней открытой позиции
LotsMartinAdditionalOpeningУвеличение лота для сетки позиций. Коэффициент увеличения каждой позиции доливок.
Например:
Начальный лот главной позиции = 0.1
LotsMartin=2, тогда
Следующий лот открываемой позиции доливок будет 0.2, 0.4, 0.8 и так далее.
Внимание: Средняя линия при этом будет рассчитана по формуле с использованием лотов.
Позволяет приблизить уровень Безубыток (точка безубыточности) (средней линии) к текущей цене.
Но мартингейл может быть опасен для Вашего счета. Пожалуйста, рассчитывайте этот параметр так, чтобы Ваш депозит выдержал такую нагрузку
LotAdditionalOpening– добавочный лот для добавочной позиции для добавочного открытия по тренду.
MaxOrdersOpenAdditionalOpeningМаксимальное количество позиций доливок. Если сетка позиций будет равна MaxOrdersOpen, тогда следующие позиции доливок игнорируются
  
Time Trade options Блок работы с временем торговли, ограничение по времени.
TradeStartStopbyTimeФункция работы по времени.
Если TradeStartStopbyTime = false, тогда советник торгует круглосуточно.
Если TradeStartStopbyTime = true, тогда включается время торговли:
SeveralTimeWorkВы также можете задать несколько временных отрезков для торговли в параметре SeveralTimeWork. Формат записи: ЧЧ:ММ-ЧЧ:ММ;
где: Час старта торговли:Минута старта торговли – Част стоп торговли: Минута стоп торговли.
Например, SeveralTimeWork=3:00-5:00;7:30-8:50;12:00-15:00;
тогда советник будет торговать 3 отрезка времени. с 3 часов до 5 часов, с 7:30 до 8:50 и с 12:00 до 15:00. Все остальное время советник не будет открывать новые сделки.
OpenHour OpenMinuteСоветник проверяет время торговли по параметрам: OpenHour:OpenMinute – начало торговли и CloseHour:CloseMinute – конец торговли за 1 сутки.
Например: OpenHour=5 и OpenMinute=0, а также CloseHour=18 и CloseMinute=59, тогда советник будет торговать каждый день с 5:00 до 18:59.
ClosePeriod_MinuteЕсли Вы хотите задать период торговли от начального времени, Вы можете задать параметр ClosePeriod_Minute – период в минутах.
Например, OpenHour=6 и OpenMinute=0 и ClosePeriod_Minute=180, тогда советник устанавливает время торговли с 6:00 до 9:00(6+180 минут = 9 часов).
CloseAllTradesByOutOfTimeТакже Вы можете закрыть все открытые сделки и отложенные ордера в нерабочее время, CloseAllTradesByOutOfTime=true.
При этом советник будет торговать в установленное выше время, а когда время торговли закончится – советник будет закрывать все открытые позиции и ордера.- Not Use = Не использовать функцию
– Positions and Orders = Закрывать позиции и отложенные ордера
– Only Positions = Закрывать только позиции
– Only Orders = Закрывать только отложенные ордера
TradeByDaysВ нашем блоке работы по времени ВЫ можете задать Торговые дни для торговли: TradeByDays
Например, TradeByDays=true Days=1,2,3 – в таком случае советник будет торговать только в понедельник, вторник и среду по установленному выше времени. Или торговать круглосуточно эти 3 дня, если время не установлено.
Если ВЫ указали Days=1,2,3,4,5 но параметр TradeStartStopbyTimeFriday=false, советник не будет торговать в пятницу.
DayForOptimizationТакже ВЫ можете задать 1 день для оптимизации в параметре DayForOptimization.
Эта опция полезна для того, чтобы определить в какие дни на оптимизации были самые прибыльные.
например, DayForOptimization = 3, тогда советник будет торговать только по средам.
TradeStartbyTimeMondayСоветник начинает работать в понедельник, если задано TradeStartbyTimeMonday=true по времени OpenHourMonday:OpenMinuteMonday
Например, OpenHourMonday=3 и OpenMinuteMonday=40, тогда советник начинает торговать в понедельник в 03:40 по времени сервера
(время Вашего брокера, указывается в обзоре рынка).
TradeStartStopbyTimeFridayТорговое время для пятницы.
В нашем советнике ВЫ можете задать время торговли советника в пятницу.
Параметры времени для пятницы: OpenHourFriday:OpenMinuteFriday – CloseHourFriday:CloseMinuteFriday
Например, Вам нужно, чтобы советник не открывал новых сделок в пятницу после 18:00, тогда ВЫ устанавливаете:
OpenHourFriday=0:OpenMinuteFriday=0 – CloseHourFriday=18:CloseMinuteFriday=0
В таком случае, советник не будет открывать новые сделки после 18 : 00
CloseFridayТакже Вы можете закрыть все открытые сделки и отложенные ордера в пятницу в установленное время 18:00, CloseFriday=true.
BreakEven WithoutLOSS options Блок работы с безубытком (Установка стоплосса в безубыток в определенный момент)
MovingInWLUSEВключить функцию Безубыток (установка стоплосса на точку безубыточности) на открытые позиции.
Внимание: Если включена функция усреднения или доливок, то при открытии 2-х и более позиций, советник включает функцию Безубыток (установка стоплосса на точку безубыточности) от средней линии, а не от цены открытия позиций
LevelWLossУровень прибыли в пунктах, на который устанавливается стоплосс при включении данной функции.Дистанция от цены открытия до прибыльного стоплосса1 = 1 пункт прибыли0 = Автоматический режим минимальной прибыли. Количество пунктов прибыли для Безубыток (установка стоплосса на точку безубыточности) = Спред текущей валютной пары.
LevelProfitКоличество пунктов прибыли, набранной позицией для установки стоплосса в LevelWLoss пунктов прибылиLevelProfit должен быть больше чем LevelWLoss
Standard Trailing options Стандартный трейлингстоп (Сопровождение позиций, путем модификации стоплосса в прибыль!)
TrailingStopUSEВключение функции стандартного трейлингстопа.
Внимание: Если включена функция усреднения или доливок, то при открытии 2-х и более позиций, советник включает функцию трейлингстопа от средней линии, а не от цены открытия позиций
IfProfTrailпри true Советник начинает модификацию только с момента выхода позиции в Безубыток (установка стоплосса на точку безубыточности) + TrailingStop пунктов прибыли. при false – тралингстоп начинает работать сразу после выставления позиции и выходе позиции в прибыль и тянет его вслед за ценой
TrailingStopДистанция трейлингстопа в пунктах
TrailingStepШаг изменения стоплосса при трейлингстопе в пунктах
SaveTPafterTrailingStopПри включении которой, тейк-профит модифицированных позиций будет сохраняться на своем месте.
Например:
SaveTPafterTrailingStop = false: При выполнении трейлинг-стопа, тейк-профит модифицированной позиции будет удален;
SaveTPafterTrailingStop = true: При выполнении трейлинг-стопа, тейк-профит модифицированной позиции будет сохранен.
TrailingStop by SAR Блок трейлингстопа по Параболику (установка и модификация стоплосса по точкам индикатора Parabolic SAR)
TrailingStopSARВключить функцию трейлингстопа по индикатору Parabolic SAR.
Внимание, если показатель индикатора в убытке для позиции, советник ждет пока точка параболика не будет в прибыли для позиции.
Если у нас открыто 2 и более позиции усреднителя, то Безубыток (установка стоплосса на точку безубыточности) считается от средней линии совокупных позиций.
TrailingStopSAR_TimeFrameТаймфрейм
step maximumНастройки
CloseALL when Profit or LOSS options Блок закрытия по общей прибыли или убытку
TypeofCloseТип закрытия по общей прибыли или убытку, в долларах (валюта депозита), пунктах, процентах от баланса, процентах эквити.Блок позволяет закрывать все позиции по данному символу, если общая прибыли или убыток всех позиций, равен установленному значению.
SeparateBuySellРаздельный расчет и закрытие позиций по двум разным направлениям BUY и SELL.
Данная функция раздельно закрывает два напрвления по общей прибыли или убытку.
Актуально, Если ONlyOnePosbySignal=false и OnePosPerDirection=false.
Или любые настройки, которые позволяют открывать больше одного направления и больше одной позиции в направлении.
CloseProfitЗакрывать позиции при общей прибыли. True – разрешить, False – запретить
prifitessssКоличество юнитов (долларов (валюта депозита), пунктов, процентов) для закрытия.Если общая прибыль по позициям валютной пары будет больше или равно , чем значение prifitessss, тогда все позиции будут закрыты.
CloseLossЗакрывать позиции при общему убытку.
lossssКоличество юнитов (долларов (валюта депозита), пунктов, процентов) для закрытия.
TrailOptionsВключать трейлинг общей прибыли при превышении prifitessss юнитов .
Данная опция означает дистанцию от параметра prifitessss для включения трейлинга прибыли.
Например: prifitessss = 100 долларов (валюта депозита) TrailOptions=10 долларов тогда,
когда позиции наберет прибыль в 100 долларов, советник не закроет эти позиции, а установит уровень прибыли на 90 долларов. Далее, если прибыль увеличится на 1 доллар и станет 101 доллар, уровень прибыль зафиксируется на 91 доллар.
Если прибыль пойдет вниз и достигнет 91 доллар – все позиции закроются на этом уровне.
TrailOptionsStepШаг увеличения зафиксированного уровня прибыли
BalanceStartСтартовый баланс, от которого будет рассчитываться процент от баланса. Если 0 = тогда устанавливается текущий баланс счета.
ForcedCloseПринудительное закрытие всех позиций после получения общей прибыли или убытка
MailSendОтправить почту при закрытии
OrderdeleteУдалять отложенные ордера при закрытии позиций
OFFAfterClosePROFОтключать советника после закрытия по  прибыли
OFFAfterCloseLOSSОтключать советника после закрытия по убытку
CloseTerminalAfterClosePROFЗакрывать терминал после закрытия по  прибыли
CloseTerminalAfterCloseLOSSЗакрывать терминал после закрытия по убытку
DrawDown options Блок управления открытием позиций при просадке
DrawDown_Level
DrawDown_Level – включить блок управления просадкой
Type_DrawDownHR – тип расчета просадки на основе сделок в истории и текущих сделок
DrawDown_Level_One – первый уровень просадки в процентах
Type_Deal_Level_One – действие при прохождении первого уровня просадки (отключить новые сигналы \ отключить усреднение сделок или дополнительное открытие \ отключить все сделки \ вывести сообщение)
DrawDown_Level_Two – второй уровень просадки в процентах
Type_Deal_Level_Two – действие при прохождении второго уровня просадки (закрыть все выгодные позиции \ закрыть все убыточные позиции \ закрыть все \ вывести сообщение)

Например:
DrawDown_Level = true, DrawDown_Level_One = 50, Type_Deal_Level_One = No_NewDeal, DrawDown_Level_Two = 90, Type_Deal_Level_Two = Close_All. С этими настройками, как только текущая просадка сделок в истории и текущих сделках превышает уровень 50% текущего депозита, EA не может открывать новые сделки по новым сигналам. В то же время функции усреднения будут работать. Когда просадка превышает 90%, EA немедленно закрывает все сделки.
Withdrawal Блок виртуального снятия средств в тестере стратегий для имитации работы с депозитом
OnTester_Custom_maxВ блок Tester добавлена переменная OnTester_Custom_max, в которой можно записать свой критерий генетической
оптимизации.
Подробнее о результатах тестирования: Статистика
Запись в виде формулы. Например:OnTester_Custom_max=”STAT_PROFIT*STAT_TRADES/STAT_EQUITY_DD” Обязательно указание имен переменных, как в справочнике!
Withdrawalблок Виртуального снятия средств в тестере:

Withdrawal – Включение виртуального снятия средств при тестировании в тестере стратегий;
Withdrawal_mode – режим снятия, в валюте депозита , в процентах от текущего баланса (currency/percentage);
Withdrawal_amount – Количество средств для снятия;
Withdrawal_periodicity_days – Периодичность снятия в днях;
Withdrawal_Max – Максимальная сумма снятия;
Withdrawal_EndOfTest – Снятие средств после окончания тестирования;

Пример работы советника по индикатору PipFinite

Файл шаблона индикатора

Для удобства использования советника:

При первом запуске советника, будет создан файл шаблона индикатора в папке Вашего терминала Files

Этот файл можно использовать как шаблон для написания стратегии по индикатору.

Для того, чтобы найти файл, нажмите в Вашем терминале меню Файл – Открыть каталог данных

Откройте этот файл с помощью Вашего компилятора

В файле Вы увидите примеры использования и шаги программирования стратегии.

После создания стратегии по индикатору – сохраните этот файл в папке Вашего терминала – Indicators/

После этого укажите этот файл в настройках советника SignalNameIndicator

Программирование своей стратегии

Вы должны знать минимальные правила программирования для того, чтобы написать свою стратегию Или добавить готовую стратегию по индикаторам с готового файла (индикаторы с интернета, например)

Программирование советников для MetaTrader 5 сложнее, чем программирование для MetaTrader 4. Но терминал МТ5 позволяет создать более мощные стратегии, а также обладает более продвинутым тестером стратегий.

Для простоты программирования

  1. Откройте наш исходный код индикатора Ind – The xCustomEA или Ind – The xCustomEA Example TheX,;
  2. Нажмите сочетание клавиш Ctrl+F и вы увидите строку поиска;
  3. Введите название Step MT4 или Step MT5- По этому слову, в нашем исходном коде, Вы сможете ориентироваться и быстро написать свою стратегию.
  4. Каждый шаг комментирован и содержит пример
  5. Для того,чтобы научиться программировать свою стратегию, Вы можете поэтапно раскомментировать строки с звездочкой //*

Мы разберем каждый шаг подробно!

MetaTrader 4 Программирование своей стратегии по пользовательскому индикатору в МТ4

Программирование советника по индикатору в МТ4:

MetaTrader 4 Шаг 0: Шаг указания внешних переменных

// Step MT4 0
// Step MT5 0
// Вы можете объявить здесь свои внешние переменные, которые будут использоваться в советнике!
// Внимание! Порядок и тип переменных задается в строгом соответствии с вызовом в советнике в параметрах
// SIGNALStrategyInputs CloseStrategyInputs SLTPStrategyInputs FILTERStrategyInputs
//
// You can declare your external variables here that will be used in the advisor!
// Attention! The order and type of variables is set in strict accordance with the call in the expert in the parameters
// SIGNALStrategyInputs CloseStrategyInputs SLTPStrategyInputs FILTERStrategyInputs

// for example:
// input int InpCCIPeriod=1;
// input double InpCCIPeriod2=2.0;
// input color InpCCIPeriod3=clrGreen;
// input string InpCCIPeriod6=”text”;
// input datetime InpCCIPeriod4=2018.11.08;
// input bool InpCCIPeriod5=false;
// =========================================================================
// В советнике эти параметры должны быть записаны как:
// In the expert advisor, these parameters should be written as:
// StrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,false
//

MetaTrader 4 Шаг 1: Шаг загрузки индикаторов в ресурсы!

// Step MT4 1 
// Step MT5 1 
// Для того,чтобы при компиляции, индикатор был встроен в советник, Вам необходимо загрузить его в ресурсы советника
// In order for the indicator to be built into the Expert Advisor during compilation, you need to load it into the resources of the Expert Advisor
// for example:
//* #resource "\Indicators\Market\Examples.ex5"

Здесь мы обязаны добавить , нужные Нам, индикаторы в ресурсы.

Это позволит компилировать индикатор для маркета , а также избавит нас от лишних проблем, когда компилированный советник вдруг не найдет нужный индикатор на другом компьютере!

Правила написания имени маркета: Полное название папок, начиная с Indicators!

Папка обозначается \\

Например:

Если путь к Вашему индикатору выглядит так:

C:\ROBO MT4\MQL4\Indicators\Examples\MACD.ex4

тогда путь к этому индикатору в языке программирования записывается так:

“\\Indicators\\Examples\\MACD.ex4

MetaTrader 4 Шаг 3: Здесь мы указываем массивы буферов, для хранения данных от индикаторов

// Step MT4 3
// Step MT5 3
// обьявите переменную массива значений индикатора
// Declare the variable of the handle array
// for example:

double custom_buffer_for_Open_BUY[];
double custom_buffer_for_Open_SELL[];
double custom_buffer_for_Close_BUY[];
double custom_buffer_for_Close_SELL[];
double custom_buffer_for_Filter_BUY[];
double custom_buffer_for_Filter_SELL[];
double custom_buffer_for_SL_BUY[];
double custom_buffer_for_SL_SELL[];
double custom_buffer_for_TP_BUY[];
double custom_buffer_for_TP_SELL[];

MetaTrader 4 Шаг 5: Шаг для заполнения массивом данными от нашего индикатора

// Step MT4 5
// Здесь создаем наш сигнал для открытия позиций. Заполняем буферы данных
// Here we create our signal for opening positions. Fill in the data buffer

#ifdef __MQL4__
ArrayResize(custom_buffer_for_Open_BUY,3+ShiftIndicator);
ArrayResize(custom_buffer_for_Open_SELL,3+ShiftIndicator);
for(int inum=0;inum!3+ShiftIndicator; inum++)
{
custom_buffer_for_Open_BUY[inum]=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,/* Здесь можно вставить настройки индикатора, через запятую*/SignalBuferforBUY,StartCopyI+inum);
custom_buffer_for_Open_SELL[inum]=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,/* Здесь можно вставить настройки индикатора, через запятую*/SignalBuferforSELL,StartCopyI+inum);
}
#endif

MetaTrader 4 Шаг 6: Главный шаг создания стратегии и сигналов для открытия позиций!

// Step MT4 6 
// Step MT5 6 
// Здесь создаем наш сигнал для открытия позиций. Здесь пишем нашу стратегию,
// Here we create our signal for opening positions. Here we write our strategy,
if(custom_buffer_for_Open_SELL[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_SELL[ShiftIndicator]!=0)
sig=-1;
else
if(custom_buffer_for_Open_BUY[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_BUY[ShiftIndicator]!=0)
sig=1;
else sig=0;

Этот шаг очень важен для советника. Хотя и все остальные шаги обязательны, иначе советник не будет работать.

Свои комментарии я указал в коде!

  1. Программирование кода для стратегии и сигнала индивидуально. Зависит от выбранной стратегии и индикаторов. Получения буферов, стратегии……..
  2. Хочу заметить лишь то, что в этом блоке Вы можете указывать любую стратегию.
  1. 1. Программирование стратегии. В данном случае это пересечение двух линий.
  2. Важно: Сигнал для BUY это 1, а для SELL это -1

Примеры стратегий я буду публиковать на нашем форуме!

MetaTrader 4 Шаг 7: Шаг для указание фильтров от ваших индикаторов, или использование вашего индикатора как фильтр для стратегии!

// Step MT4 7 
// Здесь создаем наш фильтр для фильтрации сигналов. Заполняем буферы данных
// Here we create our filter for signal filtering. Fill in the data buffers
// 
#ifdef __MQL4__
ArrayResize(custom_buffer_for_Filter_BUY,3+ShiftIndicator);
ArrayResize(custom_buffer_for_Filter_SELL,3+ShiftIndicator);
for(int inum=0;inum!3+ShiftIndicator; inum++)
{
custom_buffer_for_Filter_BUY[inum]=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,/* Здесь можно вставить настройки индикатора, через запятую*/FilterBuferforBUY,StartCopyI+inum);
custom_buffer_for_Filter_SELL[inum]=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,/* Здесь можно вставить настройки индикатора, через запятую*/FilterBuferforSELL,StartCopyI+inum);
}
#endif

MetaTrader 4 Шаг 8: Создание сигналов для фильтрации сигналов!

В программировании кода на этом шаге нет ничего сложного и он похож на предыдущий шаг.

Отличие лишь в том, что на этом шаге Вы программируете свои индикаторы в роли Фильтра.

Вы можете не указывать сигналы по индикатору, а указать только фильтр. Или наоборот! Все зависит от стратегии.

// Step MT4 8
// Step MT5 8
// Здесь создаем наш фильтр для фильтрации сигналов. Здесь пишем нашу стратегию,
// Here we create our filter for signal filtering. Here we write our strategy,

if(custom_buffer_for_Filter_SELL[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Filter_SELL[ShiftIndicator]!=0)
sig=-1;
else
if(custom_buffer_for_Filter_BUY[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Filter_BUY[ShiftIndicator]!=0)
sig=1;

else sig=0;

Все остальные шаги созданы для сигналов закрытия позиций по индикатору (Шаг 9 – 10) и получения пользовательских стоплосс и тейкпрофита от индикатора (Шаг 11-12)

MetaTrader 5 Программирование своей стратегии по пользовательскому индикатору в МТ5

MetaTrader 5 Шаг 0: Шаг загрузки индикаторов в ресурсы!

// Step MT4 0
// Step MT5 0
// Вы можете объявить здесь свои внешние переменные, которые будут использоваться в советнике!
// Внимание! Порядок и тип переменных задается в строгом соответствии с вызовом в советнике в параметрах
// SIGNALStrategyInputs CloseStrategyInputs SLTPStrategyInputs FILTERStrategyInputs

// You can declare your external variables here that will be used in the advisor!
// Attention! The order and type of variables is set in strict accordance with the call in the expert in the parameters
// SIGNALStrategyInputs CloseStrategyInputs SLTPStrategyInputs FILTERStrategyInputs
// for example:
// input int InpCCIPeriod=1;
// input double InpCCIPeriod2=2.0;
// input color InpCCIPeriod3=clrGreen;
// input string InpCCIPeriod6=”text”;
// input datetime InpCCIPeriod4=2018.11.08;
// input bool InpCCIPeriod5=false;
// В советнике эти параметры должны быть записаны как:
// In the expert advisor, these parameters should be written as:
// SIGNALStrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,false
// CloseStrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,false
// SLTPStrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,false
// FILTERStrategyInputs=1,2.0,C’0/128/0′,”text “,D’2018.11.08′,false

 

MetaTrader 5 Шаг 1: Шаг загрузки индикаторов в ресурсы!

// Step MT4 1 
// Step MT5 1 
// Для того,чтобы при компиляции, индикатор был встроен в советник, Вам необходимо загрузить его в ресурсы советника
// In order for the indicator to be built into the Expert Advisor during compilation, you need to load it into the resources of the Expert Advisor
// for example:
//* #resource "\Indicators\Market\Examples.ex5"

Здесь мы обязаны добавить , нужные Нам, индикаторы в ресурсы.

Это позволит компилировать советник для маркета , а также избавит нас от лишних проблем, когда компилированный советник вдруг не найдет нужный индикатор на другом компьютере!

Правила написания имени маркета: Полное название папок, начиная с Indicators!

Папка обозначается \\

Например:

Если путь к Вашему индикатору выглядит так:

C:\ROBO MT5\MQL5\Indicators\Examples\MACD.ex5

тогда путь к этому индикатору в языке программирования записывается так:

“\\Indicators\\Examples\\MACD.ex5”

MetaTrader 5 Шаг 2: Шаг объявления переменных для хранения хендлов индикаторов стратегии!

// Step MT5 2 
// Только для МТ5
// обьявите переменную массива хендлов
// Declare the variable of the handle array

// for example:
int h_custom_for_Open;
int h_custom_for_Close;
int h_custom_for_Filter;
int h_custom_for_SLTP;

Здесь мы просто указываем названия наших хендлов, которые создавали выше!

Сложного здесь ничего нет.

Хендлы создаются в виде массивов для того, чтобы использовать мультивалютность в советнике и использоваться возможность указания сразу 6 сигналов или фильтров!

MetaTrader 5 Шаг 3: Шаг объявления переменных для хранения данных индикаторов!

// Step MT4 3 
// Step MT5 3 
// обьявите переменную массива значений индикатора
// Declare the variable of the handle array

// for example:
double custom_buffer_for_Open_BUY[];
double custom_buffer_for_Open_SELL[];
double custom_buffer_for_Close_BUY[];
double custom_buffer_for_Close_SELL[];
double custom_buffer_for_Filter_BUY[];
double custom_buffer_for_Filter_SELL[];
double custom_buffer_for_SL_BUY[];
double custom_buffer_for_SL_SELL[];
double custom_buffer_for_TP_BUY[];
double custom_buffer_for_TP_SELL[];

Здесь мы просто указываем названия наших данных для буферов!

Сложного здесь ничего нет.

В этих массивах будут хранится данные о значениях индикатора на каждом баре. Если Вам нужно использовать несколько буферов, Вы можете использовать несколько переменных.

В нашем случае, для примера, нам нужно 2 буфера, для сигнальной и главной линии индикатора MACD

MetaTrader 5 Шаг 4: Шаг создания хендлов индикаторов, для загрузки в советник!

// Step MT5 4 
// Только для МТ5
// Вам необходимо создать запись в массиве для того, чтобы советник присвоил хендл индикатора при инициализации
// Если необходимо указать внешние переменные индикаторы, то это можно сделать после IndicatorName через запятую,
// например:
// h_custom_for_Open=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,InpCCIPeriod,InpCCIPeriod2,InpCCIPeriod3,InpCCIPeriod6,InpCCIPeriod4,InpCCIPeriod5);
// 
// You need to create an entry in the array in order for the Expert Advisor to assign an indicator handle when initializing
// If you need to specify external variable indicators, this can be done after IndicatorName, separated by commas
// eg:
// h_custom_for_Open = iCustom (StrategySymbolString, StrategyTimeFrame, IndicatorName, InpCCIPeriod, InpCCIPeriod2, InpCCIPeriod3, InpCCIPeriod6, InpCCIPeriod4, InpCCIPeriod5);

// for example:
 case 1:
 // Если нужно указать индикатор для открытия позиций
 if(h_custom_for_Open!=0)
 h_custom_for_Open=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Open==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для закрытия позиций
 if(h_custom_for_Close!=0)
 h_custom_for_Close=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Close==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для фильтрации позиций
 if(h_custom_for_Filter!=0)
 h_custom_for_Filter=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Filter==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для стоплосса и тейкпрофита
 if(h_custom_for_SLTP!=0)
 h_custom_for_SLTP=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_SLTP==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 break;

Этот шаг нужен для того, чтобы наши индикаторы загружались 1 раз при инициализации советника. В MetaTrader 5 нет необходимости в том, чтобы постоянно загружать индикатор на график.

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

Здесь нужно быть очень внимательным. При создании хендла мы должны указать все внешние переменные индикатора и указать правильное имя, иначе советник не сможет загрузить индикатор.

Помните, что мы загрузили индикатор в ресурсы советника. Поэтому вызывать индикатор мы будем из ресурсов!

Вы можете почитать справку о вызове индикаторов через iCustom

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

По нашим примерам выше нам нужно сделать так:

 case 1:
 // Если нужно указать индикатор для открытия позиций
 if(h_custom_for_Open!=0)
 h_custom_for_Open=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Open==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для закрытия позиций
 if(h_custom_for_Close!=0)
 h_custom_for_Close=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Close==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для фильтрации позиций
 if(h_custom_for_Filter!=0)
 h_custom_for_Filter=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_Filter==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 // Если нужно указать индикатор для стоплосса и тейкпрофита
 if(h_custom_for_SLTP!=0)
 h_custom_for_SLTP=iCustom(StrategySymbolString,StrategyTimeFrame,"");
 if(h_custom_for_SLTP==INVALID_HANDLE){Print(" Failed to get indicator handle | Не удалось получить хендл индикатора");return;}

 break;

По аналогии выше, Вы можете добавить несколько индикаторов и хендлов.

Также и с другими стратегиями, которые вы хотите вставить в советника!

MetaTrader 5 Шаг 5: Главный шаг создания стратегии и сигналов для открытия позиций!

// Step MT5 5 
// Здесь создаем наш сигнал для открытия позиций. Заполняем буферы данных
// Here we create our signal for opening positions. Fill in the data buffer
// 
#ifdef __MQL5__
if(xCustomCopyBufferMT5(h_custom_for_Open,SignalBuferforBUY,StartCopyI,3+ShiftIndicator,custom_buffer_for_Open_BUY)!3+ShiftIndicator)return(0);
if(xCustomCopyBufferMT5(h_custom_for_Open,SignalBuferforSELL,StartCopyI,3+ShiftIndicator,custom_buffer_for_Open_SELL)!3+ShiftIndicator)return(0);
#endif

// Step MT4 6
// Step MT5 6
// Здесь создаем наш сигнал для открытия позиций. Здесь пишем нашу стратегию,
// Here we create our signal for opening positions. Here we write our strategy,

if(custom_buffer_for_Open_SELL[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_SELL[ShiftIndicator]!=0)
sig=-1;
else
if(custom_buffer_for_Open_BUY[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_BUY[ShiftIndicator]!=0)
sig=1;
else sig=0;

Этот шаг очень важен для советника. Хотя и все остальные шаги обязательны, иначе советник не будет работать.

Свои комментарии я указал в коде!

Номер стратегии у нас такой же как и в первых шагах!

  1. Программирование кода для стратегии и сигнала индивидуально. Зависит от выбранной стратегии и индикаторов. Получения буферов, стратегии……..
  2. Хочу заметить лишь то, что в этом блоке Вы можете указывать любую стратегию.
  3. Все индикаторы, которые мы объявили в хендлах, будут загружены в память и использоваться для построения стратегии.

Этот шаг можно разделить на 2 подшага:

  1. 1. Мы обязаны скопировать буферы данных в наши массивы данных. В параметрах копирования мы должны указать номера линий (В нашем случае это линии индикатора MACD )
  2. Мы используем две линии MAIN и SIGNAL
  3. Вы можете почитать справку о функции CopyBuffer
  4. 2. Программирование стратегии. В данном случае это пересечение двух линий.
  5. Важно: Сигнал для BUY это 1, а для SELL это -1

MetaTrader 5 Шаг 7: Шаг для указание фильтров от ваших индикаторов, или использование вашего индикатора как фильтр для стратегии!

 // Step MT5 7 
// Здесь создаем наш фильтр для фильтрации сигналов. Заполняем буферы данных
// Here we create our filter for signal filtering. Fill in the data buffers
#ifdef __MQL5__
if(xCustomCopyBufferMT5(h_custom_for_Filter,FilterBuferforBUY,StartCopyI,3+ShiftIndicator,custom_buffer_for_Filter_BUY)!3+ShiftIndicator)return(0);
if(xCustomCopyBufferMT5(h_custom_for_Filter,FilterBuferforSELL,StartCopyI,3+ShiftIndicator,custom_buffer_for_Filter_SELL)!3+ShiftIndicator)return(0);
#endif

// Step MT4 8
// Step MT5 8
// Здесь создаем наш фильтр для фильтрации сигналов. Здесь пишем нашу стратегию,
// Here we create our filter for signal filtering. Here we write our strategy,

if(custom_buffer_for_Filter_SELL[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Filter_SELL[ShiftIndicator]!=0)
sig=-1;
else
if(custom_buffer_for_Filter_BUY[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Filter_BUY[ShiftIndicator]!=0)
sig=1;

else sig=0;

В программировании кода на этом шаге нет ничего сложного и он похож на предыдущий шаг.

Отличие лишь в том, что на этом шаге Вы программируете свои индикаторы в роли Фильтра.

Вы можете не указывать сигналы по индикатору, а указать только фильтр. Или наоборот! Все зависит от стратегии.

Все остальные шаги созданы для сигналов закрытия позиций по индикатору (Шаг 9 – 10) и получения пользовательских стоплосс и тейкпрофита от индикатора (Шаг 11-12)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

This website uses cookies to improve your experience. By using this website you agree to our Data Protection Policy.
Read more