MQL для тебя

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

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

Доброе время суток, Уважаемые читатели!
Хотел сегодня рассмотреть очередного советника форекс, но понял, что мне надоело копировать функции из одного советника в другой. Поэтому сегодня рассмотрим что такое «Библиотеки функций MQL» и как с ними работать.

Для создания библиотеки функций MQL4 вызываем мастера создания советников в Metaeditor-е торгового терминала MT4:

Мастер создания библиотек

Вводим имя библиотеки функций (например MyLib):

Параметры библиотеки функций

Копируем в созданную библиотеку наши функции GetLot(), NewOrder(), DelOrders(), DelOrder(), EditOrder() и CloseOrder(). Компилируем и получаем ошибку: (далее...)

  • Отзывов (4)
  • В рубриках : MQL Школа
  • Рекомендуемый ДЦ - 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

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

  • Отзывов (30)
  • В рубриках : MQL Школа
  • 
      Всего подписчиков:

    Рекомендуемый видеокурс форекс

    Рекомендуемые Советники Форекс для MetaTrader 4