Функціональні можливості та параметри експертів від www.expforex.com
Переваги готових експертів проти програмування / фрілансу.
Опис
Давайте розглянемо приклади поведінки індикаторів, зосередившись на тих, що малюють та тих, що не малюють. Наприклад, розглянемо, як барний індикатор може функціонувати як сигнал інакше порівняно з іншими.
Відмінності сигналів у програмуванні. Використання параметра зсуву (Shift)
Для кращого розуміння роботи індикаторів корисно дослідити приклади як малюючих індикаторів, так і немалюючих індикаторів.
Малюючі індикатори (Repaint) — це ті, що безпосередньо малюють на ціновому графіку, тоді як немалюючі індикатори відображають свої результати у окремому вікні. НІ
Малюючі або перемальовувані індикатори — це технічні інструменти, які використовуються в трейдингу для модифікації своїх сигналів (наприклад, стрілок) або зміни напрямку сигналу, щоб надати більш точні вказівки на поточних або попередніх барів.
Bar = Бар = Свічка:
Ці індикатори мають здатність перемальовувати свої сигнали, що може розглядатися як порушення цілісності трейдингу та обманна практика.
Деякі індикатори свідомо перемальовують свої сигнали, щоб покращити візуальну привабливість, роблячи графік більш естетично приємним.
Інші індикатори виконують перемальовку як частину своїх математичних розрахунків для покращення точності та надійності генерованих сигналів.
Однак, це нормальна поведінка для всіх індикаторів малювати на 0-му барі або на поточному барі. Це початкове малювання забезпечує правильне вирівнювання індикатора з останніми ринковими даними.
Давайте дослідимо основні причини, чому індикатори перемальовують свої сигнали, та наслідки цього для торгових стратегій.
Різниця в сигналах між цими двома типами індикаторів може бути суттєвою, тому розуміння їх поведінки є критично важливим при програмуванні торгових стратегій.
Одним зі способів впливу на поведінку індикаторів є використання параметра зсуву (Shift), який дозволяє зрушувати вихідні дані індикатора вперед або назад у часі.
Експериментуючи з різними значеннями параметра зсуву (Shift), ви можете тонко налаштувати свої індикатори для кращого вирівнювання з вашою торговою стратегією, тим самим збільшуючи ваші шанси на успіх на ринку.
І ви можете перевірити такі індикатори за допомогою тестера стратегій, використовуючи наш універсальний Експерт Advisor:
EA The xCustomEA: Універсальний Торговий Advisor для iCustom Індикаторів. Builder Стратегії
Або в тестері стратегій, використовуючи наш Симулятор:
Передмова
Ця стаття була написана за запитом наших партнерів.
Замовляючи програмування Експерт Advisor, ви можете налаштувати сигнальний бар у всіх моїх радниках.
Зазвичай онлайн з’являються скарги, що деякі Експерт Advisors працюють неправильно через їхні індикатори.
Я детально поясню ці сигнали і продемонструю протилежне: всі індикатори малюють, і їх просто потрібно правильно використовувати.
Існує відео версія цієї статті, але перед переглядом рекомендую прочитати текстову версію для глибшого розуміння.
Зсув (Shift) (0,1,2…..) Номер бару
Цей параметр представляє номер бару, з якого ваші індикатори будуть брати сигнал.
Замовляючи Експерт Advisor, ви повинні вказати наступні параметри визначення сигналу: відкрити угоду негайно після сигналу або почекати, поки сигнал сформується на закритому барі і відкрити угоду лише при відкритті наступного бару.
Через їхні алгоритми деякі індикатори мають чітке визначення: на якому барі подано сигнал?
Якщо говорити про чіткість і правильне виконання ордера, то угода повинна оброблятися лише на закритому барі, тобто параметр зсув=1.
Якщо необхідно відкрити УГОДУ негайно після виникнення сигналу на поточному барі і індикатор це дозволяє, потрібно встановити зсув=0.
Expert Advisor
EA написаний за допомогою нашого шаблону для написання EA. Усі функції радника описані на цій сторінці: Функції Forex Advisor.
Ви можете завантажити пакет за посиланням Сигнальний бар Тестовий пакет
1. Індикатор ковзної середньої (Moving Average Indicator)
Стандартний індикатор терміналу MT4 включає період усереднення, усереднені ціни та тип усереднення в налаштуваннях.
Торгова стратегія: Перетин середніх. Перетин повільної MA та швидкої MA.
Код стратегії:
double ExampleMA=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,shift); // Виклик MA Example double ExampleMA2=iMA(Symbol(),0,50,0,MODE_SMA,PRICE_CLOSE,shift); // Виклик MA Example double ExampleMA23=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,shift+1); // Виклик MA Example double ExampleMA22=iMA(Symbol(),0,50,0,MODE_SMA,PRICE_CLOSE,shift+1); // Виклик MA Example if(ExampleMA23 < ExampleMA22 && ExampleMA > ExampleMA2) Sig=1; if(ExampleMA23 > ExampleMA22 && ExampleMA < ExampleMA2) Sig=2;
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Цей індикатор не малює, що дозволяє використовувати його з будь-яким зсувом.
Відео приклад:
2. Індикатор перетину (Indicator Cross)
Користувацький індикатор, заснований на стратегії перетину MA з додатковими функціями. Він малює помітно з точністю. Перетин на 1 барі малює стрілку на 0 барі і постійно перемальовує її.
Торгова стратегія: Торгівля стрілками
Код стратегії:
int Sig=0; if(shift != -1) { double UP=iCustom(Symbol(),0,"cross",0,shift); double DN=iCustom(Symbol(),0,"cross",1,shift); } if(shift == -1) { for(int i=1; i<=100; i++) { UP=iCustom(Symbol(),0,"cross",0,i); DN=iCustom(Symbol(),0,"cross",1,i); if(UP != EMPTY_VALUE || DN != EMPTY_VALUE) break; } } if(UP != EMPTY_VALUE){ Sig=1; } if(DN != EMPTY_VALUE){ Sig=2; }
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Приклади роботи з Shift = -1
Пояснення: Цей індикатор малює помітно, і розробник свідомо перемальовує сигнал. Тому ризиковано використовувати цей індикатор як сигналізуючий індикатор.
Відео приклад:
3. Індикатор CurrencyPowerMeter
Користувацький індикатор, який вимірює силу валют. Цей індикатор працює за допомогою об’єктів, тому зсув не має значення. Торгова стратегія для цього індикатора базується на витягуванні значення не з буферу індикатора, а з вказівки об’єкта на графіку.
Торгова стратегія: Торгівля на різниці сил валют
Код стратегії:
double EUR_HOUR[1]; double GBP_HOUR[1]; double AUD_HOUR[1]; double NZD_HOUR[1]; double USD_HOUR[1]; double CAD_HOUR[1]; double CHF_HOUR[1]; double JPY_HOUR[1]; double PervayaValuta; double VtorayaValuta; string note=" Authentication SETTINGS =="; string username = ""; string password = ""; double trend; string DATATRend; trend = iCustom(Symbol(),0,"CurrencyPowerMeter",0,0); EUR_HOUR[0] = StringToDouble(ObjectDescription("CPMEUR_Str_h")); GBP_HOUR[0] = StringToDouble(ObjectDescription("CPMGBP_Str_h")); AUD_HOUR[0] = StringToDouble(ObjectDescription("CPMAUD_Str_h")); NZD_HOUR[0] = StringToDouble(ObjectDescription("CPMNZD_Str_h")); USD_HOUR[0] = StringToDouble(ObjectDescription("CPMUSD_Str_h")); CAD_HOUR[0] = StringToDouble(ObjectDescription("CPMCAD_Str_h")); CHF_HOUR[0] = StringToDouble(ObjectDescription("CPMCHF_Str_h")); JPY_HOUR[0] = StringToDouble(ObjectDescription("CPMJPY_Str_h")); if(StringSubstr(Symbol(),0,3) == "USD") PervayaValuta = USD_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "GBP") PervayaValuta = GBP_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "EUR") PervayaValuta = EUR_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "AUD") PervayaValuta = AUD_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "NZD") PervayaValuta = NZD_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "CAD") PervayaValuta = CAD_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "CHF") PervayaValuta = CHF_HOUR[0]; if(StringSubstr(Symbol(),0,3) == "JPY") PervayaValuta = JPY_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "USD") VtorayaValuta = USD_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "GBP") VtorayaValuta = GBP_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "EUR") VtorayaValuta = EUR_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "AUD") VtorayaValuta = AUD_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "NZD") VtorayaValuta = NZD_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "CAD") VtorayaValuta = CAD_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "CHF") VtorayaValuta = CHF_HOUR[0]; if(StringSubstr(Symbol(),3,3) == "JPY") VtorayaValuta = JPY_HOUR[0]; if(PervayaValuta - VtorayaValuta > 0) return(1); if(PervayaValuta - VtorayaValuta < 0) return(2); return(0);
Приклади роботи
Пояснення: Цей індикатор не має буферів індикатора і базується на об’єктах. Тому сигнальний бар не має значення. Такі індикатори не можуть бути протестовані або оптимізовані і працюють лише в реальному часі.
Відео приклад:
4. Індикатор Fiji Trend
Користувацький індикатор, який працює на сигналах MA та ATR у вигляді стрілок. Він не малює індикатор, але з невеликим трюком індикатор бере дані з закритих барів, але розміщує стрілку на поточному 0 барі. Це ілюзія обману.
Торгова стратегія: Торгівля на стрілках індикатора
Код стратегії:
int Sig=0; double DNSignal=iCustom(Symbol(),0,"Fiji Trend",3,shift); // Приклад виклику користувацького індикатора double UPSignal=iCustom(Symbol(),0,"Fiji Trend",2,shift); // Приклад виклику користувацького індикатора double DNTrend=iCustom(Symbol(),0,"Fiji Trend",1,shift); // Приклад виклику користувацького індикатора double UPTrend=iCustom(Symbol(),0,"Fiji Trend",0,shift); // Приклад виклику користувацького індикатора // Визначення сигналів для відкриття: if(UPSignal != EMPTY_VALUE) Sig=1; if(DNSignal != EMPTY_VALUE) Sig=2;
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Цей індикатор не малює. Однак він розміщує сигнали за допомогою згаданого трюку. Це один з небагатьох індикаторів, які надають досить хороші сигнали.
Відео приклад:
5. Індикатор Fisher
Користувацький індикатор, який працює на Hi-Lo барах та розраховує сигнали на основі своїх формул. Він малює, як демонструють тести, та перемальовує 3-5 барів на закритих барах, представлених у вигляді гістограми.
Торгова стратегія: Торгівля гістограмою. Перетин гістограми 0 міток.
Код стратегії:
int Sig=0; double DNSignal=iCustom(Symbol(),0,"Fiji Trend",3,shift); // Приклад виклику користувацького індикатора double Fisher1=iCustom(Symbol(),0,"fisher",0,shift); double Fisher2=iCustom(Symbol(),0,"fisher",0,shift); if(Fisher1 > 0 && Fisher2 > 0){ Sig=1; } if(Fisher1 < 0 && Fisher2 < 0){ Sig=2; } // 1 - Купити, 2 - Продати return(Sig);
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Цей індикатор малює, тому я не рекомендую брати сигнали з нього.
Відео приклад:
6. Індикатор HMA Color
Користувацький індикатор, який працює на MA та розраховує сигнали на основі своїх формул.
Торгова стратегія: Торгівля зміною кольору
Код стратегії:
int Sig=0; double HMARED=iCustom(Symbol(),0,"HMA Color",3,shift); double HMAGREEN=iCustom(Symbol(),0,"HMA Color",1,shift); double HMARED2=iCustom(Symbol(),0,"HMA Color",3,shift+1); double HMAGREEN2=iCustom(Symbol(),0,"HMA Color",1,shift+1); // Визначення сигналів для відкриття: if(HMAGREEN != EMPTY_VALUE && HMAGREEN2 == EMPTY_VALUE) Sig=1; if(HMARED != EMPTY_VALUE && HMARED2 == EMPTY_VALUE) Sig=2;
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Цей індикатор не малює. Однак він розміщує сигнали за допомогою згаданого трюку. Це один з небагатьох індикаторів, які надають досить хороші сигнали.
Відео приклад:
7. Індикатор MACD
Стандартний індикатор терміналу MT.
Торгова стратегія: Торгівля на перетині сигнальної лінії та гістограми
Код стратегії:
int Sig=0; double MACD_SIGNAL1=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift); // Виклик MACD сигналу double MACD_SIGNAL2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift+1); // Виклик MACD сигналу double MACD_MAIN1=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift); // Виклик MACD основи double MACD_MAIN2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift+1); // Виклик MACD основи if(MACD_SIGNAL2 < MACD_MAIN2 && MACD_SIGNAL1 > MACD_MAIN1) Sig=1; if(MACD_SIGNAL2 > MACD_MAIN2 && MACD_SIGNAL1 < MACD_MAIN1) Sig=2;
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Цей індикатор не перемальовує на 1 закритому барі, тому ви можете вільно використовувати зсув=1.
Відео приклад:
8. ZIGZAG Індикатор
Стандартний індикатор терміналу MT. Будує вершини та низини на основі високого-низького певної області.
Торгова стратегія: Торгівля на формуванні вершин та низин. Не рекомендується торгувати на індикаторі з позиціями. Це гарна стратегія обмеження.
Код стратегії:
int Sig=0; double PriceZZ1=GetExtremumZZPrice(Symbol(),0,1); double PriceZZ2=GetExtremumZZPrice(Symbol(),0,2); double priceUP, priceDN; if(PriceZZ2 > PriceZZ1) { priceUP = PriceZZ2; priceDN = PriceZZ1; Sig = 2; } if(PriceZZ2 < PriceZZ1) { priceUP = PriceZZ1; priceDN = PriceZZ2; Sig = 1; }
Приклади роботи з Shift = 0
Пояснення: Цей індикатор малює вершини та низини, тому зсув не має значення. Унікальні умови стратегії дозволяють успішну торгівлю на цьому індикаторі.
Відео приклад:
9. BARS Робота на запит
Працює на стандартних барах терміналу MT.
Торгова стратегія: Якщо бар бичачий, відкрити купівлю; якщо бар ведмежий, відкрити продаж.
Код стратегії:
int Sig=0; if(Open[shift] < Close[shift]) Sig=1; if(Open[shift] > Close[shift]) Sig=2;
Приклади роботи з Shift = 0
Приклади роботи з Shift = 1
Пояснення: Ідеальний приклад того, як працює параметр зсув, демонструючи, як ви можете торгувати стратегіями на основі цього параметра.
Відео приклад:
Висновки
Ця інформативна стаття надає корисні приклади використання різних індикаторів з різними значеннями параметра зсуву.
Кожен індикатор є унікальним; тому при створенні Expert Advisor тип індикатора та його сигналу слід враховувати.
Перед найманням програміста для створення Expert Advisor важливо спочатку протестувати ваш індикатор на можливі проблеми з перемальовкою.
Це критично важливо, оскільки надійність і ефективність торгівлі вашого робота залежатиме від точності вашого індикатора.
Тому рекомендується ретельно перевірити та протестувати ваш індикатор перед початком створення вашого Expert Advisor.
Advisor
EA написаний за допомогою нашого шаблону для написання EA.
Усі функції радника описані на цій сторінці: Функції Forex Advisor.
Якщо ви хочете створити сповіщення для вашого індикатора, будь ласка, прочитайте нашу статтю:
Питання?
Якщо у вас є будь-які питання, будь ласка, задавайте їх. Ми не продаємо кота в мішку.
Кожен наш продукт можна протестувати перед покупкою.
Ми цінуємо ваші відгуки та побажання щодо наших продуктів і прагнемо підтримувати високі стандарти якості.
Дякуємо, що ви з нами!
У вас є питання?
Ця публікація також доступна на: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply