MQL — Начало

Здравствуйте, друзья! Каждый из вас задавался вопросом: «А как бы заставить бота косить бабло вместо меня?».  Создать собственный форекс советник, индикатор или скрипт возможно с помощью языка программирования MQL. Как раз по этому поводу мы и начинаем цикл уроков, в которых научим, покажем и расскажем как же это делается на практике.

Итак, Вы посмотрели видео в котором даются основы языка, так сказать база, без которой двигаться дальше просто невозможно. И если Вы это делали внимательно, то видели как мы разбирали пример программы на языке MQL. Ответьте на вопрос (с подвохом), какого цвета стрелка открытия ордера будет при X = 0? А при X = 5? Пересмотрите ещё раз последнюю часть, используя паузу.

Домашнее задание

surprised by the boy at the computer isolated on white background

Напишите программу (советник), который в зависимости от заданной во внешних параметрах переменной X, выведет информацию в виде сообщения(Алерта), комментария на экране и комментария в логах одновременно, следующего содержания:

При X = 0, то отобразить «TradeLikeAPro forever…», а при X=1 — «Insta must die!».

С уважением, Сергей aka xbms
TradeLikeaPro.ru

Уроки по MQL , ,
  • folrgt

    Ну вот, свершилось…

    • proffiserf

      забыл перед cl = Red; поставить else. А то получается, что цвет начала зеленый, а потом красный.

      • folrgt

        Отдохни немного, попей водички…

      • Сергей

        всё верно, в этом и подвох…

  • AntiBioootic

    Наконец-то, спасибо =)

  • Евгений

    СПАСИБИЩЕЕ РЕБЯТА!!!!!

  • Vit

    Видео не смотрел, т.к. уже не новичок, но то. что «процесс пошел» — отлично! Только лучше было бы все же не в общем потоке, а отдельной веткой… Ну, Павлу виднее, его сайт, ему и решать где размещать. Теперь когда народ разберется, что все это далеко не так сложно, как казалось раньше, может меньше будет советов от любителей чисто ручной работы вставать в четыре часа утра чтобы открыть ордер 🙂

  • VET733

    желаю дальнейшего развития данного направления мне эта тема очень интересна .
    пока мои знания в MQL на тройку надеюсь что мне ваши уроки очень помогут

    жду с нетерпением дальнейших уроков по MQL cпасибо

  • Иван

    Повезло новичкам!!! Сам Павел будет их обучать, а значит число людей разбирающихся в MQL будет возрастать по геометрической прогрессии…

    • Иван

      Нет не Павел судя по голосу )))!!! Ну думаю тоже пойдёт )))

  • Павлу РЕСПЕКТИЩЕ Ураааа!!!

  • Denverson

    Все доходчиво
    Так держать !!!

  • Sigitas

    Ochen interesno i dumaju poliezno. S neterpenijiem budu zdat sliedujichix urokov.

  • Алексей

    Так правильно? Я так понимаю алерт должен выдавать какую-то табличку? У меня просто пишется в журнале почему -то как при команде Print из видео.

    int X;

    string str;

    X = 1;

    if (X == 0) str = «TradeLikeAPro forever…»;

    if (X == 1) str = «Insta must die!»;

    Alert(str);

    • if (X == 0) str = «TradeLikeAPro forever…»;

      else str = «Insta must die!»;

      Alert (str);

      Print (str);

      Comment (str);

      • Mapseam

        Если использовали Alert(…), то Print(…) — можно не употреблять.

    • в тестере не пашет, а на графике выскакивает окошко и проигрывается соотв. звук

  • Алексей

    Как русифицировать эдитор? У меня он на английском, а на видео русская версия.

    • Сергей

      через меню View->Languages
      затем нужно перегрузить metaeditor

  • Павел

    MQL это облегчённая версия С++, как я понял. Интересно в mql есть массивы и классы?

    • Сергей

      Массивы есть, классов в mql4 нет

      • Mapseam

        И классы там есть.

    • Mapseam

      MQL — это MQL. Видимо, С++ служил «прототипом»..

  • Александр

    Класс, то что нужно!!!!

  • alex

    Spasibo interestno.

  • Ykut

    Супер!!!!!!!! Чотко и Доходчиво!!!

  • классное начинание, продолжайте! спасибо Сергей и Павел) (на сколько я понял при любом значении цвет стрелки будет одинаков ибо не стоит else, получается присваивание)

    • Сергей

      Молодец! 🙂

      Именно так!

      • Сергей, с какой периодичностью Вы будете запиливать видео?

      • Юрий

        Сергей,а у меня почему то другой шаблон открывается .нетакой как как на видео первого урока.Что делать?

      • vovan

        Такая же самая ерунда

      • Alexander Wosnessensky

        то же самое. может, подновить урок то, сейчас и методы иначе называются все?

  • AlexM

    Отлично, ребята! Спасибо!

  • анкноун

    сделайте, пожалуйста, ссылку на скачку видео,у меня интернет тормоз

  • Сергей, Павел, огромное спасибо за труды! Вы супер!

    • Сергею спасибо, — см. подпись в конце поста. Я в mql не разбираюсь ))

  • Дрюня

    Уважаемый Павел,благодаря Вам научился торговать на форексе.У меня есть просьба,не могли бы Вы сделать видео по советнику Trade ManagerEA?это было бы прекрасно)Заранее благодарен!

  • Александр

    Сергей, Павел, спасибо Вам обоим!!! Так держать )))

  • glyc

    Видео не четабельно, че он там вбивает не разобрать, только на слух че говорит то и понимаешь! если не затруднит делайте видео читабельно!

    • Измени качество на 720p в плеере (нужно нажать на шестеренку внизу справа).

  • Виктория

    Павел, огромное Вам спасибо за Ваши труды !!! Ваш сайт ЛУТЬШИЙ !!!

    • Андрей2013

      Лучший!

  • Baikal

    Мечты сбываются!Огромный респект!!!

  • Илья

    «Insta must die» Ахахах, я просто лег))
    За что же Вы так их невзлюбили?)

    • Сергей

      Заработали себе репутацию долгим и кропотливым трудом 🙂

  • Angel

    Спасибо! Жду продолжения…..

  • Alexey

    «Insta must die!». — Шикарно!!!! Урок классный- все понятно, доходчиво, простым языком. В рунете хрен где еще такое найдешь!!!!!! Благодарю!!!!!!!!!!!!!!

  • wirt5

    Павел,большое Вам человеческое спс!Вы-лучший!!!

  • wirt5

    Да,Сергею отдельное спс за его кропотливый и очень полезный труд!Удачи Вам ребята!!!

    • Сергей

      Кропотливый и тяжёлый труд всё-таки у Павла…
      Я это понял в процессе записи этого видео.

      • LaMer0n

        ну с заданиями отличная фишка, если ничего не делать, так ничему и не научишься ) спасибо

  • Oybek

    Vsem kto trudilsya nad etim proektom — ogromneyshie sposibo. A Pavlu osobennoe.
    Zdem prodolzenie urokov.

  • LaMer0n

    на сайте новые имена ) и Павлу и Сергею спасибо

  • Виктор

    КЛАСС!!! Здоровья Вам и Вашим Семьям!

  • Евгений

    Зачем mql4 учить ??? MQL5 уже давно есть, это совсем разные языки, mql4 уже не тот, функционал у mql5 выше!!!

    • Vadimych

      ну не совсем уж и разные.
      Главное синтаксис изучить с нуля. А потом можно и доучится

  • Юля

    TradeLikeAPro forever…!!! Спасибо!!!

  • mzk_3om6u

    а голос то другой

  • Ivan@

    Отличная открыта тема по MQL, и главное все просто и понятно. И Сергей, отлично объясняешь, а не «безалаберно» (как ты сказал в видео), В топку замудрёные книжки. Попробовал написать ваше задание, всё получилось. Только вот Alert в окошке не выскочил, а в журнале прописался.

  • Johni

    Cool, thanks a lot.

  • Боб

    После просмотра видео, и часа втыкания в монитор написал свою первую программу…
    Так что видео и вправду доходчивое, если у человека до этого не сталкивающийся с программированием что-то получилось.

    Программка собственно примитивна — решает квадратные уравнения…

    int start()
    {
    int a,b,c,D,x1,x2,x3;

    ////////
    a= ;
    b= ;
    c= ;
    ////////

    if (a==0)Print («Линейное уравнение!»);
    else
    {D=b*b-4*a*c;
    if (D0) Print («x=»+x2+»;»+x3);
    }}return(0);}

    • хоть напомнил мне как они ваще решаются:D

    • QwerK2005

      extern int X;
      int start()
      {
      string str0 = «Insta must die!»;
      string str1 = «TradeLikeAPro forever…»;

      if (X == 0)
      {
      Alert(str0);
      Comment (str0);
      Print (str0);
      }
      if (X == 1)
      {
      Alert(str1);
      Comment (str1);
      Print (str1);
      }
      return(0);
      }

  • Asilus

    Такими темпами, лет за 10, простенького эксперта может и напишем. Нельзя ли по 1 уроку в день. И хоть немного посложнее.

    • Да, можно. 1000$ за урок.

      • это шутка или ты реально будешь ждать доходов 1000$ с каждого подобного ролика на ютьюбе?)))

      • Рубака

        Арсенов проспись и перечитай коменты

      • Guest

        какие еще будут указания?:D

    • Alexey

      Некрасиво. Тебе пирожки дают, а ты претензии предъявляешь!

  • Андрей

    Спасибо!

  • JURAX1984

    кое что есть с програмирования Q-BASIC

  • JURAX1984

    int start()
    {
    int x;
    x=1;
    if(x==1)Print («TradeLikeAPro forever…»);
    else Print(«Insta must die!»);

  • QwerK2005

    extern int X = 0;
    int start()
    {
    string str;

    if (X == 0) str = «Insta must die!»;
    if (X == 1) str = «TradeLikeAPro forever…»;

    Alert(str);
    Comment (str);
    Print (str);

    return(0);
    }

  • QwerK2005

    extern int X;
    int start()
    {
    string str0 = «Insta must die!»;
    string str1 = «TradeLikeAPro forever…»;

    if (X == 0)
    {
    Alert(str0);
    Comment (str0);
    Print (str0);
    }
    if (X == 1)
    {
    Alert(str1);
    Comment (str1);
    Print (str1);
    }
    return(0);
    }

  • quivering

    Павел, регулярно смотрю Ваш сайт, Ваши работы и восхищаюсь. Преподносить сложные вещи на понятном языке и простыми словами это талант! Когда появился опрос, а затем и тема об автоматизации торговли через MQL4 уже не удержался захотелось написать! Очень хочется помочь Вам (конечно же абсолютно безвозмездно). Давно программирую на mql4 и до сих пор нравится писать на нем, и вообще хлебом не корми, дай что нибудь поавтоматизировать. Может найдётся мне какое нибудь применение?)))

    • Пока Сергей справляется))

  • Emony

    Круто)) Очень здорово)). Сергей, пожалуйста, давайте больше заданий, я думаю вы их легко придумаете)) Спасибо)

  • Дмитрий

    Спасибо за Урок!
    Но почему работает только в тестере и не выводится окошко на экран?

    extern string comment = «Введите значение X=0 или X=1)»;
    extern int X = 0;

    int start()
    {
    string prt;
    string tlp = «TradeLikeAPro Forever …!»;
    string ifb = «Insta must die!»;

    if (X == 0) prt = tlp;
    else prt = ifb;

    Print (prt);
    Comment (prt);
    Alert (prt);

    return(0);
    }

  • Сергей

    Сергей, почему при условии
    if(X==3) bb=true;
    if(X==7) bb=false;
    bool принимает значение false при любом значение Х, не равным 3? Ведь по идее, мы точно указываем его значение (X==7), а значит должно принимать false только при Х равному 7. Но на деле так не происходит…

    • Потому что если переменная не задана по умолчанию, то ее значение при инициализации равно 0 (для числовой), «» для строковой(string) и наконец 0 или false для логической (bool)

  • Max

    Короче Пашу на пенсию , а Сергея оставляем .

  • Max

    короче Пашу на пенсию , а Сергея оставляем .

  • Андрей

    Звук на видео с каким-то фоном. Можете в будущем как-то снизить этот фон? А за урок спасибо, все понятно.

  • shooteroff

    Лучше бы побольше VSA и Price Action!Сайт становится похож на серую массу сайтов.

  • Антон

    Жаль тернарный оператор не поддерживает 🙂

    print X == 0 ? »TradeLikeAPro forever…» : X == 1 ? «Insta must die!» : «X не равен не 0, не 1, но всй равно Insta must die! :-)»;

    • Антон

      Ой, чуть не так написал, привык к php 🙂

  • Вика

    Уважаеммый Павел Мы ожидаем Ваших новых уроков по MQL ПРОГРАММИРОВАНИЮ С Большим к Вам Уважением Ваши постоянные посетители !!!

  • Евгений Морозов

    Несомненно, тема программирования очень нужна! С какрй периодичностью будут выходить уроки?

  • 125

    Симпатичный, спокойный и умный человек! …. Создает атмосферу доверия….Объясняет все так, что и жирафу понятно…

  • Алишер

    Сергей большое Вам спасибо за Ваши старания подробно и понятно объяснять людям.

  • avva

    Chochetsia znatj reguliarnostj posledujuschich zaniatii

  • Владимир

    Наконец то я что то понял и что то получилось. Хотелось бы узнать когда же продолжение.

  • Lesnik

    if (bb) оптимальнее, чем if (bb = true)

  • Сергей

    Ссылку на видео скиньте

  • Андрей2013

    Фигня полная. Я уже на половине ролика перестал врубаться, что это, зачем? Гораздо правильнее было бы сначала поставить задачу (например, как написать элементарный советник), а потом показать, как это делается. И одновременно с этим объяснять, что означает каждая буква, цифра, команда.

    • ivphome

      Вы наверное умственно отсталый? мне жаль, вы смотрели остальные уроки? а надо было бы. Или можете предложить свой вариант?

    • darkrat

      Без базы никак. Нужно четкое представление чего вы хотите в итоге. Поставьте перед собой задачу (скажу по себе, дома никогда не строил) построить кирпичный дом. Посмотрите как строят профы, а потом сами постройте. Как вы думаете, красивый домик получится? Вы даже ровной стенки не сложите)

  • Сергей

    При открытии ордера, цвет стрелки будет красного.
    Что касается домашнего задание, вот код:

    extern int X = 0;

    int start()

    {
    str1 = «TradeLikeAPro forever…»;
    str2 = «Insta must die!»;

    if (X == 0) {Alert(str1); Print(str1); Comment(str1)}
    if (X == 1) {Alert(str2); Print(str2); Comment(str2)}

    return(0);
    }

    Спасибо Сергей за урок, всё очень понятно и доступно объяснили.

  • darkrat

    По поводу деления целых чисел…. Если задан целочисленный оператор int, то при вычислении будут игнорироваться знаки (в ответе) после запятой даже если ответ должен их содержать. Также происходит на C++. Это важно при написании программ.

  • Данила мастер

    я про ДЗ несовсем догнал, сделал вот такой код в итоге.
    int init()
    {
    //—-

    //—-
    return(0);
    }
    //+——————————————————————+
    //| expert deinitialization function |
    //+——————————————————————+
    int deinit()
    {
    //—-

    //—-
    return(0);
    }
    //+——————————————————————+
    //| expert start function |
    //+——————————————————————+
    int start()
    {
    double x,y,z;
    bool bb;
    bool op;
    datetime dt;
    color cl;

    dt=D’2013.04.19 00:00′;

    if (TimeCurrent () ==dt)

    string s =»крепись»;
    x=0;
    y=1;
    if (x==0) op= true;
    else op= false;
    if (op== true)Print («TradeLikeAPro forever…»);
    else Print («Insta must die!»);

    if (op== true)Comment («TradeLikeAPro forever…»);
    else Comment («Insta must die!»);

    if (x==0) bb= true;
    else bb= false;
    if (bb==true)Print («Мама я тебя люблю!!»);
    else Print («очень очень люблю»);
    if (bb== true) s=s+ (» ты попал»);
    else s=(«но может пронесёт?»);
    Print (s);

    return(0);
    }

    //+——————————————————————+
    при компиляции ошибак нет, всё верно сделал и понял?

  • Владимир

    Большое спасибо.Изучив материалы начинаю «расти » в своих сверхскромных познаниях.Еще раз спасибо.

  • Мила

    А у меня что-то не получилось. Набила программку, скомпилировала, выдает кучу ошибок. Все убрала. Набила:

    int X.Y.Z;

    cкомпилировала — 0 ошибок.

    Добавила:

    X=4;

    cкомпилировала — 1 ошибка — ‘X’ — variable not defined
    Итак по всем переменным пишет «variable not defined». Что делать?

  • Мила

    Нашла ошибку — точки вместо запятых, по слепоте своей набила.

  • Константин трейдер

    как то так вышло.

    double X, Y;

    bool bb;

    X = 0;

    Y = 1;

    if ( X == 0 )bb=true;

    else bb=false;

    {

    if (bb == true) Comment («TradeLikeAPro forever…»» );

    else Comment (««Insta must die!»»);

    if (bb == true) Print («TradeLikeAPro forever…»» );

    else Print (««Insta must die!»»);

    if (bb == true) Alert («TradeLikeAPro forever…»» );

    else Alert (««Insta must die!»»);

    }

    return(0);

  • Iwan21

    убило домашнее задание))) Insta must die!!!!!!!) неуже так они палки в колёса вставляют ресурсу сейчас?)) про то что они жулики и так известно всем) опытным)

  • primer2615

    Здравствуйте! подскажите, вообще для начинающего, где и у кого можно пройти достойное обучение для работы последующей на Форексе?

  • Иван

    Я только 1 видео досмотрел! Эхх… Вы человек, с человеческими качествами! Как же хорошо начинаю понимать, когда даже про муху начинают объяснять которая случайно рядом пролетела) В общем, mql справочник с помощью которого совсем не трудно научиться программировать по моему мнению для программистов со стажем в 2 года минимум. А вы добрый человек, все объяснили в этом курсе! Спасибо!, СПасибо! Я не забуду когда разбогатею про вас!

    • Иван

      Все очень понятно хотел сказать!

      • Fed77

        Даже ребёнок мой в 7 лет смог написать советик, думаю у всех должно получиться 🙂

  • Дранк нахт вестен

    «Insta must die!» — это хорошо. Это правильно 🙂

  • oxojeck

    Спасибо за урок, очень доходчиво все объяснено.

  • Wawaer

    В данный момент метоэдитор изменился и шаблон при создании советника другой( не подскажите что делать? приходится писать шаблон в ручную там нет ни старта ни чего, короче для чайника как я очень сложно…

  • Урок перезаписан под новые билды

  • DomovenokBrest

    Спасибо ребята! Очень нужное дело затеяли!!!

    extern int x = 1;

    void OnTick()

    {

    if (x == 0)

    {
    Print (««TradeLikeAPro forever…»»);
    Alert (««TradeLikeAPro forever…»»);
    Comment(««TradeLikeAPro forever…»»);
    }

    if (x == 1)
    {
    Print (««Insta must die!»»);
    Alert (««Insta must die!»»);
    Comment(««Insta must die!»»);
    }

    else

    {
    Print (««Ошибка! Неправильный параметр! Выберите 0 или 1.»»);
    Alert (««Ошибка! Неправильный параметр! Выберите 0 или 1.»»);
    Comment(««Ошибка! Неправильный параметр! Выберите 0 или 1.»»);
    }
    }

  • Pretender

    А почему только старые комменты?… Я что, один остался?!…

  • Андрей

    Пожалуйста сделайте подробный урок про массивы и циклы. Циклы наверное самое страшное в MQL4

  • Сергей

    От меня тоже спасибо! Выполнил ДЗ, только немного по другому, чем у DomovenokBrest.
    extern int x = 0;
    //+——————————————————————+
    //| Expert tick function |
    //+——————————————————————+
    void OnTick()
    {
    switch (x)
    {
    case 0:

    Print («TradeLikeAPro forever»);
    Comment («TradeLikeAPro forever»);
    Alert («TradeLikeAPro forever»); break;

    case 1:

    Print («Insta must die!»);
    Comment («Insta must die!»);
    Alert («Insta must die!»); break;
    }
    }
    //+——————————————————————+

  • Гость

    Вот логические объяснения и всякие такие «изюминки», например с TotalsOrder(), лично для меня очень полезны Спасибо Жду продолжения

  • Aratay

    Выполнил «домашнее задание» )

    extern bool x = true;
    void OnTick()
    {
    switch (x)
    {
    case true:
    Comment («TradeLikeAPro forever…»);
    Print («TradeLikeAPro forever…»); break;
    case false:
    Comment («Insta must die!»);
    Print («Insta must die!»); break;
    }
    }

    Только когда отправил — увидел, что все комменты были 3 года назад )
    Что ж, я только начал )

  • Виктория

    Вот как-то так.

  • Евгений Литвин

    switch(x)
    {
    case 0 : Print(«TradeLikeAPro forever»); Comment(«TradeLikeAPro forever»);break;
    case 1 : Print(«Insta must die!».»); Comment(«Insta must die!».»);break;
    }