Програмування радників за індикаторами - за 5 хвилин - шаблон в темі! На форекс форумі
Програмування радників за індикаторами - Легко!
Програмування радників, для перевірки своєї стратегії з якихось індикаторами - досить проста справа.
І особливих знань в області програмування не потрібні.
Я розповім Вам, як зробити радника за 5 хвилин на основі будь-яких індикаторів.
Даний шаблон підходить тільки для стратегій. які явно показують роботу індикатора.
Для замовлення складніших систем - звертайтеся до програмістам (Програміст MQL, Програміст форекс, Радники на замовлення шукайте в гуглі).
Такий вид програмування буде платний, але він дасть Вам надійність, що Ваша система буде працювати саме так, як Ви цього хочете. Виділив я не для того щоб Ви мені надсилали на пошту свої ідеї, а для того щоб Ви розуміли суть написаного
Отже, для написання радника з Вашим індикаторами необхідно завантажити шаблон
Як бачите в настройках існує блок, в який потрібно перенести всі зовнішні параметри індикатора.
Далі, для запуску Вашої стратегії, необхідно прописати сигнали від Вашого індикатора в блок:
/ * Блок управління сигналом від Вашого індикатора
Створюємо змінні для сигналів індикатора
* /
int IndicatorSignal ()
int Sig = 0;
double ExampleMA = iMA (Symbol (), 0,20,0, MODE_SMA, PRICE_CLOSE, 1); // Приклад Виклику МА
double ExampleADX = iADX (Symbol (), 0,34, PRICE_CLOSE, MODE_MAI N, 1); // Приклад Виклику АДХ
double ExampleCustom = iCustom (Symbol (), 0, "Moving Averages", 20,0, MODE_SMA, 1); // Приклад виклику користувальницького індикатора
// Вказуємо Сигнали:
if (ExampleMA
// 1 - бай 2 - селл
return (Sig);
>
В даному прикладі показаний лише приклад роботи радника по індикатору МА.
Ви можете подивитися реалізацію алгоритму на прикладі Радника з Стратегії (Форекс ПУРІА)
Функціональні особливості експертів від expforex.com
99% експертів, індикаторів і програм, має ряд відмінних функціональних особливостей, в порівнянні з розробками інших програмістів
Для того, щоб Ви мали уявлення про дані особливості на наступних прикладах ми спробуємо розповісти Вам про наших відмінних функціональних можливостях.
У кожному експерта, розробленому на замовлення, Ви можете побачити ряд функцій
Один по одному я приведу повний опис даних функцій, а також на прикладі покажу Вам їх роботу.
1. Параметр отримання сигнального бар
shift (0,1,2.) Номер бару
Даний параметр є номер бару, з якого Ваші індикатори будуть брати сигнал. При замовленні експерта Ви повинні вказати такі параметри визначення сигналу: Відкривати угоду відразу ж після сигналу, або ж чекати. поки сигнал сформується на закритому барі і відкривати угоду тільки відкритті наступного бару
Деякі індикатори, в силу своїх алгоритмів, мають чітке визначення: на якому барі подається сигнал. Якщо говорити про чіткість і правильному виконанні наказу: то угоду необхідно обробляти тільки на закритому барі тобто параметр shift = 1, Якщо ж необхідно відкривати угоду відразу ж після настання сигналу на поточному барі і індикатор це дозволяє необхідно ставити shift = 0.
2. Переворот сигналів стратегії
ReverseSignal (true - false) Включений \ Виключений
Даний параметр є переворот сигналів Вашого індикатора \ індикаторів
Якщо Ваш експерт побудований на певному алгоритмі, або на певних сигналах індикатора, у Вас є можливість, без перепрограмування поміняти місцями сигнали BUY \ SELL
Наприклад: ReverseSignal = true
Ваш індикатор подав сигнал на BUY, але експерт відкриє угоду SELL.
Ваш індикатор подав сигнал на SELL, але експерт відкриє угоду BUY.
3. Використання відкладених ордерів при відкритті замість позиції
StopOrderUSE (true - false) і StopOrderDeltaifUSE (Від мінімально допустимого стопа на сервері) в пунктах
Даний параметр в зв'язці є можливість відкривати не позиції а відкладені ордери. Якщо допустимо після настання сигналу Ви хочете його перевірити шляхом установки відкладеного ордера
Наприклад: StopOrderUSE = true StopOrderDeltaifUSE = 100
Якщо Ваш індикатор подав сигнал на відкриття BUY то радник відкриє відкладений ордер BUYSTOP за ціною Ask + StopOrderDeltaifUSE пунктів
Якщо Ваш індикатор подав сигнал на відкриття SELL то радник відкриє відкладений ордер SELLSTOP за ціною Bid-StopOrderDeltaifUSE пунктів
Якщо параметр буде менше мінімально допустимого на сервері - експерт видасть помилку 130
4. Магічний номер
Magic (0. 99999) Номер
Даний параметр є особливий номер експерта, який стоїть на графіку, Якщо Ви використовуєте безліч експертів на різних графіках, для виключення проблем з заплутуванням між собою угод експертами, Вам необхідно кожному експерту привласнити свій окремий номер.
Якщо ж, наприклад, Ви використовуєте 1 експерта але з різними настройками, Вам необхідно кожному окремому експерту з настройками привласнити свій магічний номер. Також даний параметр необхідно міняти на різних валютних парах, щоб незабаром розібратися з деталізованим звітом, який експерт до якої парі був прив'язаний.
5. Стоплосс угоди
StopLoss (0.) в пунктах
Даний параметр є Стоплосс кожної позиції, Це кількість пунктів мінуса, при якому угода буде закрита сервером
0 - параметр відключений, і Стоплосс угоди буде дорівнює 0.
Даний параметр необхідно виставляти становити не менше - мінімально допустимого стопа на Вашому сервері.
Якщо параметр буде менше мінімально допустимого на сервері - експерт видасть помилку 130
6. Тейкпрофіт угоди
TakeProfit (0.) в пунктах
Даний параметр є Тейкпрофіт кожної позиції, Це кількість пунктів плюса, при якому угода буде закрита сервером
0 - параметр відключений, і Тейкпрофіт угоди буде дорівнює 0.
Даний параметр необхідно виставляти становити не менше - мінімально допустимого стопа на Вашому сервері.
Якщо параметр буде менше мінімально допустимого на сервері - експерт видасть помилку 130
7. Прослизання угоди
Slippage (0.) В пунктах
Даний параметр регулює прослизання ціни при відкритті угоди
На реальному ринку ціна рухається дуже швидко, тому при подачі наказу на сервер, сервер може видати відповідь: Ціни змінилися, реквот і так далі. Для того щоб не посилати сервера безліч наказів, можна задати параметр допустимого прослизання при відкритті угоди
Наприклад: Slippage = 10
При подачі наказу на відкритті ціна була 1.1234, Але ціна змінилася на 1.1238, в цьому випадку угода відкриється за ціною 1.1238 НЕ повертаючи при цьому реквот. Але якщо Slippage = 0, в даному прикладі угода не відкриється, сервер видасть помилку реквот (Нові ціни).
8. MARKET виконання позицій на рахунку
MarketWatch (true - false)
Даний параметр може бути включений для рахунків, що знаходяться в групі ECN \ NDD і \ або рахунках, на яких використовується Market виконання.
Принцип дії: На рахунках перебувають у групі ECN \ NDD і \ або рахунках, на яких використовується Market виконання, заборонено відкривати позиції до встановлених Стоплосс \ Тейкпрофіт, але дозволено відкривати позицію з Стоплосс \ Тейкпрофіт = 0, і при цьому після успішного відкриття модифікувати позицію на Стоплосс і \ або Тейкпрофіт
Ця функція, при включеному стані, спочатку відкриває позицію, потім встановлює на неї Стоплосс \ Тейкпрофіт
9. Закриття угод по зворотному сигналу
ClosePosifChange (true - false)
Даний параметр регулює можливість закривати протилежну операцію при відкритті нової. Якщо Ваш індикатор використовує сигнали. BUY - SELL - BUY - SELL. то при включенні даного параметра, експерт перед відкриттям нової угоди буде закривати протилежну
10. Кількість позицій сигналів стратегії
ONlyOnePosbySignal (true - false) Включений \ Виключений
Даний параметр регулює можливість відкриття однієї позиції або безлічі позицій.
При чому в включеному положенні, при кожному сигналі на 1 бар буде відкрита 1 позиція.
Наприклад: Сигнали Вашої стратегії дають по черзі сигнал на BUY на кожному новому барі, при цьому якщо функція ONlyOnePosbySignal = true то на кожному барі при надходженні сигналу буде відкрита угода BUY
Якщо дана функція ONlyOnePosbySignal = false. то експерт може відкрити тільки одну угоду BUY і одну угоду SELL і чекати, поки вони не закриються
11. Фіксований лот
DynamicLot (true - false) LotBalancePcnt (у відсотках від вільної маржі)
Дані параметри регулюють автоматичний розрахунок і установку лота від вільної маржі
Детально про даний параметрі розказано в статті Автолот (Розрахунок лота від поточного балансу)
13. Максимальний лот
OpenHour (в годинах) OpenMinute (в (в хвилинах)) CloseHour (в годинах) CloseMinute (в хвилинах)
Дані параметри регулюють діапазон часу роботи радника, при чому даний час поширюється тільки на відкриття нових позицій, Траллінгстоп, безубиток працюватимуть незалежно від діапазону
Наприклад: Ви хочете щоб експерт торгував тільки з 14:00 до 18:35, тоді Параметри будуть виглядати так: OpenHour = 14 OpenMinute = 0 CloseHour = 18 CloseMinute = 35
Угоди будуть відкривати тільки в діапазоні з 14:00 до 18:35, весь інший час, радник буде пропускати сигнали Вашої стратегії.
16. Класичний TralingStop
TrailingStopUSE (true - false) IfProfTrail (true - false) TrailingStop (в пунктах) TrailingStep (в пунктах)
Дані параметри включають \ відключають автоматичне стеження за позицією шляхом модифікації стоплосса в + зону.
TrailingStopUSE - Включає \ дозволяє визначати, чи Траллінгстоп
IfProfTrail - при true Радник починає модифікацію тільки з моменту виходу позиції в безубиток. при false - тралінгстоп починає працювати відразу після виставлення позиції і тягне його слідом за ціною
TrailingStop - відстань в пунктах від поточної ціни до передбачуваного стоплосса. Даний параметр не може бути менше мінімально допустимого на Вашому сервері.
TrailingStep- крок модифікації стоплосса
Наприклад: Стоплосс буде модифікуватися кожні TrailingStep пунктів на відстані TrailingStop пунктів від поточної ціни
17 TralingStop по PARABOLIC SAR
TrailingStopSAR (true - false) step і maximum (параметри Параболик SAR)
Дані параметри включають можливість модифікації стоплосса за встановленим параболік
При цьому стоплосс буде модифікуватися при кожному новому значенні Параболик SAR.
Відповідно, BUY модифікується, коли Параболик знаходиться нижче ціни, Sell модифікується коли параболік знаходиться вище ціни.
18. Функція закриття по загальному прибутку \ збитку
Дані параметри регулюють можливість закрити операцію \ угоди по даному інструменту і магічно, досягнувши один з параметрів
параметри
TypeofClose = 1; -Тип закриття по прибутку 1 - Долар, 2 -пункт, 3 -% Еквіті, 4 -% Балан
CloseProfit = false; -Закривать якщо +
prifitessss = 10; -Кількість юнітів (в залежності від вибору TypeofClose) для закриття профіту
CloseLoss = false; -закривать якщо -
lossss = -10; -Кількість юнітів (в залежності від вибору TypeofClose) для закриття збитку
OFFAllEaAfterClosePROF = false; -Виключать все радники і скрипти після закриття прибутку.
OFFAllEaAfterCloseLOSS = false; -Виключать все радники і скрипти після закриття збитку.
наприклад:
Якщо Ви хочете закрити кілька угод BUY \ SELL при прибутку за рахунком в 10 $:
TypeofClose = 1; CloseProfit = true; prifitessss = 10;
Якщо Ви хочете закрити кілька угод BUY \ SELL при збитку за рахунком в 200 пунктів:
TypeofClose = 2; CloseLoss = true; lossss = 200;
Якщо Ви хочете закрити кілька угод BUY \ SELL при збитку за рахунком в 5% від депозиту, а також закрити кілька угод BUY \ SELL при прибутку за рахунком в 10% від депозиту:
TypeofClose = 4; CloseLoss = true; lossss = 5; CloseProfit = true; prifitessss = 10;
При цьому Ви можете відключити радники після закриття включаючи функцію OFFAllEaAfterClosePROF і \ або OFFAllEaAfterCloseLOSS. Тоді радник після загального закриття відключить всі радники
19. Установка стоплосса в безубиток
MovingInWLUSE (true - false) LevelWLoss (в пунктах) LevelProfit (в пунктах)
Дані параметри регулюють можливість включити зміну угоди в безубиток, при першій нагоді
наприклад
Ви хочете встановити стоплосс в безубиток, коли угода набере +10 пунктів прибутку:
MovingInWLUSE = true; LevelWLoss = 0; LevelProfit = 10;
Ви хочете встановити стоплосс в +5 пунктів, коли угода набере +20 пунктів прибутку:
MovingInWLUSE = true; LevelWLoss = 5; LevelProfit = 20;
При цьому Різниця між LevelProfit - LevelWLoss повинні бути завжди більше або дорівнює мінімальному стопу на сервері