MQL ПРОГРАММИРОВАНИЕ ФОРЕКС

Лучшие Форекс брокеры 2021:

Содержание этой статьи:

“Программирование на MQL4” – Курс молодого бойца

Без изучения гор литературы. Без занудных терминов. Абсолютно бесплатно.

Хотели бы Вы автоматизировать свою стратегию торговли на форекс? Хотели бы Вы перестать изо дня в день вручную повторять одни и те же рутинные операции, теряя на них по нескольку часов?

Возможно, Вы уже задумывались над созданием своих торговых роботов, которые самостоятельно будут торговать и приносить Вам деньги в автоматическом режиме. А возможно, и сами заказывали их у сторонних разработчиков…

Однако, заказать советник или индикатор на языке MQL4 у программиста стоит от 100$ и выше. Кроме этого, вы потратите недели на переписку с исполнителем, уточняя мелкие детали и дорабатывая скрипты.

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

Возможно ли это?

Возможно! И о том, как это сделать, Вы узнаете из пошагового видеокурса «MQL4 программирование. Как самому написать форекс советник/ индикатор/ скрипт».

Изучив его, Вы научитесь самостоятельно создавать любого форекс робота. А также переделывать любой форекс софт под собственные нужды так, как необходимо именно ВАМ.

После заполнения формы Вы получите доступ более чем к 10 часам подробных пошаговых видеоуроков с домашними заданиями для закрепления. Просмотрев видеокурс, Вы научитесь самостоятельно создавать практически любой советник, скрипт или индикатор, за который раньше приходилось платить.

Теперь Вам не придется часами выжидать сигналов для торговли. Один раз создали торгового эксперта – и он на автомате будет зарабатывать Вам деньги.

Кому будет полезен курс?

    , которые хотят автоматизировать свои ежедневные рутинные действия;
  • Опытным трейдерам, которые уже знакомы с программированием на других языках.

Ведь разобраться в языке MQL4 не так сложно, и доступно даже начинающему.

Об Авторе

Автор курса – Сергей, известный на нашем форуме под ником xbms. Долгое время занимался разработкой систем для управления бизнесом, созданием универсальных систем, в некотором роде это были аналоги 1С.

Образование: Высшее, Киевский политехнический институт

Заниматься программированием начал в 13 лет (1988-й год), таким образом опыт работы составляет уже 30 лет.
Первые компьютеры: Yamaha MSX, ЕС1840, БК0010, ZX-Spectrum

Языки программирования: Assembler, C++, Delphi, SQL(MSSQL, MySQL, Interbase), 1C, MQL

В настоящее время работает в бельгийской компании в России на должности Ведущего программиста.

Честные Форекс брокеры:

За годы работы написаны тонны кода, это несколько десятков серьёзных проектов и более сотни мелких (с затратами 2-3 месяца).

MQL начал изучать 5 лет назад и за это время было написано наверное больше сотни различных экспертов, опробованы самые разные стратегии.

Из курса Вы узнаете:

  • Основы языка MQL4;
  • Базовые структуры – циклы и функции языка;
  • Важные аспекты программирования, без знания которых не обойтись
  • Как добавлять в свои советники конструкции кода, созданные другими.

Программирование MQL: классы в объектно ориентированном программировании на форекс

  • Создадите своего первого советника;
  • Автоматизируете ручной рутинный труд;
  • Создадите советника на Мартингейле;
  • Напишете собственный Трейлинг стоп для советников;
  • Разработаете собственные скрипт.

Кроме этого! Вы закрепите теоретический материал на практике – к каждому уроку прилагается домашнее задание .

Введите свои контактные данные в форму ниже и нажмите кнопку Получить видеокурс. Доступ к онлайн и офлайн версиям курса появится в Вашем почтовом ящике уже через несколько минут.

Язык MQL 4 для "чайников". Первое знакомство

Эта серия статей рассчитана на трейдеров, которые ничего не знают о программировании, но хотят изучить язык MQL4 максимально быстро с минимальными усилиями и затратами времени. Если вы боитесь таких словосочетаний, как «объектная ориентация» или «трёхмерный массив», эта статья — то что вам нужно. Уроки рассчитаны на максимально быстрый результат. Кроме того, материал будет подаваться в доступной форме. Мы не будем сильно углубляться в теорию, зато практическую пользу вы получите уже на первом уроке.

Надежные Форекс площадки:

Совет

Если вы действительно впервые сталкиваетесь с программированием, то в некоторых местах вам будет трудно уловить суть с первого раза. Медленно перечитывайте текст и обдумывайте каждое предложение. В конечном итоге вы все поймете, так как ничего сложного там в действительности нет. Не двигайтесь дальше, если полностью не поняли предыдущий материал. Изучайте примеры кода. Пишите свой код на основе того, что вы уже поняли.

Первое знакомство с MQL4

Для начала давайте разберемся, что вы можете делать с помощью этого языка. Он предназначен для создания скриптов, пользовательских индикаторов, советников и библиотек:

В этой статье мы научимся писать обычные скрипты. Для этого используется специальная программа — редактор MetaEditor 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или используйте сочетание клавиш Ctrl+N на клавиатуре:

После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:

В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:

После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:

Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.

Исходный текст, компиляция и прочее

Вы должны понять важную вещь. То, что будет написано в MetaEditor’e, — это исходный код. То есть последовательность команд, которую будет выполнять терминал одну за другой сверху вниз. Но терминал не может выполнять исходные коды. Исходный код понятен вам, но не MetaTrader’у. Чтобы исходный код был понятен терминалу, его нужно «перевести» на соответствующий «язык». Чтобы это сделать, нужно нажать на клавишу F5 в MetaEditor’е. После этого будет выполнена компиляция исходного кода в исполняемый файл. Компиляция — это процесс «перевода» исходного кода, написанного вами и понятного вам, в специальный исполняемый файл, который понимает и способен выполнить MetaTrader. Проверьте это сами. Создайте новый скрипт под названием Test1 и сохраните, но не компилируйте. Запустите терминал и, используя Навигатор, зайдите в раздел «Скрипты». Как видно, скрипта с названием Test1 нет:

Теперь скомпилируйте скрипт (клавиша F5):

Опять загляните в терминал. Скрипт Test1 появился:

Двойной клик на названии скрипта в Навигаторе терминала — и он запускается. Но ничего не происходит, так как скрипт пуст.

Вы уже должны представлять, на что похож процесс написания скрипта: вы пишете исходный код, компилируете, запускаете скрипт в терминале, смотрите на результат, изменяете исходный код, компилируете, смотрите . и так — до тех пор, пока не получите нужный результат.

Где писать скрипты?

Вы уже заметили, что пустой скрипт содержит в себе определённый код. Но в каком месте вам следует вписывать исходный код, чтобы он работал? Его нужно вписывать между строками int start() <и return(0);>, как показано на рисунке:

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

Переменные

Что такое переменная? Попробуйте сами ответить на этот вопрос, а я вам помогу. Сколько вам лет? Сколько вам будет лет через пять лет? Теперь смотрите: возраст — это и есть переменная. Возраст изменяется с течением времени, как и любая другая переменная. То есть первая особенность переменной заключается в её изменении с течением времени. Другой пример: какой был ваш рост в пять лет? Очевидно, намного меньше, чем сейчас. Рост — ещё один пример переменной. Но есть важное отличие. Обратите внимание на то, что возраст мы измеряли, используя целые числа. Рост намного удобнее измерять, используя десятичные дроби («числа с плавающей точкой»). Возраст: 20 лет, 30 лет. Рост: 1,8 метра, 1,95 метра. Это очень важная особенность: каждая переменная относится к определённому типу. Давайте посмотрим, какие еще бывают типы переменных. Вы можете описать числами многие параметры, но как представить текст? Для этого используются специальные типы — строковые. Эти типы переменных хранят только строки. Теперь давайте посмотрим, как можно создать и описать переменную на языке MQL4. Пример:

Здесь мы объявили переменную целого типа (int — integer — целое число). int — это ключевое слово языка MQL4, которое указывает, что мы используем тип целых чисел. Дальше мы написали age (возраст) — это название переменной, то есть слово, по которому мы будем обращаться к значению, хранящемуся в этой переменной. Затем мы присвоили переменной значение 25, используя символ » code»> int age;

