Это популярное сообщение. xbms Опубликовано 13 апреля, 2013 Это популярное сообщение. Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 апреля, 2013 Смотрим видео-уроки, изучаем MQL: Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт» P.S. Тема про Обучение MQL5 => Обучение языку MQL5 под MetaTrader 5 121 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Padonak Опубликовано 13 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 апреля, 2013 Спасибо большое за данную тему, как раз созрело желание и необходимость научиться самому писать хотя бы не сложные советники для наглядности своих идей. Т.к. по специальности программист, то думаю большинство понятий усвоить будет не трудно. Вот первое желание узнать, как брать хай и лоу предыдущей свечи? И мб есть какие книги по MQL, буду благодарен. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Герман Странник Опубликовано 13 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 апреля, 2013 Padonak, мне, когда у меня возникло такое же желание, помогла стандартная справка с mql4.com, там достаточно доходчиво написано, а спорные вопросы думаю здесь сможет любезно объяснить xbms._http://www.mql4.com/files/mql4bookrussian.chm 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 14 апреля, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 апреля, 2013 Вот первое желание узнать, как брать хай и лоу предыдущей свечи? И мб есть какие книги по MQL, буду благодарен. Информация из справки по 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 пользователем xbms 6 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ALEX_SPB_RU Опубликовано 14 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 апреля, 2013 Отличная идея! Но в интернете существуют сотни форумов подобной тематике и на многих из них есть подобные ветки. Но у них есть определённые недостатки - сложно найти нужную информацию и не системность обновления. Кроме того желательно чистить ветку от всех постов, кроме автора ветки и его соавторов.На самом деле мне эта ветка видится чуть иначе, а именно:1. Первый пост представляет из себя оглавление, отсылающее к соответствующим постам (Иначе тут через месяц уже будет сложно что-то найти даже тем кто будет иногда читать эту ветку не говоря уже о новичках);2. При этом структура оглавления опирается на структуру оглавления стандартной справки (так всем будет удобнее найти информацию);3. Не изобретать заново колесо, а давать расширенную информацию к стандартной справке по MQL4. (на мой взгляд там достаточно простым языком описаны основные моменты, но не хватает более подробного объяснения по некоторым функциям и прочим нюансам);4. Желательно каждый пост сопровождать полностью рабочим примером демонстрирующим все нюансы той функции или темы про которую шла речь в посте.5. Кроме того в первом посте ещё добавить так называемый список рекомендуемой литературы. Советую посмотреть журнал лепрекон, там в каждом номере есть статья по программированию на MQL4. (Если это интересует я могу сделать подшивку именно по этим статьям за всё время с оглавлением и переодически её обновлять) 6 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 14 апреля, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 апреля, 2013 Циклыцикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы.К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цену среди них.Чтобы не писать 10 раз подряд вызов функции iLow, используем цикл:double dlow;for(int i=1; i{ dlow = iLow(Symbol(), 0, i);} Разберём что тут такое написано...for (действие до начала цикла; условие продолжения цикла; действия в конце каждой итерации цикла) { инструкция цикла;} Существует частный случай этой записи:for (счетчик = значение; счетчик { тело цикла;} Счетчик цикла — это переменная, в которой хранится количество проходов данного цикла. В данном случае мы объявили переменную i.Описание:Сначала присваивается первоначальное значение счетчику, после чего ставится точка с запятой. Затем задается конечное конечное значение счетчика цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится. Снова ставим точку с запятой. Задаем шаг цикла. Шаг цикла — это значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом проходе. Вернёмся к нашему коду:double dlow;for(int i=1; i{ dlow = iLow(Symbol(), 0, i);} 1. Объявили переменную dlow2. Объявили цикл for с условием, что будет работать счётчик от 1 до 10. Значение шага цикла я задал равное единице. i++ — это тоже самое, что и i = i + 1. Ну как, крыша ещё не едет? Забудьте про математику, это не уравнение. Знак "=" на MQL означает присвоение и читается это так: новое значение i будет равно предыдущему значению i плюс 1.3. В теле цикла мы уже вызываем знакомую нам функцию, подставляя в параметр shift значение счётчика i и получаем значение функции iLow в переменную dlow. 10 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Padonak Опубликовано 14 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 апреля, 2013 Кто вообще не знаком с программированием, то тому трудно конечно будет въехать, хотя это только сначала, главное желание. На первый взгляд язык очень похож на С. Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 15 апреля, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 апреля, 2013 и тишина в ветке...либо всё понятно и погнали дальше, либо тема нафиг не нужна и желание научиться чему-то было сиюминутным? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Padonak Опубликовано 15 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 апреля, 2013 и тишина в ветке...либо всё понятно и погнали дальше, либо тема нафиг не нужна и желание научиться чему-то было сиюминутным? Погнали дальше, конечно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vasgenich Опубликовано 16 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 апреля, 2013 Однозначно едем дальше. То что никто вопросы не задает, это не значит что тему не читают ;) Вопросы будут, просто мастеров пока жалеем. :d Обязательно надо подчищать тему от всякого мусора, дабы лучше читалась. В том числе и это сообщение :) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 16 апреля, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 апреля, 2013 Цикл while Цикл while позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие соответствует действительности. При выполнении цикла while сначала проверяется условие. Если оно попадает под наш критерий, то выполняется инструкция. Если же нет, то цикл не выполняется и дальше выполняется следующая команда, которая идёт за скобками цикла.Синтаксис цикла while:while (условие) { блок инструкций }Этот фрагмент программы выведет в лог метатрейдер все числа от 1 до 10:int i=1;while (i {Print(i); i++; }Есть ещё один вариант использования цикла такого такого плана... Например:int i=1;while (true) {Print(i); i++; }Увы, но этот цикл бесконечный, и выхода из него нет, прервать его можно лишь командой Break;int i=1;while (true) {Print(i); i++;Break; }Таким образом, выполнившись один раз, на команде Break цикл будет прерван. Циклы такого плана довольно часто используются, а выход из них происходит как правило по условиям... Это и будет наша следующая тема.Вопросы? 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vasgenich Опубликовано 16 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 апреля, 2013 xbms У матросов нет вопросов, поскольку это азы так то давно более менее освоены. Вопросы будут когда пойдем по не паханой целине :dСергей, если есть возможность вперемежку с этим, рассказывай про хитрости при работе с mql, которые в сети не часто встречаются. Я например не совсем понимаю про нормализацию цен у тебя в совах так красиво это сделано. Сори, может загоняю далеко вперед. :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
werter Опубликовано 17 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 апреля, 2013 Скажите пожалуйста как изменить код,чтобы например можно добавить звуковой сигнал при изменении цвета индикатораСпасибо. Добавлено: 17-04-2013 15:38:40Добавляю параметр-extern bool bPlaySound=true и extern string SoundName="alert.wav но индюк после сохранения на график не цепляется.VininI_LRMA_color.mq4 Изменено 17 апреля, 2013 пользователем werter Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ullo Опубликовано 21 апреля, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 апреля, 2013 Есть ли возможность изменять внешние переменные в советниках , запущенных в одном терминале , с помощью "управляющего" советника. Конкретно, в "идентичном илане" нужно изменить методы закрытия корзин, в зависимости от количества колен. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Iorik Опубликовано 5 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 мая, 2013 Всем доброго дня!Подскажите возможно ли в одном окне разместить два индикатора (stochastic) так, чтобы первый показывался как обычный stochastic, а второй с точно такими же значениями, но смещенный на 1 свечу от первого назад? Визуально - словно индикатор в глазах двоится. Чтобы и тот, и другой, двигались, как обычный stochastic, только первый был смещен относительно второго. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гость Ritek4 Опубликовано 5 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 мая, 2013 Значение свечей передай на одну большеdouble Close = iClose(Symvol(), Periud(), pos+1); Ссылка на сообщение Поделиться на другие сайты More sharing options...
voffka85 Опубликовано 7 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Выкладываю домашнее задание по второму уроку Test2.mq4Test2.ex4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 мая, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Выкладываю домашнее задание по второму уроку Журнал ошибок проверял? Ссылка на сообщение Поделиться на другие сайты More sharing options...
voffka85 Опубликовано 7 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Выкладываю домашнее задание по второму уроку Журнал ошибок проверял? Нет, не посмотрел, много ошибок? Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 мая, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Цитата Нет, не посмотрел, много ошибок? вот я и предлагаю тебе проверить журнал и исправить ошибки :)они есть... Ссылка на сообщение Поделиться на другие сайты More sharing options...
voffka85 Опубликовано 7 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Похоже исправил Test2.mq4Test2.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 7 мая, 2013 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 Похоже исправил Молодец!Но я предлагаю более изящное решение, мы его не рассматривали в уроках (моё упущение)void DeleteOrders(){ for (int tr = OrdersTotal()-1; tr >= 0; tr --) { OrderSelect(tr, SELECT_BY_POS); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; switch(OrderType()) { case OP_BUY: OrderClose (OrderTicket(),Lot,Symbol(),MODE_BID,slipage); case OP_SELL: OrderClose (OrderTicket(),Lot,Symbol(),MODE_ASK,slipage); default: OrderDelete(OrderTicket(), Black); } }} Итак, информация из справки MQL по оператору switch: Цитата Сравнивает значение выражения с константами во всех вариантах case и передает управление оператору, который соответствует значению выражения. Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций. Выражение оператора switch должно быть целого типа. так вот эти выражения switch-case заменяют оператор if, в итоге получается более симпатично и требуется меньше текста для написания кода...Попробуйте более подробной разобраться с ним самостоятельно и написать какой-то вариант его применения в коде.На вопросы отвечу. Изменено 7 мая, 2013 пользователем xbms 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
voffka85 Опубликовано 7 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2013 ага понял, аналогичный оператор есть в делфи который я в школе изучал... только забыл про него Ссылка на сообщение Поделиться на другие сайты More sharing options...
ВячеСлавка Опубликовано 8 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 мая, 2013 А как написать советника помошника который бы следил за ручными ордерами, выстовление СЛ и ТП, безубыток, тралл? Ссылка на сообщение Поделиться на другие сайты More sharing options...
MagDag Опубликовано 9 мая, 2013 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 мая, 2013 таких советников в сети как грязи Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти