10 шагов для программирования своей стратегии!

EA SUPER TESTER Многопоточная программа тестирования для Expert Advisor.
EA SUPER TESTER Многопоточная программа тестирования для Expert Advisor.

Описание

The X — это конструктор торговых стратегий.

Мы разработали Универсальный советник, который охватывает все самые интригующие и важные функции.

Кроме того, был встроен сигнальный модуль, использующий стандартные индикаторы.

Это конструктор стратегий, позволяющий вам запрограммировать собственную стратегию.

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

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

Открытый исходный код

Часто задаваемый вопрос, который мы получаем:

  1. Могу ли я интегрировать свои индикаторы в советник?
  2. Сколько стоит открытый исходный код советника?

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

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

  1. Открытый исходный код советника The X можно приобрести в нашем Маркете торговых советников.
  2. Открытый исходный код The X для MetaTrader 5 (Недоступно)
  3. Открытый исходный код The X для MetaTrader 4 (Недоступно)
  4. Кстати, у нас много открытых исходных кодов для наших советников. Раздел: Стратегические советники (Открытый исходный код)
  5. Попробуйте наши Шаблоны с открытым исходным кодом.
https://expforex.com/ru/templates/

Программирование советников с индикаторами — сложный процесс.

Мы предлагаем услуги по программированию торговых советников. Однако процесс разработки часто сталкивается с задержками, поскольку клиенты не уверены в функциях, которые им требуются.

The X — это набор блоков и функций для торговли на рынке FOREX, используемый во всем мире. Мы разработали функции, которые часто используются, что позволяет советнику удовлетворять 90% потребностей каждого трейдера.

Естественно, существуют уникальные стратегии, которые должны разрабатывать опытные программисты.

Такие стратегии редки и требуют тщательной подготовки. Стоимость этой работы зависит от ее сложности.

Реальная ценность нашего советника

Начиная с нашей статьи о стоимости работы программиста, мы можем оценить приблизительную стоимость нашего торгового робота The X:

Наш советник (EA) содержит более 10 000 строк кода. Хотя это может показаться обширным, это управляемо, потому что мы не пишем советники с использованием PL/SQL (Язык программирования/Язык структурированных запросов). Почему? Потому что OOP (Объектно-ориентированное программирование) многим незнакомо, а работа с OOP может быть довольно сложной!

Итак, давайте посчитаем:

  1. Стоимость 1 часа работы программиста = $20 при программировании функций и алгоритмов.
  2. Стоимость 1 часа исправления ошибок = $5.
  3. Стоимость написания текстов и видео = $10 (Эта цена основана на интернет-тарифах; я сам создаю все инструкции и видео).
  4. Предположим, что написание функций и блоков для The X заняло более 1000 часов!
  5. Программирование сигналов с использованием индикаторов — это просто. Поэтому мы предполагаем, что это заняло у нас 10 часов!

Однако некоторые аспекты не могут быть завершены немедленно:

  1. Отладка функций может занять дополнительно 1000 часов!
  2. Разработка инструкций, видео и продвижение также требуют 1000 часов!

В общей сложности мы вложили более 3000 часов!

Если бы нам заказали такой алгоритм, мы бы отказались. Это не разумно и не выгодно.

Общая стоимость такого заказного советника превышает $35 000! Однако наш советник продается по цене в десять раз ниже!!!!

Стоимость нашего открытого исходного кода в ДЕСЯТЬ раз меньше!

Такие заказные работы никогда не выполняются:

  1. Во-первых, потому что клиенты не желают вкладывать такую значительную сумму денег.
  2. Во-вторых, программисты не хотят посвящать столько времени разработке.

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

Отладка всех блоков и функций требует длительного времени.

Мы чрезвычайно благодарны нашим клиентам, которые выявляли ошибки и предоставляли исправления в течение последних пяти лет, а также вносили свои функции и индикаторы для расширения функциональности советника THE X.

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

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

Вам не нужно вникать в каждую функцию подробно. Вы можете запрограммировать свою стратегию всего за 10 шагов.

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

Помните: Мы не программируем стратегии для советника бесплатно. Если вы хотите разработать код для своей стратегии, пожалуйста, обратитесь в раздел Программирование, чтобы разместить заказ!

