Автор Тема: Обучение языку MQL4 под MetaTrader 4  (Прочитано 562423 раз)

Оффлайн xbms

  • Модератор
  • Финансовый махинатор
  • *****
  • Сообщений: 621
  • Вес голоса: 2970977
  • xbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форума
    • Share Post
  • Награды Слежу за порядком на форуме Программист MQL
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 513
Обучение языку MQL4 под MetaTrader 4
« : Апрель 13, 2013, 09:44:35 pm »
105
Смотрим видео-уроки, изучаем MQL:



P.S. Тема про Обучение MQL5 => Обучение языку MQL5 под MetaTrader 5

Linkback: http://forum.tradelikeapro.ru/ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034/

Trade Like A Pro

Обучение языку MQL4 под MetaTrader 4
« : Апрель 13, 2013, 09:44:35 pm »


Оффлайн Padonak

  • Трейдер
  • ****
  • Сообщений: 293
  • Вес голоса: 434213
  • Padonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форума
    • Share Post
  • Награды Торговля советниками Торгую Ва-Банк
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 210
Обучение языку MQL4 под MetaTrader 4
« Ответ #1 : Апрель 14, 2013, 12:28:58 am »
  • 1
Спасибо большое за данную тему, как раз созрело желание и необходимость научиться самому писать хотя бы не сложные советники для наглядности своих идей. Т.к. по специальности программист, то думаю большинство понятий усвоить будет не трудно. Вот первое желание узнать, как брать хай и лоу предыдущей свечи? И мб есть какие книги по MQL, буду благодарен.
Сообщение понравилось: Playbo$$

Оффлайн Герман Странник

  • Интересующийся
  • **
  • Сообщений: 74
  • Вес голоса: 5
  • Герман Странник Новенький
    • Share Post
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #2 : Апрель 14, 2013, 03:34:52 am »
  • 3
Padonak, мне, когда у меня возникло такое же желание, помогла стандартная справка с mql4.com, там достаточно доходчиво написано, а спорные вопросы думаю здесь сможет любезно объяснить xbms.

_http://www.mql4.com/files/mql4bookrussian.chm
Сообщение понравилось: AndreyGonzo, Vitas42, Playbo$$

Оффлайн xbms

  • Модератор
  • Финансовый махинатор
  • *****
  • Сообщений: 621
  • Вес голоса: 2970977
  • xbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форума
    • Share Post
  • Награды Слежу за порядком на форуме Программист MQL
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 513
Обучение языку MQL4 под MetaTrader 4
« Ответ #3 : Апрель 14, 2013, 06:56:19 am »
  • 4

Информация из справки по MQL.
Справочник MQL4 - Доступ к таймсериям

double iLow( string symbol, int timeframe, int shift)

Возвращает значение минимальной цены указанного параметром shift бара с соответствующего графика (symbol, timeframe). В случае ошибки функция возвращает 0. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().

Параметры:
symbol        -   Символьное имя инструмента. NULL означает текущий символ.
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика.
shift             -   Индекс получаемого значения из таймсерии (сдвиг относительно текущего бара на указанное количество периодов назад).

На практике получается так:
int start()
{
    double dlow = iLow(Symbol(), PERIOD_H1, 1);
}

Теперь подробней...
Внутри нашей функции start мы объявляем переменную dlow, говоря, что у неё будет тип double, потому как функция iLow возвращает именно дробное число(цена). В этой переменной dlow мы и будем хранить минимальное значение предыдущей свечи.

Вызывая функцю iLow, мы передаём ей параметры, как это расписано в справке выше.

Аналогично для максимального значения свечи:
double iHigh( string symbol, int timeframe, int shift)


« Последнее редактирование: Апрель 14, 2013, 09:15:45 am от xbms »
Сообщение понравилось: ekwelibrium, Sergey Forex, Playbo$$, IsAis