Еще один пример:

Здесь мы объявляем переменную с названием height (рост), которая хранит значения типа double (число с плавающей запятой, десятичная дробь) и которой мы сразу присваиваем значение 1.95, используя оператор » code»> string name = «Janet» ;

string — тип переменной, name — название переменной, «Janet» — значение переменной. Обратите внимание, что значения для переменной типа string размещаются между двойными кавычками («).

Существует еще один очень полезный тип переменной — bool. Переменные этого типа могут принимать только два значения: либо true (правда), либо false (ложь). Пример:

Теперь вам нужно запомнить несколько важных вещей. Язык MQL4 — это регистрозависимый язык, то есть имеет большое значение, ПРОПИСНЫМИ буквами вы пишете код или строчными. Например, если вы объявите несколько переменных с одинаковыми названиями, но разным регистром, то это будут совершенно разные переменные:

Вышеприведённый код создаст четыре совершенно разных переменных. Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами.

Вышеприведённый код работать не будет, потому что слово double не будет воспринято как ключевое слово языка MQL4. Ещё один важный момент заключается в том, что названия переменных не могут начинаться с цифр или специальных знаков (*,&, ,%,$). Например:

Ещё один элемент языка — комментарии. Если вы напишете «//» перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться. Например:

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

Работа с переменными

Теперь давайте разберёмся, что можно делать с переменными после того, как мы их объявили. Рассмотрим простой пример:

Если нужно выполнить какую-то операцию с переменной и присвоить ей же результат, например, увеличить на 5, то поступают одним из следующих способов:

Если хотите увеличить или уменьшить переменную на 1, используйте такой метод:

Это всё очень хорошо, но вы при выполнении подобных скриптов можете только догадываться, правильно всё работает или нет, так как на экране ничего не происходит.
Поэтому удобно выводить результаты. Для этого существует встроенная функция MessageBox().

MessageBox()

Функция — это какой-то набор инструкций, который принимает параметры и в зависимости от них выводит результат. В нашем случае функция MessageBox() принимает два параметра: первый — текст сообщения, второй — текст заголовка. Вот пример использования функции:

Чтобы вызвать функцию, сначала пишут её название. Не забывайте про регистр! Потом открываются скобки, и в них через запятую пишутся параметры. В нашем случае параметры имеют строковый тип. Как мы помним, все строки пишутся между двойными кавычками («). Как в любой инструкции, в конце ставим точку с запятой. Чтобы окончательно разобраться, посмотрите на рисунок. Он показывает, как связаны код и результат:

▶ Урок программирования Подключение индикаторов в советники mql4

Да, это всё, конечно, хорошо. Но как можно вывести переменные других типов? Очень просто — мотайте на ус:

Mql программирование работа с Icustom

В результате получим:

Как вы уже догадались, MQL4 устроен таким образом, что когда мы пытаемся добавить к строке какой-то другой числовой тип, то он автоматически переводит числа в строки и объединяет их. Это действительно замечательное свойство! Подобные операции вы можете делать и с переменными-строками:

Теперь вы знаете, как можно выводить различные данные с помощью функции MessageBox(). Но какой интерес выводить результаты элементарных математических операций? Нам ведь MQL4 нужен не для того, чтобы находить суммы и произведения, не так ли?

Массивы

Не пугайтесь. Это очень просто. Смотрите. Допустим, вы хотите запомнить пять цен. Как можно поступить? Ну, можно вот так:

У нас получается пять переменных, которые имеют один тип данных и описывают один и тот же параметр — цену. Но можно поступить иначе, используя массив. Массив — это всего лишь серия переменных, которые отличаются между собой индексами, но имеют одно общее название. Посмотрите, как нужно объявлять массив из пяти элементов:

(тип массива) (название массива) [количество элементов];

В нашем случае: тип массива — double, название — price, количество элементов — 5. Давайте посмотрим, как можно обратиться к элементам массива:

С элементами массива можно проделывать любые операции, как и с обычными переменными. Собственно, элементы массива — и есть обычные переменные:

При объявлении массива можно также присвоить всем элементам начальные значения:

Мы просто перечисляем через запятую начальные значения элементов в фигурных скобках. В таком случае вы можете даже не указывать количество элементов, компилятор автоматически вставит нужное значение:

Это всё, безусловно, очень хорошо, но. К сожалению, бесполезно. Нам нужно как-то добраться до реальных данных! Например, текущих цен, времени, количества свободных денег и так далее.

Встроенные или предопределённые массивы и переменные

Конечно же, без реальных данных не обойтись. Чтобы получить к ним доступ, достаточно обратиться к соответствующему предопределённому массиву. Таких имеется несколько, например:

Чтобы окончательно разобраться в предопределённых массивах и индексах, посмотрите на это:

Как видите, индекс (номер) последнего бара — 0, предпоследнего — 1 и так далее.
Также существуют предопределённые обычные переменные. Например, Bars показывает, сколько баров загружено на текущем графике. То есть это самая обычная переменная, но её объявили до вас и вне вашего скрипта. Эта переменная существует всегда, как и любые другие предопределённые массивы и переменные.

Циклы

Допустим вы решили посчитать среднее значение максимальных цен всех баров на графике. Для этого вы поочерёдно добавляете каждый элемент к какой-то переменной, например, так:

Скажу вам одно: это может сработать, но это — очень глупо. Для таких целей существуют циклы. Обратите внимание, что все операции абсолютно одинаковы, лишь индекс изменяется от 0 до значения переменной Bars-1. Было бы намного удобнее каким-то образом определить счётчик и с его помошью обращаться к элементам массива. Вот как можно решить эту же задачу, используя циклы:

Рассмотрим каждую строку:

Как видите, цикл начинается с ключевого слова for. (Существуют и другие типы циклов, например, while, но их мы пока не будем рассматривать.) Далее следуют кавычки, в которых размещаются последовательно через точку с запятой счётчик, условие выполнения цикла и операция увеличения счётчика. В общем случае это может быть представлено в виде:

Рассмотрим каждую стадию объявления цикла более детально.

Объявление счетчика: используется тип int для счётчика. Название переменной-счётчика не имеет никакого значения. Также обязательно производите инициализацию начального значения, например, нулём.

Условие выполнения цикла: тут всё очень просто. Здесь определяется условие, и если оно истинно, то цикл продолжается. Иначе — цикл заканчивается. Например, в нашем случае:

Видно, что пока переменная-счётчик а будет меньше, чем переменная Bars, то цикл будет выполняться дальше. Допустим, переменная Bars=10, тогда с каждым проходом по телу цикла переменная а будет увеличиваться на 1, пока не достигнет 10, после чего цикл прекратится.

Изменение счетчика: если мы не будем изменять счётчик каким-то образом (в нашем случае не будем его увеличивать), то цикл никогда не закончится, так как условие никогда не будет выполнено. Чтобы лучше понять суть цикла, я написал код, который будет выполнять цикл с поясняющими комментариями:

Теперь вы должны понимать, как работает цикл. Но нужно знать ещё несколько моментов.

Условие выполнения цикла может быть другим. Например, таким:

Изменение счётчика может производиться и по-другому. Например, вам необязательно увеличивать его каждый раз на 1. Вы можете поступить иначе:

Кроме того, вы можете разместить изменение счётчика внутри тела цикла. Например, так:

Аналогично — необязательно объявлять переменную-счётчик в цикле. Можно сделать иначе:

Если тело цикла содержит всего один оператор, например, вот так:

то фигурные скобки писать необязательно:

Пока это — всё, что касается циклов. Есть и другие виды циклов, но о них мы поговорим на следующем уроке. Сейчас вы должны уяснить, когда нужно использовать циклы, и запомнить их синтаксис. Попробуйте самостоятельно написать несколько циклов, которые бы выводили значения счётчика функцией MessageBox(). Попробуйте написать бесконечный цикл и посмотрите, что произойдет, если его запустить.

Условия