Первые шаги:

  1. Откройте открытый исходный код советника, который вы приобрели в нашем Маркете советников;
  2. Нажмите Ctrl + F, чтобы активировать панель поиска;
  3. Введите термин Step – Это ключевое слово поможет вам ориентироваться в нашем исходном коде и быстро написать свою стратегию.
  4. Функция поиска в исходном коде
  5. Каждый шаг хорошо прокомментирован и содержит пример.
  6. Чтобы научиться программировать свою стратегию, вы можете постепенно раскомментировать строки, отмеченные звездочкой // *.

Всего в открытом исходном коде 10 шагов для работы советника с вашими индикаторами.

Интерфейс конструктора стратегий

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

Поскольку программирование для терминалов MT4 и MT5 отличается, мы разделим нашу статью на две части:

Если вы используете советник THE X для терминала MT4, вы можете перейти непосредственно к разделу Программирование для The X в терминале MetaTrader 4.

Программирование THE X для MetaTrader 5

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

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

В любом случае, вам следует приобрести открытый исходный код, на котором будет работать терминал.

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

// Шаг 0 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Чтобы встроить индикатор в советник во время компиляции, вам нужно загрузить его в ресурсы советника
//
// Например:
// * #resource "\\Indicators\\Examples\\MACD.ex5"
// ################################################ ###########################

Здесь мы должны добавить необходимые нам индикаторы в ресурсы.

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

Правила именования в Маркете: Используйте полные имена папок, начиная с Indicators!

Папка обозначается двойным обратным слешем \\.

Например:

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

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

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

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

MetaTrader 5 Шаг 1: Укажите имя сигнала!

// Шаг 1 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Введите имя вашего сигнала после //
// ################################################ ####################
// Например:
// * Custom = 77, // Сигнал для открытого исходного кода
// ################################################ ############################

На этом шаге мы должны добавить наш сигнал или стратегию в список возможных сигналов в советнике.

Это облегчает удобное управление сигналами на этапе настройки советника.

Указание имени сигнала в коде

Например:

  1. Вы хотите назвать свою стратегию MY STRATEGY
  2. Номер стратегии также должен быть уникальным. Сигналы от стандартных индикаторов занимают первые 22 номера! Запомните этот номер, так как он понадобится нам позже.
  3. Имя также должно быть уникальным. Например, MYSTRATEGY1

В итоге, мы должны написать в коде следующее:

MYSTRATEGY1 = 77, // MY STRATEGY

Вы также можете добавить больше стратегий и написать, например:

  1. MYSTRATEGY1 = 77, // MY STRATEGY a
  2. MYSTRATEGY2 = 78, // MY STRATEGY b
  3. MYSTRATEGY3 = 79, // MY STRATEGY c

MetaTrader 5 Шаг 2: Укажите отображаемое имя сигнала!

// Шаг 2 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Введите имя вашего сигнала, которое будет отображаться на экране после //
// ################################################ ####################
// Например:
// * if (i == 77) s1 = "Custom";
// ################################################ ###########################

Этот шаг предназначен для отображения имени вашей стратегии в нашей панели EAPADpro EA.

Это просто! Однако вы должны использовать номера из предыдущего шага.

Отображение имени сигнала

Например:

  1. if (i == 77) s1 = “My1”;
  2. if (i == 78) s1 = “My2”;
  3. if (i == 79) s1 = “My3”;

MetaTrader 5 Шаг 3: Укажите имя фильтра!

// Шаг 3 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Введите имя вашего фильтра после //
// ################################################ ####################
// Например:
// * FILTERCustom = 77, // Фильтр для открытого исходного кода
// ################################################ ###########################

На этом шаге нам нужно добавить наш фильтр в список возможных фильтров в советнике.

Это обеспечивает удобное управление фильтрами на этапе настройки советника.

Обычно Фильтр использует тот же индикатор, что и Сигнал, но с условием, что Фильтр определяет текущее положение Сигнала, а Сигнал отражает фактический сигнал.

Например:

  1. Вы хотите назвать свой Фильтр MY FILTER?
  2. Номер фильтра также должен совпадать с номером стратегии (Это предотвращает путаницу с другими цифрами в будущем). Фильтры занимают первые 22 номера от стандартных индикаторов! Запомните этот номер, так как он понадобится нам позже.
  3. Имя также должно быть уникальным. Например, MYFILTER1

В итоге, мы должны написать в коде следующее:

MYFILTER1 = 77, // MY FILTER

Вы также можете добавить больше фильтров и написать, например:

  1. MYFILTER1 = 77, // MY FILTER a
  2. MYFILTER2 = 78, // MY FILTER b
  3. MYFILTER3 = 79, // MY FILTER c

MetaTrader 5 Шаг 4: Укажите параметры индикатора или стратегии во внешних переменных!

// Шаг 4 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Укажите все внешние переменные вашего индикатора или индикаторов, которые будут использоваться в вашей стратегии
//
// Например:
// * input string IndicatorName = "-------- Custom Indicator ----------------";
// * input int CUSTOMMAFastPeriod = 1;
// * input int CUSTOMMASlowPeriod = 100;
// * input ENUM_APPLIED_PRICE CUSTOMMAprice = PRICE_CLOSE;
// ################################################ ###########################

На этом шаге вы должны ввести все внешние настройки индикаторов в вашей стратегии, которые можно изменять из советника. Это полезно для целей оптимизации.

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

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

Указание параметров индикатора

MetaTrader 5 Шаг 5: Создайте хэндлы индикаторов для загрузки в советник!

// Шаг 5 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Создайте запись в массиве, чтобы советник мог присвоить хэндл индикатора во время инициализации
//
// Например:
// * case 77:
// * h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
// * if (h_custom[tf_num][sym_num] == INVALID_HANDLE)
// * {
// *     PrintToLogs("Не удалось получить хэндл индикатора MACD");
// *     return(INIT_FAILED);
// * }
// ################################################ ###########################

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

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

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

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

Вы можете обратиться к документации MQL5 по вызову индикаторов с помощью iCustom.

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

Согласно нашим примерам выше, нам нужно сделать следующее:

case 77:
h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
if (h_custom[tf_num][sym_num] == INVALID_HANDLE)
{
    PrintToLogs("Не удалось получить хэндл индикатора MACD");
    return(INIT_FAILED);
}
break;

Здесь я явно указал только два внешних параметра. Я заменил параметр этого индикатора, InpSignalSMA, на число по умолчанию, чтобы продемонстрировать суть программирования!

Аналогично, вы можете добавить несколько индикаторов и хэндлов.

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

Например:

case 77:
h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
h_custom2[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 15, CUSTOMMAprice);
if (h_custom[tf_num][sym_num] == INVALID_HANDLE || h_custom2[tf_num][sym_num] == INVALID_HANDLE)
{
    PrintToLogs("Не удалось получить хэндл индикатора MACD");
    return(INIT_FAILED);
}
break;

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

MetaTrader 5 Шаг 6: Объявите переменные для загрузки индикатора(ов) стратегии!

// Шаг 6 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Объявите переменные массива хэндлов
//
// Например:
// * int h_custom[6][12];
// * int h_custom2[6][12];
// ################################################ ###########################

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

Это просто.

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

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

// Шаг 7 ##############################################
// Эта часть кода предназначена для программирования вашей стратегии в открытом исходном коде
//
// Объявите переменные массива для значений индикатора
//
// Например:
// * double custom1_buffer[];
// * double custom2_buffer[];
// ################################################ ###########################

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

Это просто.

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

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

Объявление переменных данных индикатора

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

Этот шаг имеет решающее значение для советника. Хотя все остальные шаги обязательны, без этого шага советник не будет функционировать.

Я включил комментарии в код, чтобы объяснить каждую часть!

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

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

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

  1. 1. Нам нужно скопировать буферы данных в наши наборы данных. В параметрах копирования мы должны указать номера линий (в нашем случае это линии индикатора MACD).
  2. Мы используем две линии: MAIN и SIGNAL.
  3. Вы можете прочитать документацию по функции CopyBuffer.
  4. 2. Программирование стратегии. В данном случае это пересечение двух линий.
  5. Важно: Сигнал на ПОКУПКУ (BUY) — 1, а на ПРОДАЖУ (SELL) — -1.
  6. 3. Здесь мы записываем информацию, которая будет отображаться в журнале при открытии позиции по сигналу. Информация о стратегии.

Если вы правильно заполнили все хэндлы и буферы, на экране должно появиться следующее:

Alert(“Поздравляем, вы завершили урок, демонстрирующий программирование вашей стратегии!”);
Alert(“Поздравляем! Вы завершили урок, демонстрирующий программирование вашей стратегии!”);
Если вы получили сообщение об ошибке, вам необходимо определить и устранить причину этой ошибки.

