Программирование советников по индикаторам - за 5 минут - шаблон в теме!

expforex

Программиров

Программирование советников по индикаторам - Легко!


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

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

Для заказа более сложных систем - обращайтесь к программистам(Программист MQL, Программист форекс, Советники на заказ ищите в гугле).
Такой вид программирования будет платный, но он даст Вам надежность, что Ваша система будет работать именно так, как Вы этого хотите. Выделил я не для того чтобы Вы мне присылали на почту свои идеи, а для того чтобы Вы понимали суть написанного




Итак, для написания советника по Вашим индикаторам необходимо скачать шаблон

Код полностью открытый и комментированный, поэтому Вам не составит особого труда разобраться в его содержимом.
Остановимся на главном:

Настройки
extern string Indicators_=" Настройки индикатора";
/* Здесь прописываем настройки Вашего индикатора\индикаторов */
/* Стандартные переменные для шаблона НЕ ИЗМЕНЯТЬ!!! */
extern string In_=" Настройки входа";
extern bool ReverseSignal=false; // true - Переворачивать сигнал стратегии.
extern string trade_="Настройки торговли";
extern int Magic=777; // Магический номер
extern int StopLoss=0; // Стоплосс, 0 - не используется
extern int TakeProfit=0; // Тейкпрофит, 0 - не используется
extern int Slippage=0; // Проскальзывание
extern bool MarketWatch=false; // Режим торговли по MarketWatch true = сначала выставляются позиции/ордера без стопов, потом происходит модификация - для некоторых брокеров
extern bool ClosePosifChange=true; // Закрывать позиции при обратном сигнале
extern bool ONlyOnePosbySignal=true; // Играть только или бай и / или селл 1 позицией
extern string autolot_="Настройки автолота";
extern double Lots=0.1; // Фиксированный лот
extern bool DynamicLot=false; // Динамический лот
extern double LotBalancePcnt=20; // % от депозита
extern double MinLot = 0.1; // Минимальный лот при расчете
xtern double MaxLot = 5; // Максимальный лот при расчете
extern double Martin=1; // Если 1 то не используется, Коэффициент мартина на следующую сделку после убытончой
extern string timetrade_="Настройки времени торговли";
extern int OpenHour=0; // Час открытия торгов
extern int OpenMinute=0; // Минута открытия торгов
extern int CloseHour=23; // Час закрытия торгов
extern int CloseMinute=59; // Минута закрытия торгов
extern string Trailing_="Настройки трейлингстопа";
extern bool TrailingStopUSE=false; // Использовать трейлингстоп
extern bool IfProfTrail=false; // Использовать только дял профитных позиций - режим безубытка
extern int TrailingStop=0; // Дистанция трейлинга = 0 - минимально допустимый
extern int TrailingStep=1; // Шаг дистанции

Как видите в настройках существует блок, в который нужно перенести все внешние параметры индикатора.


Далее, для запуска Вашей стратегии, необходимо прописать сигналы от Вашего индикатора в блок:
/* Блок управления сигналом от Вашего индикатора
Создаем переменные для сигналов индикатора
*/
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_MAIN,1);// Пример Вызова АДХ
double ExampleCustom=iCustom(Symbol(),0,"Moving Averages",20,0,MODE_SMA,1); // Пример вызова пользовательского индикатора
//Указываем Сигналы:
if( ExampleMA<Bid)Sig=1; // Если МА ниже цены БИД - открываемся в бай
if( ExampleMA>Bid)Sig=2; // Если МА выше цены БИД - открываемся в селл
// 1 - бай 2 - селл
return(Sig);
}

В данном примере показан лишь пример работы советника по индикатору МА.

Вы можете посмотреть реализацию алгоритма на примере Советника по Стратегии (Форекс ПУРИА)


Спасибо
 

Вложения

Последнее редактирование:

ron0007

Активный участник
как прописать сигнал допустим если сигналом является стрелка либо какойто знак
и чтоб ордер закрывался и открывался при обратном сигнале
 

expforex

Программиров
в каждом индикаторе есть буфер, откройте график - далее нажмите на панели окно данных, и наведите на стрелку, увидите что индикатор дает какие то значения на эту стрелку, высчитайте номер буфера, начинать с 0 и далее в шаблоне можно прописать - вывод индикаторного буфера с этой стрелкой, и если он равна какому -то значению открываемся.
 

Andy200577

Новичок форума
Все конечно замечательно и красиво, думаю очень полезная штука, если разобраться. Но по моему, утверждение что "И особых познаний в области программирования не нужны" это слишком наивно звучит.
Поясните пожалуйста на примере, если не сложно. В предыдущем ответе от expforex идёт речь о буфере, посмотрел окно данных, да действительно абсолютно любой индикатор показывает какие-то данные, но вот как из загнать в советник, как высчитать номер буфера для неподготовленного человека абсолютно непонятно. Поясните пожалуйста подробнее.
 

Vip_di