Осталась ещё одна важная вещь, которую вы будете постоянно использовать, — условия. В нашей жизни много условий и действий, которые следуют за этими условиями. Мы очень часто даже мыслим условными предложениями. Например: «Если у меня будет достаточно времени, я успею прочитать эту книгу. Если нет, то, пожалуй, лучше полистать свежий журнал. » Вы и сами можете придумать сотни подобных условий и действий. Но как записать их на MQL4? Вот пример:

Теперь вы должны понимать синтаксис условий. Давайте посмотрим на условия, полностью написанные на языке MQL4:

Всё довольно-таки просто. Чему равно b после выполнения? Конечно, b = 2, потому что условие a > 10 не выполняется. Это элементарно. Кстати, использовать ключевое слово else (иначе) необязательно:

Так вот, к чему я веду: в условиях сравнивайте переменные только с теми значениями, которые они могут принимать, например:

Обратите внимание, что мы производим сравнения при помощи условных операторов (==, !=, >, <, >=, <=). Для типов string и bool используйте только такие операторы сравнения как == и !=.

Теперь вы должны ознакомиться с таким понятием, как вложенность. Да, вы можете использовать условия в циклах, а циклы в условиях; вы можете использовать в условиях другие условия и так далее. Например:

Следующий пример показывает ещё один способ использования условий:

Если при невыполнении какого-то условия у вас имеется другое условие, тогда напишите его после ключевого слова else, как в коде выше. Это тоже замечательно сработает. Количество других условий не ограничено. Если действия по выполнению условия умещаются в одну операцию, то фигурные скобки, как и в циклах, можно упустить:

Сложные условия

Часто одного условия бывает маловато. Приходится сравнивать много параметров, и в таком случае без сложных условий не обойтись. Например, если у меня будет достаточно времени и терпения, я выучу язык MQL4. Это можно записать в виде кода так:

То есть сложное условие сначала нужно разбить на простые условия, заключить их в скобки, а потом между ними поставить && (логическое И) или || (логическое ИЛИ). Если нужно, чтобы оба условия были истинны, тогда используем && (И). Если нужно, чтобы истинным было или первое, или второе условие, то используем || (ИЛИ). Вот настоящий пример:

Кроме того, вы можете вкладывать и объединять сколько угодно условий:

Mql Программирование На Форекс — Как Написать Советник Торгующий Сеткой Ордеров [Программирование

Всё вместе

Используя вместе сложные и простые условия, а также циклы, вы можете написать очень сложный код. Практически любой алгоритм можно описать, используя эти незамысловатые структуры языка MQL4. Если вы поймете, как пишутся и работают эти простые вещи, вы поймёте половину из того, что из себя представляет MQL4 или любой другой язык программирования! Это действительно очень просто! Всё, что вам нужно, — это практика. Постарайтесь написать как можно больше скриптов, чтобы запомнить синтаксис языка и набраться опыта. Кроме того, просмотрите примеры, которые размещены в прикреплённом файле examples.mq4 и постарайтесь разобраться в них.

Другие предопределённые переменные и массивы

Вам уже известны массивы High[], Low[], Volume[] и переменная Bars. Ниже приведены еще некоторые полезные переменные:

Заключение

Итак, вы узнали много нового. Уверен, что в вашей голове сейчас полный беспорядок. Перечитывайте текст, запоминайте, практикуйтесь и вникайте в суть. Обещаю, скоро всё станет на свои места. То, что описано в этой статье, — основа всего языка MQL4. Чем лучше вы освоите этот материал, тем проще вам будет учиться дальше. Скажу больше — учиться дальше будет намного легче, так как изложенный здесь материал — это самая трудная часть. В следующих статьях мы изучим различные особенности языка MQL4, а также ознакомимся с другими встроенными функциями, которые предоставляют огромные возможности для программирования.

Программируем на MQL4 своими руками

В данном разделе Вы найдете всю необходимую практическую информацию про программирование MQL4. Данный язык программирования встроен в один из самых популярных торговых терминалов MetaTrader4.

С помощью MQL4 Вы с легкостью сможете автоматизировать практически любые свои торговые идеи и задумки, создав себе помощника полуавтомата или же полностью автоматический Форекс советник.

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

Ниже Вы найдете подробные практические уроки по MQL4, в которых рассматривается все «от и до». Обучающий материал рассчитан как для самых начинающих, так и для тех, кто уже «в теме».

Подробные пошаговые уроки по MQL4

Подробные уроки (своего рода, книга или учебник) по MQL4. Как для начинающих, так и для тех, кто уже «в теме». Пошаговое обучение и только практика.

Основные встроенные функции в MQL4: Period(); Sleep(); NormalizeDouble(); AccountBalance();

Изучаем основные встроенные функции в MQL4: Period(); Sleep(); NormalizeDouble(); AccountBalance(); Использование этих функций в программировании MQL кода

Принудительное окончание цикла в MQL4 при помощи оператора break;

MQL4: break — оператор принудительного окончания цикла. Разбираем работу этого оператора в составе цикла for

Массивы в MQL4: одномерные, двумерные, многомерные. Практическая работа с массивами

В данном уроке подробно поговорим о том, что такое массивы в MQL4 программировании? Как их применять и использовать на практике. Изучим виды массивов: одномерные, двумерные, многомерные

MQL4: Работа со справкой (встроенный справочник в MetaEditor)

В данном уроке мы разберем что такое справка и как ее использовать при MQL4 программировании

MQL программирование Урок 1 обновленный

MQL4 и основные ошибки у новичков. Как сделать так, чтоб ошибок было меньше?

Небольшой секрет, как сделать так, чтобы при написании MQL4 кода, ошибок в разы было меньше, чем всегда, а также сэкономить в разы Ваше время, уделяемое поиску этих самых ошибок. Очень актуально для новичков в MQL!

Функции и команды в MQL4 программировании. Их структура и ошибки новичков

Разбираем структуру функций и команд в программировании на MQL4. Роль фигурных скобок. Ошибки новичков, связанные с этой структурой

MQL4: Операторы условия «если, иначе» if else

В этой статье мы подробно разбираем один из самых основных операторов условия в языке программирования MQL4 — if else (если иначе).

MQL4: изучаем цикл for()

В этой статье мы разберем работу одного из самых основных циклов в MQL4 программировании — цикл for(). Без этого цикла пожалуй, не обойдется ни один торговый Форекс советник.

MQL4: вывод информации о валютных инструментах на график. Функции Symbol(); MarketInfo();

В материале этой статьи мы произведем подробный практический разбор функций вывода информации о валютных инструментах на график в языке программирования MQL4 — Symbol(); и MarketInfo();

Программирование форекс-роботов без знания языка MQL4

Эта статья будет интересна в основном трейдерам, а также форекс-инвесторам для расширения кругозора. Как известно, сколько трейдеров – столько и стратегий. Причем множество интересных стратегий не смогли стать достоянием широкого трейдерского сообщества лишь по той причине, что не были автоматизированы. А не были автоматизированы они в связи с тем, что разработчики стратегии не владели навыками пользования языком программирования – в бум автоматизации многие стратегии становятся известными в виде торговых роботов.

Конечно, знание языка программирования MQL версий 4 или 5 – это значительный шаг вперед для трейдера. Язык программирования позволяет создать собственный индикатор технического анализа, написать скрипт или торговый советник. А преимущества автоматической торговли общеизвестны – это и отсутствие влияния эмоций, и большее количество свободного времени. В этой статье мы рассмотрим вопросы и различные подходы к программированию торговых роботов:

  • Программирование роботов с помощью языка MQL;
  • Модификация кода существующей механической торговой системы;
  • Программирование советника с помощью специальных программ.

Создание программных кодов

Я веду этот блог уже более 6 лет. Все это время я регулярно публикую отчеты о результатах моих инвестиций. Сейчас публичный инвестпортфель составляет более 1 000 000 рублей.

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

Хорошую базу для познания MQL создает владение языком программирования «С++», но и без этих знаний язык MQL хорошо поддается изучению. Многие рядовые трейдеры, изучающие язык самостоятельно, считают, что для написания несложных скриптов и программ достаточно самостоятельного изучения языка программирования в течение недели.

В сети существует масса компаний, занимающихся разработкой программ и, параллельно, организующих онлайн видеокурсы по изучению языка MQL, индивидуальные удаленные занятия по программированию.

Программирование роботов, в большинстве случаев, производится в специальном разделе торгового терминала MetaTrader4 – MetaEditor. Это многофункциональный и удобный специализированный редактор, с помощью которого можно самостоятельно создавать любые торговые алгоритмы.

Достоинством редактора является то, что созданные алгоритмы могут быть запущены сразу после создания, так как они автоматически появляются в торговой платформе. MetaEditor в МТ4 обладает такими характеристиками, как:

  • удобное редактирование кода программ;
  • генерация программ по шаблону в автоматическом режиме;
  • интеллектуальное управление кодом;
  • встроенная компиляция алгоритмов;
  • удобная отладка программ;
  • наличие профилировщика исходного кода;
  • персональное хранилище кода, встроенное в программу;
  • встроенная помощь по языкам программирования.

Помимо встроенного редактора МТ4 существует еще множество платформ для программирования советников с использованием языка С++. Например, платформы WealtLab, StockSharp и TSLab обеспечивают реализацию сразу всех этапов создания экспертов, включая их тестирование.

Платформа StockSharp является библиотекой торговых экспертов, написанных на языке С. Работа на базе этой платформы требует знания языка программирования, изучение которого может занять достаточно длительное время.

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Платформа TSLab представляет собой визуальный редактор, собирающий торговый советник из функциональных блоков. Блоки написаны на языке С#, но их код в процессе программирования скрыт от пользователя. Существует и возможность использования языка C# и комбинирования программирования с визуальным редактором. Так можно дописывать отсутствующие в стандартном наборе элементы.

Промежуточной по функционалу, между платформами StockSharp и TSLab является платформа WealtLab. Она имеет визуальный редактор, правда, не очень хорошо развитый, и возможность использования языка программирования. Достоинством является отличный тестер стратегий.

Модификация советника

Более простым способом, но также требующим знания языка программирования, является модификация кода существующего советника под собственную стратегию. Для этого подбирается торговый робот, близкий по функционалу необходимому. При этом необходимо обеспечить соответствие по типу советника и используемым средствам технического анализа. С помощью модификации возможно добиться ускорения работы системы, произвести добавление алгоритмов управления, индикаторов, правил. Модификация так же осуществляется в интегрированном редакторе MetaEditor.

Программы для создания эксперта

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

Одной из таких программ является Forex EA Generator, реализующая блочную схему построения эксперта. Программа предполагает наличие минимальных знаний проектирования механических торговых систем.

Программа Gordago Forex Optimizer разработана с функционалом, приближенным к торговой платформе. Помимо создания советника она позволяет тестировать разработку на истории, а так же осуществлять с ее помощью торговлю, в случае наличия доступа к торговым серверам. Работа с программой интуитивно понятна – начало работы начинается с задания условий входа в рынок и выхода из него, задания инструментов анализа рынка. Функционал программы позволяет использовать разработанные эксперты в МТ4.

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Полностью в автоматическом режиме эксперты создаются в программе Hlaiman EA Generator. Программа работает с торговой платформой МТ4. Для создания эксперта необходимо добавить на график желаемые инструменты технического анализа и нанести на график стрелки, указывающие места и направления входа в рынок, где осуществил бы вход сам трейдер. После этого программа самостоятельно просчитывает заданные условия входа и разрабатывает алгоритм робота. При этом качество отработки условий входа зависит от качества и количества заданных точек – они должны расставляться строго в соответствии с разработанной стратегией и таких точек должно быть нанесено максимальное количество. К сожалению, программа отсутствует в свободном доступе, что не позволяет провести тестирование созданных с ее помощью советников.

Заключение

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

Программирование на MQL4: основы языка и введение в синтаксис

За последние годы рынок форекс стал одним из самых популярных финансовых рынков для торговли. Из-за круглосуточной работы, высокого кредитного плеча и низкого уровня маржи тысячи простых людей стали активными трейдерами.

MetaTrader 4 (MT4) – это одна из самых популярных торговых платформ для торговли на форекс. MetaTrader, разработанный MetaQuotes Software Corporation, предлагается сотнями форекс-брокеров по всему миру, в том числе такими громкими именами, как GAIN Capital, FXCM, Alpari и Interbank FX.

Популярность MetaTrader обусловлена ​​тем, что эта торговая платформа полностью бесплатная и включает в себя множество полезных инструментов технического анализа. Но, вероятно, главной причиной успеха MetaTrader является мощный язык программирования MQL.

MQL позволил трейдерам программировать собственные пользовательские индикаторы и стратегии автоматической торговли, не платя ни копейки за программное обеспечение. Подобные торговые пакеты для акций и фьючерсов могут стоить более 1000 долларов. Появилось всемирное сообщество трейдеров и программистов, которые предлагают сотни бесплатных и коммерческих советников и индикаторов, а также услуги и советы по программированию.

Сходство MQL с такими языками, как C, позволяет опытным программистам относительно легко изучить его синтаксис, а сам язык достаточно хорошо документирован. Но обучение эффективному программированию торговых стратегий на MQL – это процесс постоянных проб и ошибок.

MQL является языком относительно низкого уровня, поэтому программисту необходимо создавать собственные процедуры для обработки торговых функций. Например, написание кода чего-то такого простого, как трейлинг-стоп, может быть пугающим для начинающего MQL-программиста.

При программировании надежной стратегии автоматической торговли необходимо учитывать множество факторов, и сам MetaTrader имеет много особенностей, о которых должен знать каждый программист.

Язык программирования MQL5 — описание, учебник (справочник) по изучению

Если Вы интересуетесь трейдингом, то наверняка уже наткнулись на термин „автоматическая торговая система“ или «советник» в терминале ]]> Meta Trader ]]> . Благодаря этим системам трейдеры имеют гораздо более широкие возможности торговли. Советник может работать непрерывно днем и ночью не уставая. Точно так же он может торговать на десятках рынков одновременно, без эмоций, выполняя только запрограммированные действия. Эти свойства не всегда являются только преимуществом, но это тема для отдельной статьи.

Автоматическая торговая система по сути, представляет собой алгоритм, написанный на определенном языке программирования, который имеет задачи при предписанных условиях открывать, закрывать и управлять позициями. Советник — это программа, состоящая из десяток или сотен строк написанная на языке программирования. Рассмотрим язык программирования MQL или MetaQuotes Language самого популярного программного обеспечения MetaTrader.

Язык MetaQuotes 4 и 5

MQL — это язык программирования MetaQuotes, который также является оператором расширенной торговой платформы MetaTrader, предназначенной для торговли на Форекс. Модуль для создания и изменения автоматизированных торговых систем, а также индикаторов и других программ, предназначенных для работы в ]]> Meta Trader ]]> , встроен непосредственно на платформу и называется MetaEditor. Поэтому, если вы загрузили и установили ]]> Meta Trader ]]> , у вас автоматически будет MetaEditor. Это верно для версий 4 и 5. Вы можете запустить MetaEditor с платформы в меню «Инструменты» — «Редактор метакодов» или непосредственно нажав на значок на верхней панели инструментов:

MQL4 (MetaQuotes Language 4) и MQL5 (MetaQuotes Language 5) — это интегрированные языки программирования, предназначенные для создания торговых роботов, технических индикаторов рынка, скриптов и библиотек функций в MetaTrader.

Mql Программирование На Форекс Как Написать Советник Торгующий Сеткой Ордеров Программирование

Основная цель MQL4 и MQL5 — автоматизировать торговлю и упростить операционный анализ. MQL4 и MQL5 содержат обширную кодовую базу библиотеки исходного кода, используемой для создания торговых роботов.

Основным недостатком языков программ MetaQuotes является невозможность создания независимых приложений, поскольку каждый язык привязан к соответствующей платформе (Meta Trader / -editor 4 / Meta Trader / -editor / -Tester 5) и файлы из расширений .EX4 и .EX5 работают только в этих платформах.

История создания MQL