Коды ошибок

Наиболее распространенные ошибки:

ERR_INDICATOR_UNKNOWN_SYMBOL 4801 Неизвестный символ
ERR_INDICATOR_CANNOT_CREATE 4802 Не удалось создать индикатор
ERR_INDICATOR_NO_MEMORY 4803 Недостаточно памяти для добавления индикатора
ERR_INDICATOR_CANNOT_APPLY 4804 Невозможно применить индикатор к другому индикатору
ERR_INDICATOR_CANNOT_ADD 4805 Ошибка при добавлении индикатора
ERR_INDICATOR_DATA_NOT_FOUND 4806 Запрошенные данные не найдены
ERR_INDICATOR_WRONG_HANDLE 4807 Неверный хэндл индикатора
ERR_INDICATOR_WRONG_PARAMETERS 4808 Неверное количество параметров при создании индикатора
ERR_INDICATOR_PARAMETERS_MISSING 4809 Отсутствуют параметры при создании индикатора
ERR_INDICATOR_CUSTOM_NAME 4810 Первым параметром в массиве должно быть имя пользовательского индикатора
ERR_INDICATOR_PARAMETER_TYPE 4811 Неверный тип параметра в массиве при создании индикатора
ERR_INDICATOR_WRONG_INDEX 4812 Неверный индекс запрашиваемого буфера индикатора

MetaTrader 5 Шаг 9: Укажите фильтры из ваших индикаторов или используйте ваш индикатор в качестве фильтра для стратегии!

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

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

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

 

MetaTrader 5 Шаг 10: Это последний шаг!

// Шаг 10 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Это конец нашего кода. Если вы дошли до этого шага, значит, вы создали свою стратегию. 
// Например, я ввел секретную стратегию. Если вы все сделали правильно, вы получите результат в виде оповещения на экране! 
// Спасибо, что выбрали наш продукт. Мы работаем для вас! 
// 
// Наш сайт: 
// Наш магазин: /shop 
// Магазин MQL5: https://www.mql5.com/users/vladon/seller 
// 
// 
// Это конец нашего кода. Если вы дошли до этого шага, значит, вы создали свою стратегию. 
// Например, я ввел секретную стратегию. Если вы все сделали правильно, вы получите результат в виде оповещения на экране! 
// Спасибо, что выбрали наш продукт. Мы работаем для вас! 
// 
// Наш сайт: 
// Наш магазин: /shop 
// Магазин MQL5: https://www.mql5.com/users/vladon/seller 
// ################################################ ###########################

Это означает, что программирование вашей стратегии завершено.

Удачи и прибылей вам!

MetaTrader 5 Выводы и проверка стратегии

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

Теперь нам нужно протестировать наш советник и стратегию.

  1. Загрузите терминал;
  2. Откройте демо-счет;
  3. Прикрепите советник к графику;
  4. Если все в порядке, вы получите сообщение об успешном добавлении стратегии:
    • Сообщение об успешном добавлении стратегии
  5. Или вы получите ошибку. В этом случае вам нужно внимательно просмотреть свой код и повторить все шаги!

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

  1. Откройте терминал;
  2. Откройте Тестер стратегий;
  3. Выберите свой советник, валютную пару, таймфрейм и диапазон дат. Включите тестирование Каждый тик на основе реальных тиков;
    • Скриншот настроек тестера стратегий
  4. Откройте вкладку Настройки;
    • Скриншот вкладки Настройки
  5. Выберите свою стратегию;
  6. Включите Визуализацию;
  7. Нажмите СТАРТ;
  8. Должен открыться график;
  9. Если советник открывает позиции, вы все сделали правильно!
    • Советник открывает позиции

Программирование THE X для MetaTrader 4

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

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

С другой стороны, для терминала MetaTrader 4 в Интернете доступно множество стратегий и индикаторов. Поэтому вы можете использовать код для MT4!

Еще одно важное напоминание: кодирование стратегии в MT4 намного проще, чем кодирование в MT5!

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

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

// Шаг 0 ############################################## ######################
    // Эта часть кода для программирования вашей стратегии в открытом исходном коде
    // Эта часть кода для программирования вашей стратегии в открытом исходном коде
    //
    // Чтобы встроить индикатор в советник во время компиляции, вам нужно загрузить его в ресурсы советника
    // Чтобы встроить индикатор в советник во время компиляции, вам нужно загрузить его в ресурсы советника
    // ################################################ ####################
    // например:
    // * #resource "\\ Indicators \\ MACD.ex4"
    // ################################################ ###########################
    

Здесь мы должны добавить необходимые нам индикаторы в ресурсы.

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

Правила написания пути к индикатору: Используйте полные имена папок, начиная с Indicators!

Папка обозначается двойным обратным слешем \\

Например:

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

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

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

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

MetaTrader 4 Шаг 1: Укажите имя сигнала

// Шаг 1 ############################################## ###################### 
    // Эта часть кода для программирования вашей стратегии в открытом исходном коде 
    // Эта часть кода для программирования вашей стратегии в открытом исходном коде 
    // 
    // Введите имя вашего сигнала после // 
    // Введите имя вашего сигнала после // 
    // ################################################ #################### 
    // например: 
    // * Custom = 77, // Сигнал для открытого исходного кода 
    // ################################################ ############################

На этом шаге мы должны добавить наш Сигнал или стратегию в список возможных сигналов в советнике.

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

Пример именования сигнала

Например:

  1. Вы хотите назвать свою стратегию MY STRATEGY
  2. Номер стратегии также должен быть уникальным. Сигналы от стандартных индикаторов занимают первые 22 номера! Запомните этот номер для будущего использования.
  3. Имя также должно быть уникальным. Например, MYSTRATEGY1

В итоге, вы должны написать в коде так:

MYSTRATEGY1 = 77, // MY STRATEGY

Вы также можете добавить больше стратегий и написать, например, так:

  1. MYSTRATEGY1 = 77, // MY STRATEGY a
  2. MYSTRATEGY2 = 78, // MY STRATEGY b
  3. MYSTRATEGY3 = 79, // MY STRATEGY c

MetaTrader 4 Шаг 2: Укажите имя сигнала для отображения на экране

// Шаг 2 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Введите имя вашего сигнала, которое будет отображаться на экране, после // 
// Введите имя вашего сигнала, которое будет отображаться на экране, после // 
// ################################################ #################### 
// например: 
// * if (i == 77) s1 = "Custom"; 
// ################################################ ###########################

Этот шаг служит для отображения имени вашей стратегии в нашей панели EApadpro EA.

Нет ничего сложного! Но вы должны использовать номера из предыдущего шага.

Пример отображения имени сигнала

Например:

  1. if (i == 77) s1 = “My1”;
  2. if (i == 78) s1 = “My2”;
  3. if (i == 79) s1 = “My3”;

MetaTrader 4 Шаг 3: Укажите имя фильтра

// Шаг 3 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Введите имя вашего фильтра после // 
// Введите имя вашего фильтра после // 
// ################################################ #################### 
// например: 
// * FILTERCustom = 77, // Фильтр для открытого исходного кода 
// ################################################ ###########################

На этом шаге нам нужно добавить наш Фильтр в список возможных фильтров в советнике.

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

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

Примеры различий между фильтрами и сигналами

Например:

  1. Вы хотите назвать свой Фильтр MYFILTER?
  2. Номер фильтра также должен совпадать с номером стратегии (Это делается, чтобы избежать путаницы со стандартными номерами индикаторов в будущем). Фильтры занимают первые 22 номера, зарезервированные для стандартных индикаторов! Запомните этот номер для будущего использования.
  3. Имя также должно быть уникальным. Например, MYFILTER1

В итоге, вы должны написать в коде так:

MYFILTER1 = 77, // MY FILTER

Вы также можете добавить больше фильтров и написать, например, так:

  1. MYFILTER1 = 77, // MY FILTER a
  2. MYFILTER2 = 78, // MY FILTER b
  3. MYFILTER3 = 79, // MY FILTER c

MetaTrader 4 Шаг 4: Укажите параметры индикатора или стратегии во внешних переменных

// Шаг 4 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Укажите все внешние переменные вашего индикатора или индикаторов, которые будут использоваться в вашей стратегии 
// Укажите все внешние переменные вашего индикатора или индикаторов, которые будут использоваться в вашей стратегии 
// ################################################ #################### 
// например: 
// * input string IndicatorName = "-------- Custom Indicator ----------------"; 
// * input int CUSTOMMAFastPeriod = 1; 
// * input int CUSTOMMASlowPeriod = 100; 
// ################################################ ###########################

На этом шаге вы должны ввести все внешние настройки индикаторов, используемых в вашей стратегии, которые можно изменить из советника. Это полезно для оптимизации.

Кроме того, вы можете извлечь определенные параметры стратегии, такие как уровни пересечения линий, ограничение работы индикатора на основе MAX и MIN цен на графике и так далее.

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

Пример настройки внешних переменных

MetaTrader 4 Шаги 5, 6, 7: Отдыхайте!

// Шаг 5 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Шаг 5 нужен только для терминала MT5. Так что на этом шаге вы можете расслабиться и выпить кофе 
// Шаг 5 нужен только для терминала MT5. Так что на этом шаге вы можете расслабиться и выпить кофе 
// ################################################ ###########################
    
// Шаг 6 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Шаг 6 нужен только для терминала MT5. Так что на этом шаге вы можете расслабиться и перекусить 
// Шаг 6 нужен только для терминала MT5. Так что на этом шаге вы можете расслабиться и перекусить 
// ################################################ ###########################
    
// Шаг 7 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Шаг 7 нужен только для терминала MT5. Сделайте перерыв на тренировку 
// Шаг 7 нужен только для терминала MT5. Сделайте перерыв на тренировку 
// ################################################ ###########################

Примечание: MetaTrader 4 не требует загрузки индикаторов в память для дальнейшей работы. Когда индикатор вызывается снова в MT4, советник использует тот же хэндл.

MetaTrader 4 Шаг 8: Создание стратегий и сигналов для открытия позиций

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

Я добавил комментарии в код!

Номер стратегии совпадает с номером из предыдущих шагов!

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

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

  1. 1. Программирование стратегии. В данном случае это пересечение двух линий.
  2. Важно: Сигнал на ПОКУПКУ (BUY)1, а на ПРОДАЖУ (SELL)-1.
  3. 2. Запишите информацию, которая будет отображаться в журнале при открытии позиции. Информация о стратегии

Если вы получили сообщение об ошибке, вам необходимо определить причину ошибки.

Коды ошибок

Наиболее распространенные ошибки:

ERR_INDICATOR_UNKNOWN_SYMBOL 4801 Неизвестный символ
ERR_INDICATOR_CANNOT_CREATE 4802 Не удалось создать индикатор
ERR_INDICATOR_NO_MEMORY 4803 Недостаточно памяти для добавления индикатора
ERR_INDICATOR_CANNOT_APPLY 4804 Невозможно применить индикатор к другому индикатору
ERR_INDICATOR_CANNOT_ADD 4805 Ошибка при добавлении индикатора
ERR_INDICATOR_DATA_NOT_FOUND 4806 Запрошенные данные не найдены
ERR_INDICATOR_WRONG_HANDLE 4807 Неверный хэндл индикатора
ERR_INDICATOR_WRONG_PARAMETERS 4808 Неверное количество параметров при создании индикатора
ERR_INDICATOR_PARAMETERS_MISSING 4809 Отсутствуют параметры при создании индикатора
ERR_INDICATOR_CUSTOM_NAME 4810 Первым параметром в массиве должно быть имя пользовательского индикатора
ERR_INDICATOR_PARAMETER_TYPE 4811 Неверный тип параметра в массиве при создании индикатора
ERR_INDICATOR_WRONG_INDEX 4812 Неверный индекс запрашиваемого буфера индикатора

MetaTrader 4 Шаг 9: Укажите фильтры из ваших индикаторов или используйте ваш индикатор в качестве фильтра для стратегии

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

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

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

 

MetaTrader 4 Шаг 10: Это заключительный шаг!

// Шаг 10 ############################################## ###################### 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// Эта часть кода для программирования вашей стратегии в открытом исходном коде 
// 
// Это конец нашего кода. Если вы дошли до этого шага, значит, вы создали свою стратегию. 
// Например, я ввел секретную стратегию. Если вы все сделали правильно, вы получите результат в виде оповещения на экране! 
// Спасибо, что выбрали наш продукт. Мы работаем для вас! 
// 
// Наш сайт: 
// Наш магазин: /shop 
// Магазин MQL5: https://www.mql5.com/ru/users/vladon/seller 
// 
// 
// Это конец нашего кода. Если вы дошли до этого шага, значит, вы создали свою стратегию. 
// Например, я ввел секретную стратегию. Если вы все сделали правильно, вы получите результат в виде оповещения на экране! 
// Спасибо, что выбрали наш продукт. Мы работаем для вас! 
// 
// Наш сайт: 
// Наш магазин: /shop 
// Магазин MQL5: https://www.mql5.com/ru/users/vladon/seller 
// ################################################ ###########################

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

