Програмування вашої стратегії за 10 кроків з Універсальним торговим радником та Відкритим вихідним кодом

EA SUPER TESTER Багатопотокова програма тестування експерта.
EA SUPER TESTER Багатопотокова програма тестування експерта.

Table of Contents (click to show)

List

Опис

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

Ми розробили Універсальний торговий радник, який охоплює всі найцікавіші та найважливіші функції.

Додатково було вбудовано сигнальний модуль, що використовує стандартні індикатори.

Це конструктор стратегій, що дозволяє вам запрограмувати власну стратегію.

Він починався як проект, що здобув значну популярність. Протягом 15 років ми вдосконалювали алгоритм, додавали нові функції та індикатори, а також виправляли помилки у функціях.

Ця стаття проведе вас через програмування вашої стратегії, інтеграцію індикаторів у радник та додавання нових сигналів і фільтрів.

Відкритий вихідний код

Часте запитання, яке ми отримуємо:

  1. Чи можу я інтегрувати свої індикатори в радник?
  2. Скільки коштує відкритий вихідний код торгового радника?

Не секрет, що ми пропонуємо відкритий вихідний код нашого радника для продажу. Це призначено для трейдерів, які хочуть розробляти власні радники або створювати свої сигнали.

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

  1. Відкритий вихідний код радника The X можна придбати в нашому Маркеті торгових радників.
  2. Відкритий вихідний код The X для MetaTrader 5 (Недоступно)
  3. Відкритий вихідний код The X для MetaTrader 4 (Недоступно)
  4. До речі, у нас є багато відкритих вихідних кодів для наших радників. Розділ: Стратегічні радники (Відкритий вихідний код)
  5. Спробуйте наші Шаблони з відкритим вихідним кодом.
https://expforex.com/ua/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];
// ################################################ ###########################

Тут ми вказуємо імена наших хендлів, які були створені вище!

Це просто.

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

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/ua/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), "", "");

Перший параметр функції — це ім’я змінної.

Другий параметр функції — значення змінної у зручному форматі!

Увага! Додавайте парну кількість параметрів, щоб забезпечити акуратне відображення на екрані!

Assistant – найкраща безкоштовна торговельна панель для підтримки позицій та угод з реальними/віртуальними StopLoss / TakeProfit / Trailing Stop

Assistant – найкраща безкоштовна торговельна панель для підтримки позицій та

втоматичне налаштування стоп-лоссу (StopLoss), тейк-профіту (TakeProfit), трейлінг-стопу (Trailing Stop), рівнів беззбитковості, активація віртуальних стопів. Exp Assistant допоможе вам організувати обслуговування ваших…

Extra Report Pad – Щоденник Трейдера. Професійно аналізує ваш торговий рахунок. MyFxBook на живому графіку. ExtraReportPad

Extra Report Pad – Щоденник Трейдера. Професійно аналізує ваш торговий

Extra Report Pad – професійне рішення для аналізу вашого торгового рахунку Сьогодні надзвичайно важливо одночасно торгувати на кількох валютних парах. Але…

БІБЛІОТЕКА EAPADPRO – Додавання нашої панелі до вашого EA

БІБЛІОТЕКА EAPADPRO – Додавання нашої панелі до вашого EA

БІБЛІОТЕКА EAPADPRO – Покращення вашого Експертного Радника (EA) за допомогою нашої інформаційної панелі БІБЛІОТЕКА EAPADPRO пропонує надійне рішення для трейдерів, які…

EAPadPRO – Інформаційна панель для наших експертів. Панель управління для Експертних Радників

EAPadPRO – Інформаційна панель для наших експертів. Панель управління для

Інформаційна панель для всіх наших радників та утиліт для терміналу MetaTrader. Детальні інструкції з основ управління та використання панелі…

Торговий звіт TickSniper і кращих радників Expforex

Торговий звіт TickSniper і кращих радників Expforex

Опис Ми підсумували узагальнені та детальні результати торгів наших експертів TickSniper, Good Santa, Tick Hamster, The X, на наших реальних торгових рахунках. Статистика торгів наших Експертних…

TickSniper Автоматичний Експертний Радник для MetaTrader. Скальпер

TickSniper Автоматичний Експертний Радник для MetaTrader. Скальпер

Exp-TickSniper — це швидкий Tick скальпер, який автоматично вибирає параметри для кожної валютної пари окремо. Експертний радник розроблений на основі досвіду,…

SafetyLOCK PRO Захищайте свої позиції, блокуючи їх за допомогою відкриття протилежних відкладених ордерів. Хедж

SafetyLOCK PRO Захищайте свої позиції, блокуючи їх за допомогою відкриття

SAFETYLOCK: Захистіть свої угоди від різких ринкових розворотів Торгівля на фінансових ринках пов’язана з високими ризиками, особливо під час різких ринкових…

CLP CloseIfProfitorLoss. Контроль загального прибутку або збитку з трейлінг-прибутком.

CLP CloseIfProfitorLoss. Контроль загального прибутку або збитку з трейлінг-прибутком.

Експертний радник (EA) пропонує розширені функції для управління та закриття позицій у MetaTrader, особливо при досягненні передвстановленого рівня загального прибутку…

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




    Будь ласка, зачекайте, йде обробка AI...

     

    Попередження про ризик:


    Минулі торгові показники не гарантують майбутніх результатів.

    Маржинальна торгівля іноземною валютою пов'язана з високим ступенем ризику і може не підходити для всіх інвесторів.

    Майте на увазі, що використання торгових роботів пов'язане зі значним ризиком, і ви можете втратити більше, ніж ваші початкові інвестиції.

    Будь ласка, будьте обережні, ретельно оцініть своє фінансове становище і зверніться за порадою до кваліфікованого фахівця.

    Відмова від відповідальності

    Цей веб-сайт використовує файли cookie для покращення вашого досвіду. Використовуючи цей веб-сайт, ви погоджуєтеся з нашою Політикою захисту даних та Відмовою від відповідальності.
    Детальніше