1 июля 2005 года MetaQuotes Software выпустила Метатрейдер 4 — торговый терминал для работы на финансовых рынках. MQL4 — объектно-ориентированный язык программирования, написанный специально для этой платформы. В 2022 году был выпущен Метатрейдер 5, который содержал уже новый язык программирования — MQL5.

Выпуск билда 4600 Метатрейдера в 2022 году включал серьезные изменения языка MQL4 — это привело его к более современному уровню MQL5. Среда разработки MetaEditor была унифицирована для обоих языков.

Обновленный MQL4 включает в себя новые графические объекты и новые функции, заимствованные из MQL5 и используемые для анализа графиков. Система защиты была полностью изменена для исполняемых файлов EX4. Стандартная библиотека MQL5 была перемещена почти полностью, за исключением единственной торговой подсистемы, которая требовала адаптации.

Были добавлены новые типы данных и смесь расширенной микросистемы замещения (условная компиляция ifdef, #ifndef, #else, #endif), которая позволяет использовать код из других языков на основе С/C++ (следует отметить, что указатели объектов в MQL4 / MQL5 не похожи во всех отношениях на С++). Обновленный MQL4 оснащен строгим режимом компиляции, который предотвращает множество потенциальных ошибок программирования. В MQL5 этот режим используется по умолчанию и не может быть отключен.

Оба языка поддерживают почти все стандарты объектно-ориентированного программирования, за исключением множественного наследования: инкапсуляция и расширяемость типов, наследование, полиморфизм и т.п. .

Для разработки программ на MQL4 и MQL5 был создан MetaEditor — компилятор, встроенный в среду разработки. Он интегрирован в торговые терминалы MetaTrader 4 / MetaTrader 5. MetaEditor обеспечивает удобное редактирование исходного кода программы, автоматическую генерацию проектов с помощью матрицы, оптимизацию кода и удаленную разработку совместных приложений совместно с другими людьми.

Различия между MQL4 и MQL5

Одним из основных отличий является конфигурация торговой системы. MQL4 используется для разработки транзакционных программ на основе системы заказов, а MQL5 используется для реализации системы позиционирования. В торговом терминале MetaTrader 5 есть строгое разграничение между понятиями ордер и позиция. Ордер — это запрос на выполнение коммерческой операции, который может привести к коммерческой сделке. Позиция — сумма сделок определенного финансового инструмента.

MQL5 содержит расширенный список торговых функций для работы с открытыми ордерами, списком открытых позиций, историей заказов. В MQL4 различные функции, такие как OrderSend () OrderClose () OrderCloseBy () OrderModify () OrderDelete () были изначально введены для выполнения каждой торговой операции. Эти функции можно использовать для открытия / закрытия и удаления отложенных ордеров.

В MQL5 все торговые операции выполняются через отправку запроса с использованием только одной функции — OrderSend (). В качестве параметра функции передается запрос: или выставить отложенный ордер, или открыть по рынку, или закрыть ордер. Добавлена новая функция OrderSendAsync() для включения асинхронных торговых операций в MQL5.

Важной новинкой в ​​MQL5 является «Глубина рынка».

Возможности MQL5

Существует четыре типа программ, которые могут быть написаны на MQL5(MQL4).

Советники. Автоматические торговые системы, работающие по определенным параметрам в соответствии с запрограммированным алгоритмом. Возникновение ранее указанного события, как получение нового тика, оповещение о новой торговой операции или даже нажатие кнопки или щелчок мыши, вызывает советник для выполнения запрограммированных действий.

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

Отдельные библиотеки функций. Кроме того, можно создавать включаемые файлы (#include). Включаемые файлы позволяют использовать наиболее часто используемые функции и классы, не вставляя их непосредственно в исходный код программы. Использование функций и классов упрощает создание, отладку и компиляцию, поскольку при использовании динамических библиотек функции загружаются только тогда, когда они вызываются напрямую.

Основные понятия MQL5

С точки зрения программирования, MQL — это язык, полученный из C ++. Получается, что знание C ++ является преимуществом, но, конечно, не проблема научиться программировать на MQL без какого-либо предыдущего опыта программирования. В интернете много книг и обучающих материалов. Например, есть раздел «Уроки по MQL» на TradeLikeAPro.

Важные базовые концепции языка:

Исполнение программы. При выполнении написанной программы терминал будет «читать» код и соответственно выполнять соответствующие действия в терминале ]]> Meta Trader ]]> .

Тик — новая входящая цена. Большинство программ выполняются только при каждом новом тике.

Комментарий. Часть кода программы, который не исполняется. Текст комментария обозначается так: // и окрашивается в коде серым цветом.

Компиляция — завершающий этап создания программы. Компилятор в рамках Метаэдитора проверяет код, и если он без ошибок исполняет его.

Типы данных:

Основные типы данных, используемые в MQL5:

целый (char, short int, uchar length, ushort, uint ulong);

с плавающей точкой;

дата и время (datetime);

Структуры и классы представляют собой сложный (сводный) тип данных, который может работать в MQL4 / MQL5. Классы отличаются от структур следующими свойствами:

ключевое слово class в декларации;

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

объекты класса всегда имеют массив виртуальных функций;

Оператор new может применяться только к объектам класса;

Наследование: класс наследует от класса, структура возникает только из структуры.

Книга «Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5». Автор Тимур Машнин.

Эта книга является справочником, что поможет начинающим программистам (которые уже имеют опыт программирования на других языках) ознакомиться с языком программирования MQL5, или станет дополнительным источником информации для тех, кто уже начал его изучать. Прочитав книгу, вы сможете создать свой первый советник или индикатора для терминала MetaTrader 5.

Книга написана грамотным, понятным языком и ориентирована на практическое использование, а не на обучение основам языка. Материал подается в доступной форме, с усложнением в процессе изучения.

Рубрика: Уроки, примеры MQL4

На прошлом уроке мы с вами писали индикатор, который указывает входы в рынок. Соответственно сегодня мы займёмся разработкой эксперта, использующего его сигналы. Начнём с создания шаблона советника(как это сделать мы разбирали на уроке №10).

Урок №11: Пишем индикатор

На этом уроке мы напишем простой индикатор, который в дальнейшем будем использовать при разработке советника. А использовать для получения сигнала мы будем уже существующие — Moving Average и MACD. Алгоритм следующий: Определять направление сделки (покупка или продажа) мы будем по индикатору Moving Average с периодом 100 на дневном графике(Daily), т.е. если текущая цена выше MA(100), то покупаем, а если ниже — продаём. А для поиска удачных точек входа воспользуемся индикатором MACD.

Урок №10: Наш первый советник

Уважаемые коллеги, на этом уроке мы напишем наш первый советник, познакомимся с некоторыми основными функциями языка MQL4, а также напишем несколько своих. Приступим, и для начала запустим MetaEditor… и создадим шаблон эксперта, ничего не меняя, просто нажимаем кнопку «Далее»… Обязательно заполняем, как минимум, поле «Имя» — это название нашего будущего советника, поля «Автор» и «Ссылка» не обязательны к заполнению. Добавляем параметры «Lots», «TakeProfit», «StopLoss», обращая внимание тип данных каждого параметра. После заполнения нажимаем кнопку «Далее»:

Урок №9: Перегрузка функций

MQL4 позволяет определять несколько функций с одинаковым именем. Такие функции называются перегруженными. Их может быть две, три и больше и различаются они порядком следования, количеством, типом. Таким образом перегрузка функций нужна для того, чтобы избежать дублирования имён функций, выполняющих подобные действия, но с различной программной логикой. В конечном счёте перегрузка функций улучшает удобочитаемость программ. Например, предположим, что в вашей программе есть функция с именем day_of_week, которая возвращает текущий день недели (0 для воскресенья, 1 для понедельника, …, 6 для субботы). Читать дальше …

Урок №8: Локальные и глобальные переменные

На одном из прошлых уроков мы узнали, что функции позволяют разделить программу на небольшие легко управляемые части. Все функции, используемые вами до настоящего момента, были достаточно простые. Как только вашим функциям потребуется выполнить более сложную работу, они должны будут использовать переменные для реализации своих задач. Переменные, которые объявляются внутри функции, называются локальными переменными. Факт того, что локальные переменные существуют, известны только функции, в которой они объявлены. Наиболее важно понять то, что локальные переменные существуют только в блоке кода, в котором Читать дальше …

Урок №7: Условия и циклы

Условный оператор if Конструкция практически любого алгоритма подразумевает наличие условий, поэтому для организации вычислений в зависимости от какого-либо условия в MQL предусмотрен условный оператор if, который в общем виде записывается следующим образом: if (условие) выражение_1; else выражение_2; Здесь условие — это логическое выражение, переменная или константа. Работает условный оператор следующем образом. Сначала вычисляется значения выражения, записанного в виде условия. Если оно имеет значение истина (true), выполняется выражение_1. В противном случае (значение ложное (false) ) выражение_2.

Урок №6: Операции и выражения

Виды операций В языке MQL4 различают следующие виды операций: арифметические операции; операции присваивания; операции отношения; логические операции; побитовые операции; операция запятая; вызов функции. Арифметические операции К символам арифметических операций относятся следующие: Символ Операция Пример Аналог + Сумма величин x + 2 — Вычитание величин или изменение знака x — 3, y = — y * Умножение величин 3 * x / Частное от деления x / 5 % Остаток от деления minutes = time % 60 ++ Добавление 1 к Читать дальше …

Урок №5: Типы данных MQL4

Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам. Например, если в памяти хранится целое число от -2147483648 до 2147483647, то для него в языке программирования MQL предусмотрен тип «int«. Что такое «переменная»? Переменные — это какие-то имена, которые привязаны к кускам памяти, где хранятся соответствующие данные. Когда мы создаём переменную, мы говорим компьютеру, что мы хотим, чтобы Читать дальше …

Урок №4: Методы отображения информации

Существует несколько способов передать информацию трейдеру из советника. Print — Отображает некоторое сообщение в журнал экспертов(вкладка «Эксперты»). На первом уроке мы с Вами создавали эксперт с помощью мастера. Давайте дополним его некоторым кодом. В функцию OnInit() добавим отображение строки «Эксперт инициализирован», а в функцию OnTick() сообщение о поступлении новой котировки.

Урок №3: Комментарии

Комментарии в языке MQL записываются одним из следующих способов: Символы /* (косая черта и звездочка), за которыми следует любая последовательность символов, включая переводы строки, после чего ставятся символы */. Это тот же синтаксис, который используется в ANSI C. Символы // (две косые черты), за которыми следует любая последовательность символов. Символ перевода строки, непосредственно перед которым нет обратной косой черты, завершает комментарий, оформленный таким способом. Поэтому такие комментарии часто называют однострочными. Символы, используемые для оформления комментариев (/*, */ и //), не Читать дальше …

Урок №2: Функциональные блоки программы

В этом уроке мы разберем основные функциональные блоки кода советника на MQL, который мы с Вами создали в предыдущей статье. Итак, первый блок — так называемая «Шапка». Она отображает справочную информацию: наименование советника; авторские права; сайт или email; версия советника; свойство-команда, необходимое для того, чтобы во время компилирования MetaEditor строго проверял в коде наши ошибки и выдавал предупреждения. Следующий блок — это объявление внешних переменных. Это те самые параметры, которые мы заполняли в мастере создания советника и которые будут появляться Читать дальше …

Урок №1: MetaEditor

Итак, разработка программного обеспечения(советник, скрипт, индикатор) производится в специальном редакторе — MetaEditor. Вызывается он через меню: либо кнопкой быстрого запуска: Далее создаём скрипт, индикатор или советник: И мы видим окно Мастера MQL, который нам поможет создать шаблон советника в MetaEditor. Нам предлагается на выбор несколько вариантов того, что можно создать. Последние три варианта нам пока не нужны, они для профессиональных программистов. Нам могут пригодиться: Советник (шаблон), Пользовательский индикатор или Скрипт. Сейчас выбираем Советник (шаблон) и нажимаем далее.

Как написать торгового робота, если вы – не программист? 8 шагов от идеи до реализации

Головной мозг трейдера функционирует не совсем обычным образом. Человек, далекий от финансовых рынков, действует рационально и предсказуемо. Когда же в дело вступает индивид, мыслящий исключительно свечными комбинациями, последствия предсказать гораздо сложнее. Как частное, сбитые жизненные приоритеты и повышенная импульсивность – известные пороки трейдеров. Сам процесс торговли становиться самоцелью, и биологический компьютер в недрах черепной коробки входит в бесконечный цикл, зависая на абстрактной идее идиллического существования и собственной яхты, пришвартованной у пирса набережной особняка.

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

Итак, время, потраченное впустую – это опыт. Время – это деньги. Грубо говоря, тратя свое время, вы покупаете опыт. Но вы, как разумный человек, наверняка захотите сохранить лишнюю копейку, не ошибаясь там, где можно обойти грабли, тем более, если существует такая возможность. На этом моменте мне придется попросить немного вашего времени, дабы рассказать, как на самом деле стоит подготовиться к вопросу создания машины для печатания денег торгового робота, и, конечно же, как не наделать кучу ошибок.

1. Разработку форекс робота начинаем с идеи

Разработка робота для торговли на рынках – это непрерывный поиск идей и, как частное, поиск Святого Грааля. Вопреки утверждениям непросвещенных граждан, Грааль находится достаточно просто – скажем «спасибо» технологическому прогрессу. Попробуйте вбить в гугл «Святой Грааль Форекс» – скорее всего, советник вашей мечты находится на первой странице выдачи, к тому же абсолютно бесплатен.

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

Уверен, идея вашего советника абсолютно уникальна и не имеет аналогов. Но, в любом случае, глупо не попытаться найти похожие разработки других авторов – масштаб проделанных исследований сложно оценить, пока не столкнешься с ним лицом к лицу. Человечество идет на пути к технологической сингулярности, и новые разработки внедряются настолько быстро, что осмыслить весь выложенный материал часто не представляется возможным. Если же подобных разработок все же не нашлось, и протестировать идею без проведения собственных исследований нельзя, пора переходить к следующему этапу.

2. 4 важных вопроса перед разработкой

Но перед этим попытайтесь ответить себе на следующие вопросы:

  • В чем состоит ваша торговая идея?
  • Какие задачи будет решать советник, и какое объективное преимущество это может дать в торговле?
  • Возможно, вам нужен графический индикатор или вспомогательный скрипт?
  • Насколько идея реализуема технически, и можете ли вы самостоятельно оценить ее сложность?

Это очень важные вопросы, которые не только помогут сэкономить немало времени, но и немного приблизят вас к пониманию собственной идеи. Наверняка, вы не пришли на рынок раздавать деньги нуждающимся, а имеете другие цели.

[info_block align=»right» linkText=»Форекс советники» linkUrl=»https://fortrader.org/forex-ea-testing/» imageUrl=»http://files.fortrader.org/uploads/2022/08/robot.jpg»]Исследование торговых роботов с возможностью скачать советника.[/info_block]

В идеале, вы должны досконально знать и понимать то, как функционирует выбранная вами торговая площадка и стратегия, на которой, собственно, вы будете зарабатывать. Любое расплывчатое определение или опускание неважных, на первый взгляд, моментов плохо обернется на следующих этапах разработки, и больно ударит по торговому счету. Не бойтесь воскрешать давно забытые торговые идеи, но и не старайтесь сыграть на одних готовых решениях. Рынок очень изменчив и по определению находится в постоянном движении, а конкуренция непрерывно ужесточается.

3. Конструктор советников – не проходим мимо!

У новичков на валютном рынке часто возникает множество вопросов, ответы на которые бывают не совсем очевидны, либо являются лишь вопросом неопытности оного. Будучи начинающим трейдером, достаточно прочитать одну книгу Билла Вильямса, чтобы на всю жизнь подменить понятие торгового хаоса торговым порядком. Затем такие люди удивляются, почему вот здесь да не купить, а вот здесь да не продать, и заказывают у программистов советник по пересечению двух скользящих средних. А ведь на начальных этапах обучения это вполне можно отдать на откуп готовым инструментам разработки. Одной из таких как раз является MQL5 Wizard – мастер по созданию советников для MetaTrader 5.

Для реализации простых вещей Мастер идеален. Вам не нужно обладать никакими магическими способностями – навыки программирования здесь не требуются. Несколько простых шагов, и советник готов. Уже готовый советник можно протестировать в том же терминале MetaTrader. Держите комбайн по производству простецких Граалей.

4. MQL5 Wizard. Сделать советник за 5 минут

Итак, для начала запускаем MetaTrader 5 и переходим в редактор приложений (кнопка F4). На верхнем меню жмем кнопку «Создать» и в появившимся диалоге выбираем генерацию нового советника.

Дальше нужно указать название советника и основные входные параметры.

Добавляем модули торговых сигналов. Модули могут быть как стандартные, так и разработанные сообществом (вы тоже можете поучаствовать в данном процессе).

Собственно, все стандартные сигналы хорошо описаны в онлайн справке на официальном сайте. Там же можно скачать и кастомные.

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

Обычный трейлинг стоп или закрытие сделки по значениям индикатора – на ваш выбор.

Также на выбор предлагается фиксированный лот, либо объем сделки в процентах от депозита. Для самых рискованных новоявленных программистов также есть мартингейл с его геометрической прогрессией лота, способной принести вам миллионы за пару лишних проходов в тестере стратегий.

Собственно, даже если вы не состоите в клане Метатрейдера, не страшно, наверняка уже написан конструктор под нужную вам торговую платформу. Дело, опять же, в возможностях и желании. Мораль проста: не стоит пытаться реализовать то, что уже давно реализовано. Игнорирование чужого труда может дорого обойтись, придумывать науку заново совсем не обязательно.

5. Хочу программировать непростого советника? Написание технического задания

Итак, вы уже обладаете некоторым торговым опытом, вы проверили свою идею в торговле или имеете точное представление о том, как она будет работать на реальном рынке. Значит, пора переходить к написанию формальных правил вашей стратегии. Часто на этом шаге начинаются проблемы у большинства последователей гуманитарных наук – люди сталкиваются с непреодолимой стеной непонимания, когда абсолютно идеально отработанная в голове схема перестает работать при переводе на технический язык.

Проблема эта настолько распространенная, что создала целую индустрию по переводу абстрактных идей на формальный язык четко структурированных правил, естественно, не бесплатно. На самом деле, при минимальной подготовке вы не столкнетесь с такой сложностью просто потому, что понимаете механизм работы шестеренок вашего форекс робота до самых мелочей, но некоторого труда разработка все же потребует.

По сути, правильно составленное задание – это уже половина работы. Однако, это не работа программиста. Если вы будете просить программиста написать задание за вас, будьте готовы натолкнуться на непонимание, в лучшем случае, и негодование в абсолютном большинстве ситуаций. Именно разработчик идеи несет ответственность за ее точную формализацию, а никак не реализатор – если хотите, переводчик на язык низкоуровневых команд.

6. Напишите мне советник по индикатору

Пример плохого задания для создания торгового советника – его отсутствие. Само намерение заказчика может быть и понятно: есть индикатор, нужно написать торгового робота, ну а дальше что?

[info_block align=»right» linkText=»Вникайте в процесс!»]»Старайтесь вникать в процесс работы и всего, что непосредственно касается реализации идеи вашего советника»[/info_block]

Как закрывать сделку? Как ее сопровождать? Какие выбирать объемы? Что делать с проскальзываниями и реквотами? Нужно понимать, что программист не обладает экстрасенсорными способностями. Если вы такого найдете, обязательно дайте знать, такие люди не должны пропадать.

Видя ТЗ на создание работа без нужных подробностей, фрилансер внесет свою интерпретацию и, в некоторых случаях, действительно может угадать реальные намерения заказчика. Но, как правило, такие обращения заканчиваются двумя обиженными сторонами и обращением в арбитраж с дальнейшим расторжением договора.

Мораль: чем больше подробностей вы предоставите в задании, тем легче его будет понять, осмыслить и, в конце концов, реализовать.

7. Выбор исполнителя

Если у вас нет опыта работы с фриланс-биржами, попробуйте представить себе субэкваториальную версию ада. На самом деле, не все так страшно, но некоторые нюансы все же стоит учитывать.

Во-первых, ценовая политика при написании советника может быть крайне неопределенной. Существует некоторый минимум, за который адекватный программист браться не будет, но, в то же время, значение этого минимума сильно плавает и временами минимум становится максимумом (да, так тоже бывает).

Слишком щедрым тоже быть не стоит, это сразу говорит о том, что человек при деньгах и с вас обязательно сдерут три шкуры за какую-то простецкую задачу. Если вы не понимаете стоимость задачи, попробуйте узнать ее у доверенных людей. Общайтесь с опытными разработчиками, даже если не собираетесь у них ничего заказывать. В дальнейшем, это поможет выявить, к кому обращаться можно, а к кому не стоит.

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

[info_block align=»right» linkText=»Все в ваших руках»]»В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.»[/info_block]

Один из типичных примеров – недопонимание форматов файлов и их значения. Вроде: «У меня тут есть .dll библиотека (.exe файл или .ex4 программа), не могли бы вы быстренько поправить то и то, а я вам за это копеечку закину? Нет? А почему? Василий мне сделал советника за 5 баксов, а вы плохой разработчик значит!».

Мораль: старайтесь вникать в процесс работы и всего, что непосредственно касается реализации вашей идеи. Это не только поможет лучше разобраться в работе робота самому, но и в дальнейшем упростит процесс общения с исполнителями. В работе всегда принимают участие, как минимум, две стороны, и если вы намерены сделать трейдинг своей основной профессией, терпение нужно беречь – и свое, и окружающих.

8. Сдача советника – включайтесь в работу!

Этап сдачи работы – самый сложный. Будьте уверены, каждый исполнитель с горя пьет успокоительный отвар, черным маркером отмечая день календаря, когда его в очередной раз просят поправить и без того исчерпавший все сроки заказ. Как и вселенной, совершенству нет предела, но в определенный момент нужно собраться и сказать – задача завершена.

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

Со стороны исполнителя же работа завешена ровно тогда, когда исполнены все пункты заказа. Техническое задание для программиста – это четко проведенная тропа, отходить от которой значит додумывать за заказчика. Иногда эта тропа заводит в тупик, как дорога из бывшей столицы Руси в либеральную Европу. То есть, на этапе приема работ выясняется, что задача, оказывается, состояла совсем не в том, а в кардинально обратном.

Если задача небольшая, исполнитель вполне может пойти на уступки, и исправить работу в соответствии с новым ТЗ. Если работа проделана масштабная – что-либо менять уже поздно. Частая проблема – тотальная отрешенность в процессе разработки, например, отказ от участия в бета-тестировании: «Зачем вы мне скинули советника с ошибками, я что за вас тестировать еще должен?» или: «Откуда я знаю, как этот ваш тестер запускать, я программист что-ли?».

[info_block align=»right» linkText=»Безопасный Мартингейл» linkUrl=»https://fortrader.org/learn/forex-trader/bezopasnyj-martingejl-kak-otdelnymi-elementami-martingejla-uvelichit-pribylnost-strategii.html» imageUrl=»http://files.fortrader.org/uploads/2022/07/coins-730×487.jpg»]Как отдельными элементами Мартингейла увеличить прибыльность стратегии?[/info_block]

Для адекватного человека такие заявления режут слух, исполнитель же впадает в депрессию. Разработка торгового робота – это, в первую очередь, работа. Если вы ищете готовое решение, существует магазин готовых советников, где советника за вас и протестируют, и вымоют до блеска, попутно документируя его историческую успешность. В таком случае, обращаться на фриланс-биржу не имеет смысла.

MQL программирование: как написать советник на индикаторе

Мораль: не стоит отдавать все на самотек. В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.

Заключение

Великие деятели, как Альберт Хофманн, не дадут соврать. Опыт создания своего продукта бесценен. Если же вы пришли на валютный рынок по собственному желанию, поверьте, это надолго.

MQL программирование: функции расчета торгового лота в форекс советниках

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

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

Вам также будет интересно

Комментарии (3)

Заинтересовался темой разработки и консруирования советников. Попал на этот сайт и с огромным удовольствием прочитал статью. Написано умно, бойко, с юмором и главное — без орфографических ошибок. Даже «ищете» написано правильно. Я уже настолько привык видеть вместо него «ищИте» , что даже глаз уже не режет. Деградирую?

Адаптируетесь к реалиям ��

Привет! Есть рабочая идея, нужно написать индикатор или советник со звуковым оповещением и с точками сигналами в нужных местах, построение сигнала с помощью индикаторов зиг заг, веера фибоначчи с моими настройками и тремя линиями фибоначчи, могу прислать скрины, чтобы было понятней, это лично моя стратегия, в интернете этого нет, если заинтересовало, пишите на почту

Язык программирования MQL . Часть I

В данной статье мы продолжим рассматривать язык программирования MQL4 и подробнее разберем некоторые понятие из него. Вводная часть 👉 ссыль.

Сегодня мы разберем:

  • Чем отличаются программные средства от встроенных, какие бывают и для чего они нужны в терминале MetaTrader.
  • Понятие тик, комментарий и управление в MQL.

Встроенные средства в терминале МТ

Под встроенными средствами подразумевается то, с помощью чего мы проводим технический анализ рынка и управляем торговлей без участия автоматических систем. Это все индикаторы, различные линии и фигуры. Торговля без роботов, т.е. ручная, – это работа с отложенными и простыми ордерами. Панель ордеров позволяет менять параметры любого ордера и выставлять стоп приказы. Т.е. посредством встроенных средств управления, трейдер отправляет заявки брокеру вручную или на полуавтоматическом режиме.

Программные средства в терминале МТ

Кроме ручного и полуавтоматического режима МТ позволяет вести полностью автоматическое или удаленное (на арендованном сервере) управление торговлей и таким же способом проводить анализ рынка. Есть несколько основных видов торговых программ в MQL: Эксперт, скрипт и пользовательский индикатор (их мы подробнее уже рассматривали в вводной статье по MQL).

Одной из особенностей МТ является возможность запуска нескольких роботов одновременно и возможность их настройки во взаимодействии друг с другом. Так же важно знать, что любой робот или скрипт, установленный в программную часть терминала, работает непосредственно на его базе и не автономен (то есть если выключить терминал или компьютер, или убрать соединение с интернетом и сервером брокера то программа прекратит выполнять свои функции). Робот лишь отправляет приказы на сервер дилинга.

С такой позиции использование автоматического ПО позволяет сократить время, проводимое за монитором, торговать без эмоций и человеческого фактора, согласно заложенной торговой стратегией. А также автоматизировать выполнение всех тех действие, которые проблематично выполнять вручную. Например, торговля на нескольких инструментах и ТФ в один момент времени.

Основные понятия в MQL4

Комментарий

Комментарий может быть как частью самой программы, так и выполнять функция заметки/пояснения. Технически программа может обходиться без него (на качество работы это никак не влияет). Комментарии бывают:

  • Однострочные. Такой вид комментария должен начинаться с символов (//) и заканчивается переносом на новою строку.
  • Многострочный. Такой вид комментария начинается с символа (/*), а заканчивается символом (*/).

Тик – это любое изменение цены по инструменту в определенный момент времени. На мажорах (волатильных инструментах) тики могут поступать каждую секунду, а на менее волатильных – реже. Есть вид программ, работающий именно на тиках. Это эксперты (советники). Если инструмент маловолатильный и новых тиков не приходит, то программа будет бездействовать. При поступлении тика программе требуется десятые доли секунды, чтобы принять решение о сделке или же вывести информацию трейдеру (как это происходит со стороны кода мы разберем в следующих статьях). То есть тик в этом случае является триггером для выполнения программы.

Управление

Под управлением в MQL мы подразумеваем последовательную работу торгового робота с клиентской частью МТ. Это может быть как и взаимодействие отдельных строк кода, так и отдельных программ, объединённых в один программный комплекс. То есть по умолчанию торговля идет на ручном режиме, но, в случае запущенной программы, функции (заложенные в коде робота) исполняются на автомате.

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

Важно заметить еще один момент: выполнение любой программы происходит последовательной передачей прав на исполнение функций между самостоятельными частями кода. После прохождения всех этапов робот возвращает терминал в ручной режим управление. И, если у вас неправильно написан код (например, блок кода отвечающий за уведомление на открытие сделки написан верно, а следующий за ним блок, непосредственно исполняющий сделку, не верно), то вы можете просто увидеть уведомление, но самого открытия позиции не произойдет. В том числе, за это отвечает правильно настроенное управление и выстроенная последовательность исполнения частей кода.

На этом все. В следующей статье мы подробно изучим виды данных в MQL. До встречи в новых статьях.

Советники и программирование MQL4

Насколько вам интересно изучить программирование MQL4? Это открывает широкие перспективы для любого трейдера Форекс. Ведь вы сможете создать торгового советника почти любой сложности. Советники могут быть отображением практически любой торговой стратегии, а значит, имеет место диверсификация. Само понятие автоматической торговли подразумевает множество выгод – больше свободного времени, уменьшение эмоциональной нагрузки, оптимизация торговли и диверсификация рисков.

Итак, сегодня мы будет вести разговор о программировании MQL4. Также советуем ознакомиться с видео “Как создать советник MQL4?”

Язык программирования MQL4 – что и как?

Возможно, вы знаете, что в торговом терминале МТ4 имеется собственный язык программирования – т.н. MetaQuotes Language (сокращённо MQL). Наиболее популярна версия 4, хотя некоторые практикуют также написание советников на MQL5 – для МТ5.

Данный язык позволяет как написать собственный индикатор, скрипт или торгового советника (эксперта), так и придумывать различные аналитические функции, чтобы анализировать рыночную ситуацию.

Индикатор – программа, графически отображающая на графике определённые расчёты. На одном графике может одновременно находиться сколько угодно индикаторов.

Скрипт – небольшая программа, которая одноразово выполняет определённое действие. Например, при нажатии определённой клавиши для открытого ордера устанавливаются фиксированные стоп лосс и тейк профит.

Торговый советник – программа, которая выполняет самые различные действия: выводит какую-либо информацию на график, открывает-закрывает сделки, устанавливает, отменяет и изменяет стоп-ордера и многое другое. Фактически, советник является программным отображением определённой торговой системы (стратегии). Иногда советников называют Механическими Торговыми Системами (МТС). Главная особенность МТС – полная автономность.

Рекомендуемый брокер для торговли — Alpari или RoboForex.

Язык программирования MQL4 – стартуем!

Синтаксис языка MQL4 очень похож на известный С (тот, с которого пошли С+ и С++). Поэтому если вы умеете программировать на С, то MQL4 изучите без проблем. Различия лишь в том, что последний является упрощённым вариантом С, а также “заточен” под написание индикаторов и МТС.

Полным новичкам сначала будет непривычно, но начните с простых основ, а потом постепенно переходите к сложным функциям – и всё получится! Вам пригодится как книга-руководство по языку
http://docs.mql4.com/ru/index
так и специализированнее форумы, где имеются ответы на часто задаваемые вопросы, а также много готовых советников Форекс – как и индикаторов со скриптами.
www.mql4.com/ru
www.mql5.com/ru

Преимущества программирования MQL4

● Реализация собственных идей для прибыльного трейдинга.

● Новое направление для саморазвития.

● Возможность написания платных советников на заказ.

● Более глубокое понимание торговых операций.

Работаем с WebRequest — MQL4 программирование

● Новые идеи для торговли.

● Возможность проведения любого статистического анализа.

Ленивые или занятые трейдеры всегда могут обратиться за помощью к профессиональному программисту, который за условно небольшую плату (от 50$ и выше) напишет вам торгового советника “под ключ”. Всё же советуем изучить хотя бы основы языка программирования MQL4 – это поможет вам более точно объяснить программисту, какой торговый алгоритм вы хотите получить на выходе.

Mql программирование на форекс — дополнительный урок по основам

Желаем прибыльной автоматической торговли и помните, что прибыльность торговли очень сильно зависит от выбранного вами брокера!

Рейтинг Форекс брокеров: