MQL для чайников, программирование на MQL4, MQL5
5 Янв
На первом уроке по изучению языка MQL мы научились запускать редактор MetaEditor и создавать новый скрипт MQL4. Но как мы можем увидеть, созданный нами скрипт MT4 пока не выполняет никаких функций в торговом терминале Metatrader 4.
В данном уроке мы научимся его выполнять какую — нибудь полезную функцию. Для примера, рассмотрим одну из полезных функций, которую мы реализуем на языке MQL4 — «расчет лота в зависимости от имеющихся у нас свободных средств».
Для этого мы должны определится с допустимым риском для нашего депозита на форекс (т.е. какое кол-во средств мы будем задействовать в торговле при использования советника форекс или в нашем случаи — скрипта для Metatrader 4).
Все учебники по форекс и опытные трейдеры рекомендуют: "никогда не рискуйте при заключении сделок на форекс более чем 2−5% от своего депозита". Ну что ж, давайте прислушаемся к их советам. Но т.к. четкой цифры нет, то нам нужно чтобы созданный нами скрипт запрашивал эту цифру.
Теперь давайте реализуем эту функцию на языке MQL4:
Введем в начале скрипта команду: #property show_inputs
У нас получилось:
//±-----------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//±-----------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property show_inputs
//±-----------------------------------------------------------------+
//| script program start function |
//±-----------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//±-----------------------------------------------------------------+
команда #property show_inputs означает выводить окно со свойствами перед запуском нашего скрипта MQL.
Попробуем запустить наш получившийся скрипт. Но для этого его нужно предварительно откомпилировать !
Компиляция — это преобразование нашей получившийся программы из языка понятного нам (в данном случаи MQL) в язык понятный компьютеру. Для компиляции скрипта MQL нажмем клавишу «компилировать» —
При этом в нижней части экрана высветится:
Это сообщение означает, что наш скрипт на языке MQL проверен на отсутствие ошибок и преобразован в код, понятный компьютеру.
Затем переходим в терминал Metatrader 4 из редактора MetaEditor, нажав клавишу "Терминал" -
Теперь, когда мы уже находимся в торговом терминале Metatrader 4 - в окне «Навигатор» выбираем пунк «Скрипты»:
Ищем в данном списке наш созданный скрипт для MT4 — «test»
И дважды щелкнув мышкой по скрипту «test»- запускаем его !
Но теперь возникает вопрос: «куда же вводить наш процент от депозита для расчета лота на форекс?»
Для этого мы должны задать его предварительно в нашем скрипте. Идем снова в редактор MetaEditor и добавляем в начале скрипта команду: extern int MaxRisk=2;
В итоге наш код должен выглядеть так:
//±-----------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//±-----------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property show_inputs
extern int MaxRisk=2;
//±-----------------------------------------------------------------+
//| script program start function |
//±-----------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//±-----------------------------------------------------------------+
Давайте разберемся что мы написали, используя команду - extern int MaxRisk=2;
extern — означает что данный параметр внешний (т.е. его можно изменить при запуске скрипта или советника MT4)
int - тип переменной (компьютеру же надо знать что мы ему передаем: число, текст и т.д.)
MaxRisk — название нашей переменной, которое может быть абсолютно любым — на ваше усмотрение !
=2 — присвоили данной переменной (в данном случаи MaxRisk) значение, которое будет высвечиваться по умолчанию в окне выставления настроек скрипта в терминале Metatrader 4.
; — знак, означающий окончание нашей команды.
Теперь снова компилируем и запускаем наш скрипт «test» (как было описано выше). Если компилятор «ругается» (сообщает) об ошибках — это означает что то мы сделали что-то не правильно и следует проверить правильность кода на языке MQL4 !
Ели ошибок нет, то при запуске скрипта (или советника) в терминале Metatrader 4, появляется следующее окошко:
Как мы теперь можем видеть, при запуске скрипта «test», у нас появилась новая вкладка «Входные параметры».
Переходим на нее:
Вот в данной вкладке мы и видем наш параметр MaxRisk, который служит для расчета лота в MT4 и который мы будем в дальнейшем использовать при создании скриптов и советников на языке MQL !
Если Вы хотите изучать язык MQL или вам понравилась данная публикация - Вы можете подписаться на получение новых материалов сайта mql4you.ru по |
31 комментарий на «Язык MQL — Урок 2 «Первые шаги»»
[...] прошлом уроке “Язык MQL — Урок 2” мы научили наш первый скрипт MT4 — “test“, [...]
Застрял на уроке 2. Нажатие на кнопку Компилировать не дает никаких результатов. Если можете, помогите. Спасибо за ответ и полезные уроки. С уважением.
Что-то все равно должно происходить. Компилятор либо ругается на ошибки, либо сообщает об их отсутствии как на картинке в уроке. К сожалению не видя что происходит, я не могу дать совет. Поэтому присылайте картинку на мою почту (есть на странице Контакты). Получить картинку можно нажав кнопочку PrtScr и потом вставить из буфера обмена например в Word.
Здравствуйте! Хорошо написано Не пробовали делать видео уроки через Camtasia Studio было бы здорово, а то инфы про MQL4 мало, особенно мало примеров по использованию различных функций
Добрый день!
Спасибо за добрые слова всем, кто пишет комментарии. К сожалению с видео я пока не разбирался. В будующем я думаю освоить и этот вид постинга.
[...] функции start() которую будет вызывать терминал MT4. Если откомпилировать данную программу — не будет никаких [...]
это самый лучший обучающий сайт.Спасибо .не выразить словами как я рада что нашла этот сайт.
Скопировал код из урока 2 и вставил в редактор МТ5. При компиляции выдаются ошибки:
'#property' — unknown property Scripttest01.mq5 8 1
'show_inputs' — static or extern declaration without type Scripttest01.mq5 8 11
'extern' — assignment expected Scripttest01.mq5 9 1
'extern' — assignment expected Scripttest01.mq5 9 1
Что необходимо исправить в первоначальном коде, чтобы пример заработал в МТ5?
Рановато Вы начали изучать MT5. Он еще находится в процессе тестирования и не используется ни у одного брокера.
Теперь ответы:
— вместо #property show_inputs необходимо писать: #property script_show_inputs
— вместо функции start() необходимо писать: OnStart()
— вместо extern необходимо писать: input
= Рановато Вы начали изучать MT5. Он еще находится в процессе тестирования и не используется ни у одного брокера. =
На Ваш сайт попал исключительно по поисковым словам «mql5» и «учебник». В заглавии Вашего сайта также обещано «программирование на mql5».
Соответственно, либо Вы также «рановато начали» ссылаться на mql5, либо каждый из нас знает, что делает.
МТ5 доступен для работы на демо-счете в Альпари. Соответственно, при наличии такой возможности у меня нет никакого резона изучать устаревающий морально МТ4. Зато есть желание и возможность уделить внимание изучению МТ5 и пройти курс молодого бойца до выхода первой работоспособной версии МТ5.
За ответы благодарю. Всё заработало. Поскольку свои намерения я изложил выше, предлагаю сразу проработать следующие вопросы:
1) либо дополнить имеющиеся учебные материалы описанием особенностей mql5 применительно к тому или иному примеру;
2) либо создать отдельный учебник по mql5, который в свором времени станет особо востребованным.
В любом случае Вы окажетесь на голову впереди всех авторов будущих учебников по mql5.
Упрек отчасти справедлив. Блог задумывался как учебник по MQL4 и MQL5 (при его официальном выходе). Меня уже в коментариях спрашивали по поводу MQL5
Ну раз Вы хотите начать изучение сразу с MQL5, то спрашивайте в коментариях непонятные моменты. Я буду отвечать. Вот и получиться дополнение к существующему материалу.
Это ни в коем случае не упрёк!
Просто при возникновении непонятных моментов считаю необходимым максимально доходчиво изложить своё видение ситуации. Помогает взаимопониманию и отсеиванию ненужных эмоций.
Спасибо за понимание!
Автор Спасибо за подобный рессурс!!! у меня пожелание, хочется видеть в каждом уроке ссылки на следующие и предыдущие уроки, а то очень не удобно навигацию проводить 🙂
Пожалуйста! Задавайте вопросы и отвечая на них я сделаю блог еще лучше. Насчет ссылок — посмотрите в конце каждой статьи есть ссылки на предыдущие и последующие уроки.
Огромное спасибо автору, всё понятно и очень интересно!
Здравствуйте, мне вот непонятно когда печатаю «#property show_inputs» что-то должно измениться?
Я вот написал но ничего не изменился в тексте. Также здесь есть некоторые слова которые не указаны в вашем примере после написания «#property show_inputs»
Все выглядит вот так:
#property show_inputs
//±-----------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2010. |
//| www.mql4you.ru |
//±-----------------------------------------------------------------+
#property copyright «Copyright © 2010.»
#property link «http://www.mql4you.ru»
//±-----------------------------------------------------------------+
//| expert initialization function |
//±-----------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//±-----------------------------------------------------------------+
//| expert deinitialization function |
//±-----------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//±-----------------------------------------------------------------+
//| expert start function |
//±-----------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//±-----------------------------------------------------------------+
Добрый день!
В уроке «Минимально возможная программа на MQL4» рассматривается данный параметр. Если коротко — то в тексте ничего не изменится. Изменения Вы увидите после компиляции и запуска.
Уважаемый,Админ!Спасибо,что Вы взялись раскрыть
тему программирования на MQL4,тема очень востребо-
ванная,поскольку кризис заставляет искать новые источ-
ники дохода.Я не думаю что эра МТ4 быстро закончится,
как пророчит один посетитель,лучше бы он внятно
обьяснил,чем ему не нравится эта платформа.Но это так
к слову.Вообще-то хотелось присоединится к уже писан-
ной просьбе-СДЕЛАЙТЕ ВИДЕО по урокам.Эффект обучения намного выше,чем от чтения материала.Если
откликнитесь на нашу просьбу и создадите видео,мы в
ответ поаплодируем Вам денежными знаками,так как
многие хотят писать понятных советников,скриптов,а
не покупать «кота в мешке»на торговых площадках.
Никто не хочет часами сидеть у монитора и нервно покусывать губы,если это можно доверить написан-
ному тобой и поэтому понятному советнику,а не оче-
редному «сливатору» с торговой площадки,гарантии
на которых никто не даёт.
Начал изучать язык. В программировании ноль. Вопрос...почему в командах: #property copyright, #property link, #property show_inputs ставиться решетка, а в команде extern int MaxRisk=2;...нет? Для чего вообще нужно ставить этот символ, и для чего он служит? Спасибо.
Илья
Описано в статье Урок №3 «Минимально возможная программа на MQL4»
Во-первых, огромное Вам спасибо за этот сайт. Нашел стратегию, дающую примерно 3−8 процентов от депозита за сутки. На ручной торговле она полностью себя оправдала. Считаю, что это огромный процент. Написать бы советника, да не умею. Кликнул клич, отзываются только за деньги. Один товарисч получил стратегию с алгоритмом — и только я его и видел. Решил сам написать и наткнулся на этот сайт. Еще раз спасибо за него.
А теперь вопрос: Можно ли параметр MaxRisk задать на значение меньше 1? У меня, например, нормальные результаты на отложенных ордерах показывались на ставке, равной 0,005% от депо. При этом вероятность слива равна практически нулю, а доходность находится в тех пределах, что я написал.
Спасибо ! за обучение . Помогите я немогу скрипт запустить в MQL4 . Всё как у вас на схеме . И как вообще он должен проевлять себя в програме. с уважением!
Закачал .Hedge Hog . Работает но всёравно спасибо.! ))
Парни, а есть советник для торговли золотом ? Пардон за вопрос, все в процессе изучения.
ммвб, фортс, теперь интересует форекс
Уроки на Отлично !!!
Отличный ресурс
using of decompiled source code is prohibited
Скажите, что это за ошибка, и как её исправить?
Подскажите пжста процедуру написания TRALING STOP в тексте СОВЕТНИКА, или м\б это есть где то в Ваших уроках ?
При компиляции выделяет MaxRisk красным цветом а при запуске скрипта не подменяет название переменной на его значение. Почему?
Застрял на 2-м уроке. Не понял как выполнить команду «Введём в начале скрипта команду: #property show_inpuns». Куда впечатывать эту команду?
Спасибо!
а я вот уже 2021 год , и там многое поменялось, а вот такого подробного разжеванного нет , спасибо вам большое ! и вопрос есть , может какую хорошую книгу порекомендуете тоже такую подробную ?