Оффлайн ALEX_SPB_RU

  • Постоялец
  • ***
  • Сообщений: 222
  • Вес голоса: 2723217
  • ALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форумаALEX_SPB_RU Ключевая фигура форума
    • Share Post
  • Награды Разгоняю депо
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 340
Обучение языку MQL4 под MetaTrader 4
« Ответ #4 : Апрель 14, 2013, 10:00:52 am »
  • 6
Отличная идея! Но в интернете существуют сотни форумов подобной тематике и на многих из них есть подобные ветки. Но у них есть определённые недостатки - сложно найти нужную информацию и не системность обновления. Кроме того желательно чистить ветку от всех постов, кроме автора ветки и его соавторов.
На самом деле мне эта ветка видится чуть иначе, а именно:
1. Первый пост представляет из себя оглавление, отсылающее к соответствующим постам (Иначе тут через месяц уже будет сложно что-то найти даже тем кто будет иногда читать эту ветку не говоря уже о новичках);
2. При этом структура оглавления опирается на структуру оглавления стандартной справки (так всем будет удобнее найти информацию);
3. Не изобретать заново колесо, а давать расширенную информацию к стандартной справке по MQL4. (на мой взгляд там достаточно простым языком описаны основные моменты, но не хватает более подробного объяснения по некоторым функциям и прочим нюансам);
4. Желательно каждый пост сопровождать полностью рабочим примером демонстрирующим все нюансы той функции или темы про которую шла речь в посте.
5. Кроме того в первом посте ещё добавить так называемый список рекомендуемой литературы. Советую посмотреть журнал лепрекон, там в каждом номере есть статья по программированию на MQL4. (Если это интересует я могу сделать подшивку именно по этим статьям за всё время с оглавлением и переодически её обновлять)
Сообщение понравилось: kosul, Авгу$товский, comwest, Playbo$$, Умный Идиот, ALEX 2017

Оффлайн xbms

  • Модератор
  • Финансовый махинатор
  • *****
  • Сообщений: 621
  • Вес голоса: 2970977
  • xbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форума
    • Share Post
  • Награды Слежу за порядком на форуме Программист MQL
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 513
Обучение языку MQL4 под MetaTrader 4
« Ответ #5 : Апрель 14, 2013, 10:44:15 am »
  • 10
Циклы
цикл for

Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы.

К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цену среди них.
Чтобы не писать 10 раз подряд вызов функции iLow, используем цикл:

double dlow;
for(int i=1; i<=10; i++)
{
    dlow = iLow(Symbol(), 0, i);
}

Разберём что тут такое написано...
for (действие до начала цикла;  условие продолжения цикла;  действия в конце каждой итерации цикла)
{
         инструкция цикла;
}

Существует частный случай этой записи:

for (счетчик = значение; счетчик < значение; шаг цикла)
{
    тело цикла;
}

Счетчик цикла — это переменная, в которой хранится количество проходов данного цикла.
В данном случае мы объявили переменную i.

Описание:
  • Сначала присваивается первоначальное значение счетчику, после чего ставится точка с запятой.
  • Затем задается конечное конечное значение счетчика цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится. Снова ставим точку с запятой.
  • Задаем шаг цикла. Шаг цикла — это значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом проходе.

Вернёмся к нашему коду:
double dlow;
for(int i=1; i<=10; i++)
{
    dlow = iLow(Symbol(), 0, i);
}

1. Объявили переменную dlow
2. Объявили цикл for с условием, что будет работать счётчик от 1 до 10. Значение шага цикла я задал равное единице. i++ — это тоже самое, что и i = i + 1. Ну как, крыша ещё не едет? Забудьте про математику, это не уравнение. Знак "=" на MQL означает присвоение и читается это так: новое значение i будет равно предыдущему значению i плюс 1.
3. В теле цикла мы уже вызываем знакомую нам функцию, подставляя в параметр shift значение счётчика i и получаем значение функции iLow в переменную dlow.


Оффлайн Padonak

  • Трейдер
  • ****
  • Сообщений: 293
  • Вес голоса: 434213
  • Padonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форума
    • Share Post
  • Награды Торговля советниками Торгую Ва-Банк
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 210
Обучение языку MQL4 под MetaTrader 4
« Ответ #6 : Апрель 14, 2013, 10:53:45 am »
  • 0
Кто вообще не знаком с программированием, то тому трудно конечно будет въехать, хотя это только сначала, главное желание. На первый взгляд язык очень похож на С.

Оффлайн xbms

  • Модератор
  • Финансовый махинатор
  • *****
  • Сообщений: 621
  • Вес голоса: 2970977
  • xbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форума
    • Share Post
  • Награды Слежу за порядком на форуме Программист MQL
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 513
Обучение языку MQL4 под MetaTrader 4
« Ответ #7 : Апрель 15, 2013, 07:52:47 pm »
  • 0
и тишина в ветке...
либо всё понятно и погнали дальше, либо тема нафиг не нужна и желание научиться чему-то было сиюминутным?


Оффлайн Padonak

  • Трейдер
  • ****
  • Сообщений: 293
  • Вес голоса: 434213
  • Padonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форумаPadonak Ключевая фигура форума
    • Share Post
  • Награды Торговля советниками Торгую Ва-Банк
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 210
Обучение языку MQL4 под MetaTrader 4
« Ответ #8 : Апрель 15, 2013, 09:37:55 pm »
  • 0
Погнали дальше, конечно.

Оффлайн Vasgenich

  • Постоялец
  • ***
  • Сообщений: 220
  • Вес голоса: 11543
  • Vasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форума
    • Share Post
    • Просмотр профиля
    • Награды
  • Рейтинг: 158
Обучение языку MQL4 под MetaTrader 4
« Ответ #9 : Апрель 16, 2013, 10:45:24 am »
  • 1
Однозначно едем дальше. То что никто вопросы не задает, это не значит что тему не читают  ;) Вопросы будут, просто мастеров пока жалеем.  :d
Обязательно надо подчищать тему от всякого мусора, дабы лучше читалась. В том числе и это сообщение :)
Сообщение понравилось: Max5813

Оффлайн xbms

  • Модератор
  • Финансовый махинатор
  • *****
  • Сообщений: 621
  • Вес голоса: 2970977
  • xbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форумаxbms Ключевая фигура форума
    • Share Post
  • Награды Слежу за порядком на форуме Программист MQL
    • Просмотр профиля
    • Награды
  • Опыт торговли: > 5 лет
  • Рейтинг: 513
Обучение языку MQL4 под MetaTrader 4
« Ответ #10 : Апрель 16, 2013, 12:50:52 pm »
  • 4
Цикл while

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

При выполнении цикла while сначала проверяется условие. Если оно попадает под наш критерий, то выполняется инструкция. Если же нет, то цикл не выполняется и дальше выполняется следующая команда, которая идёт за скобками цикла.

Синтаксис цикла while:

     while (условие)
     {
         блок инструкций
     }

Этот фрагмент программы выведет в лог метатрейдер все числа от 1 до 10:

     int i=1;
     while (i<=10)
     {
         Print(i);
         i++;
     }

Есть ещё один вариант использования цикла такого такого плана... Например:

     int i=1;
     while (true)
     {
         Print(i);
         i++;
     }

Увы, но этот цикл бесконечный, и выхода из него нет, прервать его можно лишь командой Break;

     int i=1;
     while (true)
     {
         Print(i);
         i++;
         Break;
     }

Таким образом, выполнившись один раз, на команде Break цикл будет прерван.
Циклы такого плана довольно часто используются, а выход из них происходит как правило по условиям... Это и будет наша следующая тема.

Вопросы?
Сообщение понравилось: snowman, Александр123, Collapse, garrytabur

Оффлайн Vasgenich

  • Постоялец
  • ***
  • Сообщений: 220
  • Вес голоса: 11543
  • Vasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форумаVasgenich Ключевая фигура форума
    • Share Post
    • Просмотр профиля
    • Награды
  • Рейтинг: 158