Активный участник
Я пожалуй присоединюсь к просьбе Andy200577.

Дорогой expforex пожалуйста если Вас не затруднит покажите как вписать в код советника сторонний индикатор
 

Andy200577

Новичок форума
Думаю, что для создателя этой темы нет особого интереса её дальше развивать и выкладывать на всеобщее обозрение готовый код. Возможно данная тема была создана в качестве саморекламы, поскольку в любом случае возникают у многих вопросы дальше.
Уважаемый expforex, я готов заплатить за то, чтобы вы просто показали каким образом высчитывать номер буфера, читать данные индикаторов из него и загонять в советник. Ведь в принципе задача дальше возникает, как мне представляется, достаточно просто: считываются данные какого-либо индикатора или группы индикаторов из буфера и в зависимости от их значений и поставленных условий к ним происходит или не происходит открытие ордера.
 

expforex

Программиров
К сожалению не забросил, да и это не самореклама. а может быть и она? кому как нужно пусть тот так и считает, добавить нечего.
Я уже наслушался гадостей, поэтому да ВЫ правы - нет желания ее дальше развивать.
 

RaBort

Новичок форума
К сожалению не забросил, да и это не самореклама. а может быть и она? кому как нужно пусть тот так и считает, добавить нечего.
Я уже наслушался гадостей, поэтому да ВЫ правы - нет желания ее дальше развивать.
Всякое бывает. Не стоит напрягаться по всяким недоразумениям:-(
Спасибо за код:-)
 

expforex

Программиров
Прошу прощения.

Если у кого-то когда-то появится желание приобрести платную версию (Наличие некоторых особенных функций - улучшение алгоритма. ПРОСТО БЛАГОДАРНОСТЬ)
и так далее : _http://www.mqlsoft.net/shop/163/desc/exp-templates-9-otkrytyj-kod
 

expforex

Программиров
Функциональные особенности экспертов от 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. Фиксированный лот

Lots (0.01 .........) Установка фиксированного лота на все сделки
Данный параметр устанавливает количество лотов при открытии сделки. Лот фиксированный и распространяется на все сделки
При этом, Вы должны уточнить у брокера минимально допустимый лот, для открытия сделки
12. Динамический лот Подробная статья

DynamicLot(true - false) LotBalancePcnt(в процентах от свободной маржи)
Данные параметры регулируют автоматический расчет и установку лота от свободной маржи
Подробно о данном параметре рассказано в статье Автолот(Расчет лота от текущего баланса)
13. Максимальный лот

MaxLot (0.01 ......) Установка максимального лота на сделку
Данный параметр регулирует максимальный лот, который может быть установлен на 1 позицию. Применяется с параметрами Martin и\или DynamicLot
Если значение лота при расчете будет больше чем MaxLot итоговый лот будет равен MaxLot
Например: Если Вы не хотите, чтобы эксперт открывал сделки лотом более 0.09 лотов, Вы можете установить параметр MaxLot = 0.09.
14. Мартингейл

Martin (1....) в коэффициенте
Данный параметр позволяет Вам использовать принцип Мартингейла для своей стратегии, в котором следующая сделка за убыточной будет открывать из расчета Лот * Martin
При этом если параметр равен 1, то Мартингейл не используется.
Например: Lots = 0.01 Martin =2:
1 сделка BUY(0.01) закрылась в минусе \ или по стоплоссу(в минусе)
2 сделка будет открыта с лотом 0.01 * 2 = 0.02
3 если предыдущая сделка была закрыта по стоплоссу, то следующая сделка будет открыта лотом 0.04
Если предыдущая сделка была закрыта в + либо же по тейкпрофиту, то следующая за ней будет открыта с начальным лотом 0.0
15. Время работы эксперта

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 должны быть всегда больше или равна минимальному стопу на сервере
 
Последнее редактирование модератором:

سيرجي كيروف

Местный знаток
немогли бы вы вставить вот этот индикатор в шаблон параметры 20 и 240 и если рисует чтоб непереигрывал первую открытую сделку
 

Вложения

  • DT.ex4
    DT.ex4
    3,1 КБ · Просмотры: 97

MaRsEl522

Интересующийся
Привет expforex, сколько будет написать советник по индикатору?
 

expforex

Программиров
Привет expforex, сколько будет написать советник по индикатору?

Я делаю дорого, потому что качественно, 50 $,

так что можно поискать подешевле (за 10 баксов могут написать корявенький код) а потом опять искать программиста и делать нормальный код. _http://www.expforex.com/index/programming_in_mql4_mql5/0-3 тут форма
 

tolik2008

Почетный гражданин
Возможно данная тема была создана в качестве саморекламы
Явная самореклама. Тему надо было назвать "Советник за 5 минут - и за 50$". Написать советник по данному шаблону у новичка нет никаких шансов, не за 5 минут, не за час, не за день.
 

expforex

Программиров
Было бы желание, написать можно всегда. А если не можете - закажите программисту.
 
Верх