Это означает, что программирование вашей стратегии завершено.

Удачи и прибылей вам!

MetaTrader 4 Выводы и проверка стратегии

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

Теперь нам нужно протестировать наш советник и стратегию.

  1. Загрузите терминал;
  2. Откройте демо-счет;
  3. Прикрепите советник к графику;

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

  1. Откройте терминал;
  2. Откройте Тестер стратегий;
  3. Выберите свой советник, валютную пару, таймфрейм и диапазон дат. Включите тестирование Каждый тик на основе реальных тиков;
    • Скриншот выбора в Тестере стратегий
  4. Откройте вкладку Настройки;
    • Скриншот вкладки настроек Тестера стратегий
  5. Выберите свою стратегию;
  6. Включите Визуализацию;
  7. Нажмите СТАРТ;
  8. Должен открыться график;
  9. Если советник открывает позиции, значит, вы все сделали правильно!
    • Скриншот открытия позиций советником

Что еще можно изменить в советнике?

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

Параметры, которые вы можете изменить по своему усмотрению:

 // Изменение 1: Версия советника // Version of EA
#define versionea "18.008" 
// Изменение 2: Логотип советника // LOGO of EA
#define BMPLOGO "Images\\dollar.bmp"
// Изменение 3: Иконка советника // Icon of EA
// #property icon "\\Images\\dollar.bmp"
// Изменение 4: Имя советника на графике // Name of EA on Chart
#define defEANAME "EXP-The X (OS)"
// Изменение 5: Ссылка на полную инструкцию // Link to the full instruction
#define linkTOfull "www.expforex.com/ru/publ/4-1-0-166" 
// Изменение 6: Демо-версия советника. Работает только на демо-счете или на реальном счете с парой USDJPY // Demo version of the advisor. Works only on a demo account or on a live account with the USDJPY pair
bool DEMO = false;
    

Все остальные параметры рекомендуется не изменять, так как это может нарушить функциональность советника!

Отладка стратегии

Следующий шаг — протестировать и оптимизировать The X и найти свои лучшие настройки.

Или отладить и обновить свою стратегию.

Иногда это занимает дни или недели. Иногда даже месяцы.

Рынок Forex – Уведомления о рисках! Это очень рискованный способ заработка. Совершенствуйте свою стратегию.

Удачи и прибыли!

Вывод дополнительной информации в блоке стратегии

Это необязательная функция в нашем открытом исходном коде.

Вы можете вывести любое значение любого параметра в блоке EAPADPRO Strategy.

1. Для этого создайте локальную переменную,

например, double EAPADPRO_StrategyValue1 = 0; double EAPADPRO_StrategyValue2 = 0;

2. Присвойте значение этой переменной,

например, присвойте значение индикатора ATR (найдите строку double atr = iATR):

EAPADPRO_StrategyValue1 = atr;
EAPADPRO_StrategyValue2 = atrma;

Полный код фильтра:

3. Далее добавьте значение переменной в блок вывода информации:

Найдите в коде функцию CreateStrategy() и добавьте новую строку:

ArrayAddStrategy("StrategyValue1", DoubleToString(EAPADPRO_StrategyValue1, 5), "", "");
    
ArrayAddStrategy("StrategyValue2", DoubleToString(EAPADPRO_StrategyValue2, 5), "", "");

Первый параметр функции — это имя переменной.

Второй параметр функции — значение переменной в удобном формате!

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

Этот пост также доступен на следующих языках: English Portuguese Español Deutsch Українська Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt




    Пожалуйста, подождите, идет связь с ИИ...

     

    Предупреждение о риске:


    Прошлые торговые показатели не гарантируют будущих результатов.

    Маржинальная торговля иностранной валютой сопряжена с высокой степенью риска и может не подходить для всех инвесторов.

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

    Пожалуйста, действуйте с осторожностью, тщательно оценивайте свою финансовую ситуацию и обратитесь за советом к квалифицированному специалисту.

    Отказ от ответственности

    Этот сайт использует файлы cookie для улучшения вашего опыта. Используя этот сайт, вы соглашаетесь с нашей Политикой защиты данных и Отказом от ответственности.
    Читать далее