MQL для тебя

MQL для чайников, программирование на MQL4, MQL5

Рекомендуемый ДЦ - Alpari !

На прошлом уроке Язык MQL — Урок 6 «эксперт Hedge Hog» мы написали советник Forex торгующий по стратегии Hedge Hog. Сегодня займемся его тестированием и оптимизацией в Metatrader.

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

Для этого необходимо выполнить следующие действия:
1. Проверить его на тестере стратегий MT4
2. Провести оптимизацию советника и проверить ее результат
3. Проверить, как работает советник форекс на демо-счете
4. Проверить советник на центовом счете форекс

Пункты 1,2,4 обязательны к выполнению! Пункт 3 желателен, но необязателен. Дело в том, что проверка на демо-счете и центовом счете занимают много времени. В отличии от тестера стратегий Metatrader 4 — торговля на них идет в реальном режиме времени. Поэтому один из этих этапов, начинающие трейдеры форекс частенько пропускают. Я настоятельно рекомендую НЕ пропускать 4 пункт - тестирование советника форекс на центовом счете. Советник может прекрасно работать на тестере и демо счете, а на реальном, как не странно, не торговать вовсе или «слить» ваш депозит. На реальном счете (центовый счет — это реальный счет с минимально разрешенными суммами депозита) присутствуют такие моменты, которых нет в тестере или на демо счете. Это отказы в обслуживании брокером форекс, проскальзывание цен и т.д.

Итак, начнем по порядку.

Запускаем тестер стратегий MT4 Запуск тестера , выбираем наш советник «expert1». Выбираем символ "EURUSD" как того требует стратегия Hedge Hog. Модель рекомендую выбрать "Все тики" как наиболее точный метод тестирования. Указываем интервал дат истории для тестирования. Я указал за декабрь месяц 2009 года. Выбираем Период на котором будет работать наш советник. Я выбрал часовой, хотя для нашего советника это не важно.

Настройки тестирования

Нажимаем кнопочку «Старт» и ждем окончания процесса тестирования советника.
У меня советник не совершил ни одной сделки. А в журнале появилось много ошибок. Дело в том что я использовал сервер Алпари для тестирования. У них 5 значные котировки, а стратегия «Hedge Hog» писалась для 4 значных котировок.

Это легко исправимо. Достаточно тейкпрофит увеличить в 10 раз (вместо 14 пунктов указать 140 пунктов). Нажимаем кнопочку «Свойства эксперта» и в появившемся окошке изменяем.

Свойства советника

Нажимаем «OK» и запускаем тестирование еще раз.
Теперь появились сделки. Открываем график: (далее…)

Рекомендуемый ДЦ - Forex4you !

Как я и обещал, сегодня мы займемся написанием эксперта Hedge Hog на языке MQL, но сначала давайте объединим уже полученные ранее знания и напишем собственные функции на MQL4.

Сразу возникает вопрос: «Что это нам даст?»

Ну во первых это уменьшит количество строк в нашем советнике для Metatrader 4. Во вторых можно не тратить время при написании следующих советников форекс, а просто использовать ранее написанные функции в новом коде.

Функции MQL4 — это кирпичики из которых можно легко сложить рабочий эксперт MT4, не отвлекаясь каждый раз на одну и ту-же работу.

Расчет лота в MT4, поместим в функцию — "Функция расчета лота":
double GetLot(int Risk)
{double Free    =AccountFreeMargin();
 double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
 double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
 double Step    =MarketInfo(Symbol(),MODE_LOTSTEP);
 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
 if(Lot<Min_Lot) Lot=Min_Lot;
 if(Lot>Max_Lot) Lot=Max_Lot;
 if(Lot*One_Lot>Free) return(0.0);
return(Lot);}

Обратите внимание на строчку: if(Lot*One_Lot>Free) return(0.0);

В ней мы производим проверку на достаточность средств на торговом счету форекс. И если их окажется недостаточно, возвращаем 0.

Для открытия ордера Metatrader 4, при помощи советника форекс,  напишем функцию — "Функция открытия ордера":
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
 double SL=0; //стоплосс
 double PR=0; //Цена
 while(!IsTradeAllowed()) Sleep(100);
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=Ask+TakeProfit*Point;
    if(StopLoss>0) SL=Ask-StopLoss*Point;}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=Bid-TakeProfit*Point;
    if(StopLoss>0) SL=Bid+StopLoss*Point;}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"«,0,0,CLR_NONE);
 if(tic<0) Print(»Ошибка открытия ордера: «,GetLastError());
return(tic);}

В этой функции на языке MQL мы использовали новые для нас команды MQL4:

Print() — Выдать сообщение в журнал.

GetLastError() — Номер последней ошибки.

Никогда не помешает знать об возникновении ошибки для будующей отладки эксперта. Кроме того мы поручили нашей функции MQL4 самой определять цену по типу ордера, расчет тейкпрофита и стоплосса.

Функция start() нашего скрипта сильно упростится:

 double Lot=GetLot(MaxRisk);
 if(Lot==0) {Alert(»Недостаточно средств!");return(0);}
 RefreshRates();
 if(Buy)  NewOrder(OP_BUY,Lot);
 if(Sell) NewOrder(OP_SELL,Lot);

Новая функция RefreshRates() — функция обновления данных в предопределенных переменных (Ask, Bid и т.д.) При запуске нашего скрипта в окне терминала Metatrader появляется окошко с параметрами. Пока мы их изменяем цена может изменится. Вот мы и обновим ее значение в переменных.

Теперь займемся советником Hedge Hog.

Для начала изучим: Стратегию Hedge Hog.

На первый взгляд — все просто. Нужно открывать каждый торговый день ан форекс, с понедельника по пятницу в 00:00 по GMT, два рыночных ордера в противоположные стороны (один на покупку, второй на продажу) без стоп-лоссов и с тейк-профитами в 14 пунктов равным объемом по валютной паре EURUSD.

Итак, для создания советника MT4, запускаем мастер в редакторе MetaEditor:

Мастер создания экспертов в редакторе MetaEditor

выбираем «Советник» и нажимаем «Далее>» (далее…)