Обучение языку MQL4 под MetaTrader 4
« Ответ #11 : Апрель 16, 2013, 02:56:29 pm »
  • 0
xbms У матросов нет вопросов, поскольку это азы так то давно более менее освоены. Вопросы будут когда пойдем по не паханой целине :d
Сергей, если есть возможность вперемежку с этим, рассказывай про хитрости при работе с mql, которые в сети  не часто встречаются. Я например не совсем понимаю про нормализацию цен у тебя в совах так красиво это сделано. Сори, может загоняю далеко вперед.   :)

Оффлайн werter

  • Новичок
  • *
  • Сообщений: 8
  • Вес голоса: 0
  • werter Новенький
    • Share Post
    • Просмотр профиля
    • Награды
  • Опыт торговли: 3-5 лет
  • Рейтинг: 4
Обучение языку MQL4 под MetaTrader 4
« Ответ #12 : Апрель 17, 2013, 07:32:15 pm »
  • 0
Скажите пожалуйста как изменить код,чтобы например можно добавить звуковой сигнал при изменении цвета индикатора
Спасибо.


Добавлено: Апрель 17, 2013, 07:38:40 pm
Добавляю параметр-extern bool bPlaySound=true  и  extern string SoundName="alert.wav   но индюк после сохранения на график не цепляется.
« Последнее редактирование: Апрель 17, 2013, 07:38:40 pm от werter »

Оффлайн Iorik

  • Новичок
  • *
  • Сообщений: 2
  • Вес голоса: 0
  • Iorik Новенький
    • Share Post
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 0
Обучение языку MQL4 под MetaTrader 4
« Ответ #13 : Май 05, 2013, 08:30:57 pm »
  • 0
Всем доброго дня!
Подскажите возможно ли в одном окне разместить два индикатора (stochastic) так, чтобы первый показывался как обычный stochastic, а второй с точно такими же значениями, но смещенный на 1 свечу от первого назад? Визуально - словно индикатор в глазах двоится. Чтобы и тот, и другой, двигались, как обычный stochastic, только первый был смещен относительно второго.

mylt_dom

  • Гость
Обучение языку MQL4 под MetaTrader 4
« Ответ #14 : Май 05, 2013, 11:07:37 pm »
Значение свечей передай на одну больше
double Close = iClose(Symvol(), Periud(), pos+1);


Share via twitter

xx
Обучение языку MQL5 под MetaTrader 5

Автор pavlus777 Уголок Программиста

108 Ответов
14380 Просмотров
Последний ответ Сентябрь 05, 2017, 07:47:32 am
от Pioner_rus
question
Элементы кода MQL4

Автор garanyan1985 Уголок Программиста

11 Ответов
5106 Просмотров
Последний ответ Октябрь 22, 2011, 08:37:03 am
от jackpot
question
OrderTicket() из MQL4 в MQL5

Автор Dok11 Уголок Программиста

3 Ответов
3390 Просмотров
Последний ответ Ноябрь 03, 2012, 03:30:43 pm
от Ugrael
xx
Видео уроки по MQL4

Автор mogilny Уголок Программиста

19 Ответов
8724 Просмотров
Последний ответ Июль 24, 2012, 08:58:22 pm
от poloda1
xx
Доступ к API из Myfxbook с использованием EA, запрограммированный в MQL4

Автор trumex Уголок Программиста

5 Ответов
636 Просмотров
Последний ответ Октябрь 05, 2017, 10:59:41 am
от dexman
 

Форекс блог

Стратегии Индикаторы Советники Аналитика

Мы в соцсетях

Группа Вконтакте Facebook Twitter Instagram

Ссылки

Рекомендуемый брокер Инвестиции Форекс Вики Бинарные Опционы
InstaForex
instaforex C forex4you-C exness D ????_????? Tickmill_small AMarkets FortFS200 forex4you-C