втоматичне налаштування стоп-лоссу (StopLoss), тейк-профіту (TakeProfit), трейлінг-стопу (Trailing Stop), рівнів беззбитковості, активація віртуальних стопів. Exp Assistant допоможе вам організувати обслуговування ваших…
EA SUPER TESTER Багатопотокова програма тестування експерта.
Table of Contents (click to show)
List
- Опис
- Відкритий вихідний код
- Реальна цінність нашого радника
- Програмування вашої торгової стратегії Forex
- Програмування THE X для MetaTrader 5
- MetaTrader 5 Крок 0: Завантаження індикаторів у ресурси!
- MetaTrader 5 Крок 1: Вкажіть ім’я сигналу!
- MetaTrader 5 Крок 2: Вкажіть ім’я сигналу, що відображається!
- MetaTrader 5 Крок 3: Вкажіть ім’я фільтра!
- MetaTrader 5 Крок 4: Вкажіть параметри індикатора або стратегії у зовнішніх змінних!
- MetaTrader 5 Крок 5: Створіть хендли індикаторів для завантаження в радник!
- MetaTrader 5 Крок 6: Оголосіть змінні для завантаження індикатора(ів) стратегії!
- MetaTrader 5 Крок 7: Оголосіть змінні для зберігання даних індикатора!
- MetaTrader 5 Крок 8: Створіть стратегії та сигнали для відкриття позицій!
- Коди помилок
- MetaTrader 5 Крок 9: Вкажіть фільтри з ваших індикаторів або використовуйте ваш індикатор як фільтр для стратегії!
- MetaTrader 5 Крок 10: Це останній крок!
- MetaTrader 5 Висновки та перевірка стратегії
- Програмування THE X для MetaTrader 4
- MetaTrader 4 Крок 0: Завантаження індикаторів у ресурси
- MetaTrader 4 Крок 1: Вкажіть ім’я сигналу
- MetaTrader 4 Крок 2: Вкажіть ім’я сигналу для відображення на екрані
- MetaTrader 4 Крок 3: Вкажіть ім’я фільтра
- MetaTrader 4 Крок 4: Вкажіть параметри індикатора або стратегії у зовнішніх змінних
- MetaTrader 4 Кроки 5, 6, 7: Відпочиньте!
- MetaTrader 4 Крок 8: Створення стратегій та сигналів для відкриття позицій
- MetaTrader 4 Крок 9: Вкажіть фільтри з ваших індикаторів або використовуйте ваш індикатор як фільтр для стратегії
- MetaTrader 4 Крок 10: Це заключний крок!
- MetaTrader 4 Висновки та перевірка стратегії
- Що ще можна змінити в раднику?
- Налагодження стратегії
Опис
The X — це конструктор торгових стратегій.
Ми розробили Універсальний торговий радник, який охоплює всі найцікавіші та найважливіші функції.
Додатково було вбудовано сигнальний модуль, що використовує стандартні індикатори.
Це конструктор стратегій, що дозволяє вам запрограмувати власну стратегію.
Він починався як проект, що здобув значну популярність. Протягом 15 років ми вдосконалювали алгоритм, додавали нові функції та індикатори, а також виправляли помилки у функціях.
Ця стаття проведе вас через програмування вашої стратегії, інтеграцію індикаторів у радник та додавання нових сигналів і фільтрів.
Відкритий вихідний код
Часте запитання, яке ми отримуємо:
- Чи можу я інтегрувати свої індикатори в радник?
- Скільки коштує відкритий вихідний код торгового радника?
Не секрет, що ми пропонуємо відкритий вихідний код нашого радника для продажу. Це призначено для трейдерів, які хочуть розробляти власні радники або створювати свої сигнали.
Більше того, трейдери часто купують відкритий вихідний код для реалізації своїх власних стратегій та перепродажу радника.
- Відкритий вихідний код радника The X можна придбати в нашому Маркеті торгових радників.
- Відкритий вихідний код The X для MetaTrader 5 (Недоступно)
- Відкритий вихідний код The X для MetaTrader 4 (Недоступно)
- До речі, у нас є багато відкритих вихідних кодів для наших радників. Розділ: Стратегічні радники (Відкритий вихідний код)
- Спробуйте наші Шаблони з відкритим вихідним кодом.
Програмування радників з індикаторами — складний процес.
Ми пропонуємо послуги з програмування торгових радників. Однак процес розробки часто стикається із затримками, оскільки клієнти не впевнені у функціях, які їм потрібні.
The X — це набір блоків та функцій для торгівлі на ринку FOREX, що використовується у всьому світі. Ми розробили функції, які часто використовуються, що дозволяє раднику задовольняти 90% потреб кожного трейдера.
Звісно, існують унікальні стратегії, які мають розробляти досвідчені програмісти.
Такі стратегії рідкісні та вимагають ретельної підготовки. Вартість цієї роботи залежить від її складності.
Реальна цінність нашого радника
Починаючи з нашої статті про вартість роботи програміста, ми можемо оцінити приблизну вартість нашого торгового робота The X:
Наш радник (EA) містить понад 10 000 рядків коду. Хоча це може здатися великим обсягом, це керовано, оскільки ми не пишемо радники з використанням PL/SQL (Мова програмування/Мова структурованих запитів). Чому? Тому що OOP (Об’єктно-орієнтоване програмування) багатьом незнайоме, а робота з OOP може бути досить складною!
Отже, давайте порахуємо:
- Вартість 1 години роботи програміста = $20 при програмуванні функцій та алгоритмів.
- Вартість 1 години виправлення помилок = $5.
- Вартість написання текстів та відео = $10 (Ця ціна базується на інтернет-тарифах; я сам створюю всі інструкції та відео).
- Припустимо, що написання функцій та блоків для The X зайняло понад 1000 годин!
- Програмування сигналів з використанням індикаторів — це просто. Тому ми припускаємо, що це зайняло у нас 10 годин!
Однак деякі аспекти не можуть бути завершені негайно:
- Налагодження функцій може зайняти додатково 1000 годин!
- Розробка інструкцій, відео та просування також вимагають 1000 годин!
Загалом ми інвестували понад 3000 годин!
Якби нам замовили такий алгоритм, ми б відмовилися. Це не розумно і не вигідно.
Загальна вартість такого замовного радника перевищує $35 000! Однак наш радник продається за ціною в десять разів нижчою!!!!
Вартість нашого відкритого вихідного коду в ДЕСЯТЬ разів менша!
Такі замовні роботи ніколи не виконуються:
- По-перше, тому що клієнти не бажають вкладати таку значну суму грошей.
- По-друге, програмісти не хочуть присвячувати стільки часу розробці.
Я запевняю вас, що програмування такого складного торгового робота вимагає більше часу, ніж створення торгової стратегії.
Налагодження всіх блоків та функцій вимагає тривалого часу.
Ми надзвичайно вдячні нашим клієнтам, які виявляли помилки та надавали виправлення протягом останніх п’яти років, а також вносили свої функції та індикатори для розширення функціональності радника THE X.
Програмування вашої торгової стратегії Forex
По-перше, я хочу зазначити, що ми оновили код нашого радника. Тепер він дуже простий для розуміння та добре прокоментований.
Вам не потрібно детально вникати в кожну функцію. Ви можете запрограмувати свою стратегію всього за 10 кроків.
Ми підготували дуже зручний метод для роботи з нашим відкритим вихідним кодом.
Пам’ятайте: Ми не програмуємо стратегії для радника безкоштовно. Якщо ви хочете розробити код для своєї стратегії, будь ласка, зверніться до розділу Програмування, щоб розмістити замовлення!
Перші кроки:
- Відкрийте відкритий вихідний код радника, який ви придбали в нашому Маркеті радників;
- Натисніть Ctrl + F, щоб активувати панель пошуку;
- Введіть термін Step – Це ключове слово допоможе вам орієнтуватися в нашому вихідному коді та швидко написати свою стратегію.
- Кожен крок добре прокоментований та містить приклад.
- Щоб навчитися програмувати свою стратегію, ви можете поступово розкоментувати рядки, позначені зірочкою // *.
Загалом у відкритому вихідному коді 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, // Сигнал для відкритого вихідного коду // ################################################ ############################
На цьому кроці ми повинні додати наш сигнал або стратегію до списку можливих сигналів у раднику.
Це полегшує зручне управління сигналами на етапі налаштування радника.
Наприклад:
- Ви хочете назвати свою стратегію MY STRATEGY
- Номер стратегії також має бути унікальним. Сигнали від стандартних індикаторів займають перші 22 номери! Запам’ятайте цей номер, оскільки він знадобиться нам пізніше.
- Ім’я також має бути унікальним. Наприклад, MYSTRATEGY1
У підсумку, ми повинні написати в коді наступне:
MYSTRATEGY1 = 77, // MY STRATEGY
Ви також можете додати більше стратегій і написати, наприклад:
- MYSTRATEGY1 = 77, // MY STRATEGY a
- MYSTRATEGY2 = 78, // MY STRATEGY b
- MYSTRATEGY3 = 79, // MY STRATEGY c
MetaTrader 5 Крок 2: Вкажіть ім’я сигналу, що відображається!
// Крок 2 ############################################## // Ця частина коду призначена для програмування вашої стратегії у відкритому вихідному коді // // Введіть ім'я вашого сигналу, яке буде відображатися на екрані після // // ################################################ #################### // Наприклад: // * if (i == 77) s1 = "Custom"; // ################################################ ###########################
Цей крок призначений для відображення імені вашої стратегії в нашій панелі EAPADpro EA.
Це просто! Однак ви повинні використовувати номери з попереднього кроку.
Наприклад:
- if (i == 77) s1 = “My1”;
- if (i == 78) s1 = “My2”;
- if (i == 79) s1 = “My3”;
MetaTrader 5 Крок 3: Вкажіть ім’я фільтра!
// Крок 3 ############################################## // Ця частина коду призначена для програмування вашої стратегії у відкритому вихідному коді // // Введіть ім'я вашого фільтра після // // ################################################ #################### // Наприклад: // * FILTERCustom = 77, // Фільтр для відкритого вихідного коду // ################################################ ###########################
На цьому кроці нам потрібно додати наш фільтр до списку можливих фільтрів у раднику.
Це забезпечує зручне управління фільтрами на етапі налаштування радника.
Зазвичай Фільтр використовує той самий індикатор, що й Сигнал, але з умовою, що Фільтр визначає поточне положення Сигналу, а Сигнал відображає фактичний сигнал.
Наприклад:
- Ви хочете назвати свій Фільтр MY FILTER?
- Номер фільтра також повинен збігатися з номером стратегії (Це запобігає плутанині з іншими цифрами в майбутньому). Фільтри займають перші 22 номери від стандартних індикаторів! Запам’ятайте цей номер, оскільки він знадобиться нам пізніше.
- Ім’я також має бути унікальним. Наприклад, MYFILTER1
У підсумку, ми повинні написати в коді наступне:
MYFILTER1 = 77, // MY FILTER
Ви також можете додати більше фільтрів і написати, наприклад:
- MYFILTER1 = 77, // MY FILTER a
- MYFILTER2 = 78, // MY FILTER b
- 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. Нам потрібно скопіювати буфери даних у наші набори даних. У параметрах копіювання ми повинні вказати номери ліній (у нашому випадку це лінії індикатора MACD).
- Ми використовуємо дві лінії: MAIN та SIGNAL.
- Ви можете прочитати документацію по функції CopyBuffer.
- 2. Програмування стратегії. У даному випадку це перетин двох ліній.
- Важливо: Сигнал на ПОКУПКУ (BUY) — 1, а на ПРОДАЖ (SELL) — -1.
- 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 Висновки та перевірка стратегії
Якщо ви все зробите правильно, ваша стратегія буде інтегрована в радник, і ви зможете торгувати за допомогою мого радника.
Тепер нам потрібно протестувати наш радник та стратегію.
- Завантажте термінал;
- Відкрийте демо-рахунок;
- Прикріпіть радник до графіка;
- Якщо все гаразд, ви отримаєте повідомлення про успішне додавання стратегії:
- Або ви отримаєте помилку. У цьому випадку вам потрібно уважно переглянути свій код і повторити всі кроки!
Перевірка радника в тестері стратегій:
- Відкрийте термінал;
- Відкрийте Тестер стратегій;
- Оберіть свій радник, валютну пару, таймфрейм та діапазон дат. Увімкніть тестування Кожен тік на основі реальних тиків;
- Відкрийте вкладку Налаштування;
- Оберіть свою стратегію;
- Увімкніть Візуалізацію;
- Натисніть СТАРТ;
- Має відкритися графік;
- Якщо радник відкриває позиції, ви все зробили правильно!
Програмування 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, // Сигнал для відкритого вихідного коду // ################################################ ############################
На цьому кроці ми повинні додати наш Сигнал або стратегію до списку можливих сигналів у раднику.
Це дозволяє зручно керувати сигналами на етапі налаштування радника.
Наприклад:
- Ви хочете назвати свою стратегію MY STRATEGY
- Номер стратегії також має бути унікальним. Сигнали від стандартних індикаторів займають перші 22 номери! Запам’ятайте цей номер для майбутнього використання.
- Ім’я також має бути унікальним. Наприклад, MYSTRATEGY1
Врешті-решт, ви повинні написати в коді так:
MYSTRATEGY1 = 77, // MY STRATEGY
Ви також можете додати більше стратегій і написати, наприклад, так:
- MYSTRATEGY1 = 77, // MY STRATEGY a
- MYSTRATEGY2 = 78, // MY STRATEGY b
- MYSTRATEGY3 = 79, // MY STRATEGY c
MetaTrader 4 Крок 2: Вкажіть ім’я сигналу для відображення на екрані
// Крок 2 ############################################## ###################### // Ця частина коду для програмування вашої стратегії у відкритому вихідному коді // Ця частина коду для програмування вашої стратегії у відкритому вихідному коді // // Введіть ім'я вашого сигналу, яке буде відображатися на екрані, після // // Введіть ім'я вашого сигналу, яке буде відображатися на екрані, після // // ################################################ #################### // наприклад: // * if (i == 77) s1 = "Custom"; // ################################################ ###########################
Цей крок служить для відображення імені вашої стратегії в нашій панелі EApadpro EA.
Немає нічого складного! Але ви повинні використовувати номери з попереднього кроку.
Наприклад:
- if (i == 77) s1 = “My1”;
- if (i == 78) s1 = “My2”;
- if (i == 79) s1 = “My3”;
MetaTrader 4 Крок 3: Вкажіть ім’я фільтра
// Крок 3 ############################################## ###################### // Ця частина коду для програмування вашої стратегії у відкритому вихідному коді // Ця частина коду для програмування вашої стратегії у відкритому вихідному коді // // Введіть ім'я вашого фільтра після // // Введіть ім'я вашого фільтра після // // ################################################ #################### // наприклад: // * FILTERCustom = 77, // Фільтр для відкритого вихідного коду // ################################################ ###########################
На цьому кроці нам потрібно додати наш Фільтр до списку можливих фільтрів у раднику.
Це дозволяє зручно керувати фільтрами на етапі налаштування радника.
Зазвичай Фільтр використовує той самий індикатор, що й Сигнал, з умовою, що Фільтр визначає поточне положення Сигналу, а Сигнал підтверджує торговельну дію.
Приклади відмінностей між фільтрами та сигналами
Наприклад:
- Ви хочете назвати свій Фільтр MYFILTER?
- Номер фільтра також повинен збігатися з номером стратегії (Це робиться, щоб уникнути плутанини зі стандартними номерами індикаторів у майбутньому). Фільтри займають перші 22 номери, зарезервовані для стандартних індикаторів! Запам’ятайте цей номер для майбутнього використання.
- Ім’я також має бути унікальним. Наприклад, MYFILTER1
Врешті-решт, ви повинні написати в коді так:
MYFILTER1 = 77, // MY FILTER
Ви також можете додати більше фільтрів і написати, наприклад, так:
- MYFILTER1 = 77, // MY FILTER a
- MYFILTER2 = 78, // MY FILTER b
- 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: Створення стратегій та сигналів для відкриття позицій
Цей крок дуже важливий для радника. Хоча всі інші кроки обов’язкові, без цього кроку радник не буде функціонувати.
Я додав коментарі в код!
Номер стратегії збігається з номером з попередніх кроків!
- Програмний код для стратегії та сигналу індивідуальний. Він залежить від обраної стратегії та індикаторів. Налаштування буферів стратегії…
- Хочу зазначити, що в цьому блоці ви можете вказати будь-яку стратегію.
- Всі індикатори, які ми оголосили в хендлах, будуть завантажені в пам’ять і використані для побудови стратегії.
Цей крок можна розділити на 2 підкроки:
- 1. Програмування стратегії. У даному випадку це перетин двох ліній.
- Важливо: Сигнал на ПОКУПКУ (BUY) — 1, а на ПРОДАЖ (SELL) — -1.
- 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: Версія радника // 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), "", "");
Перший параметр функції — це ім’я змінної.
Другий параметр функції — значення змінної у зручному форматі!
Увага! Додавайте парну кількість параметрів, щоб забезпечити акуратне відображення на екрані!
Пов’язані публікації
Tick Hamster Автоматичний торговий робот. Нічого зайвого!
Tick Hamster – Експертний радник з автоматичною оптимізацією для будь-якого торгового символу в MetaTrader Tick Hamster – повністю автоматизований Експертний радник…
Extra Report Pad – Щоденник Трейдера. Професійно аналізує ваш торговий
Extra Report Pad – професійне рішення для аналізу вашого торгового рахунку Сьогодні надзвичайно важливо одночасно торгувати на кількох валютних парах. Але…
Partial Close and Trailing. Часткове закриття позицій на відкатах
Partial Close and Trailing — це помічник EA, який закриває частину позиції (тобто частину лота) під час відкату. EA частково закриває…
БІБЛІОТЕКА EAPADPRO – Додавання нашої панелі до вашого EA
БІБЛІОТЕКА EAPADPRO – Покращення вашого Експертного Радника (EA) за допомогою нашої інформаційної панелі БІБЛІОТЕКА EAPADPRO пропонує надійне рішення для трейдерів, які…
X і xCustomEA: тестування та оптимізація
Опис The X та The xCustomEA є двома видатними Експертними радниками (EAs) у спільноті Форекс, здобувши широку популярність за останні п’ять…
Duplicator – Дублювання угод/позицій на терміналах MetaTrader
Exp-Duplicator — це автоматичний Експертний Радник (Expert Advisor), розроблений для дублювання угод та позицій задану кількість разів на вашому рахунку…
EAPadPRO – Інформаційна панель для наших експертів. Панель управління для
Інформаційна панель для всіх наших радників та утиліт для терміналу MetaTrader. Детальні інструкції з основ управління та використання панелі…
Торговий звіт TickSniper і кращих радників Expforex
Опис Ми підсумували узагальнені та детальні результати торгів наших експертів TickSniper, Good Santa, Tick Hamster, The X, на наших реальних торгових рахунках. Статистика торгів наших Експертних…
TickSniper Автоматичний Експертний Радник для MetaTrader. Скальпер
Exp-TickSniper — це швидкий Tick скальпер, який автоматично вибирає параметри для кожної валютної пари окремо. Експертний радник розроблений на основі досвіду,…
Market Time Pad. Індикатор для MetaTrader з торговими сесіями
Індикатор часу відображає поточний час на основних світових ринках та підсвічує активну торгову сесію. Він легкий у використанні та…
SafetyLOCK PRO Захищайте свої позиції, блокуючи їх за допомогою відкриття
SAFETYLOCK: Захистіть свої угоди від різких ринкових розворотів Торгівля на фінансових ринках пов’язана з високими ризиками, особливо під час різких ринкових…
Торгова панель VirtualTradePad (VTP). Для торгівлі в один клік з
VirtualTradePad або VTP – панель управління для торгівлі в One Click в терміналах MetaTrader. Програма для скальпінгу та ручної торгівлі на Forex….
CLP CloseIfProfitorLoss. Контроль загального прибутку або збитку з трейлінг-прибутком.
Експертний радник (EA) пропонує розширені функції для управління та закриття позицій у MetaTrader, особливо при досягненні передвстановленого рівня загального прибутку…
The X – Універсальний Експерт Радник (EA) для Форекс на
Універсальний Експерт Радник (EA) для MetaTrader з розширеною функціональністю Експерт Радник The X — це універсальний торговий інструмент для…
Ця публікація також доступна на: English Portuguese Español Deutsch Українська Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt









