Торговый робот своими руками основы программирования mql4

Добавил пользователь Валентин П.
Обновлено: 15.09.2024

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

Алготрейдинг – это будущий и настоящий инструмент в арсенале каждого профессионального трейдера.

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

Пройди обучающее руководство и приобрети первые навыки в создании автоматических систем. Может быть, именно ты будешь Стивом Джобсом в автоматической торговле Форекс!

Жми "изучить" , и узнай, как создать свой торговый алгоритм

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

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

Но вот вопрос: реально ли самому взяться за создание торговых роботов? И если да, то что для этого нужно?

Как создать торгового робота, не потеряв при этом драгоценного времени?

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

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

Как создать торгового робота для Форекс?

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

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

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

Еще один плюс – это торговые терминалы Форекса, такие как, MetaTrader 4 или MetaTrader 5. Создать советник Форекс в МТ4 довольно просто, на фоне других торговых платформ, ведь эти терминалы специально разработаны, чтобы на их базе можно было создать торгового робота. У них простой интерфейс, который продуман даже для того, чтобы вести трейдинг вручную.

Создание торговых роботов: как приступить?

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

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

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

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

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

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

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

Как создать робота для Metatrader 4?

Для торговой платформы Metatrader 4 подходит язык программирования MQL4 или MQL5. Вы можете просто изучить и разобрать несколько уже существующих роботов, и на их базе создать собственного советника. Это, кстати, поможет Вам лучше понимать тонкости программирования.

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

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


Ниже показан процесс создания простого торгового робота для работы в терминале MetaTrader 4. На этом простом примере вы сможете попытаться создать своих торговых роботов для частичной или полной автоматизации торговли на рынке Форекс. Для создания торгового робота мы будем использовать язык программирования MQL 4. На самом деле все не так страшно и сделать это сможет даже ребенок, конечно, придется приложить некоторые усилия для изучения основ языка программирования, но результат в итоге стоит затраченных усилий.

Простой торговый робот

Шаблон создаваемого торгового робота

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

//В этом месте программного кода описываются все переменные, используемые в программе

int start() // Спец . функция start

// В этом месте прописывается алгоритм действий торгового робота (с использованием //специальных команд языка MQL 4)

return; // Выход из start()

Алгоритм действий торгового робота

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

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

Создание простого торгового робота Форекс

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

if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )

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

if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )

Bid – цена спроса*;

iMA ()– оператор вычисляющий значение скользящей средней (в данном случае используется простая скользящая средняя с периодом задаваемым в настройках торгового робота);

OrderSend ( Symbol (), OP _ BUY ,0.1, Ask ,3, Bid — sl *Point, Bid + tp * Point )— это приказ на покупку 0,1 лота с установкой ордеров стоп-лосс ( sl ) и тейк-профит ( tp ) задаваемых в настройках торгового робота.

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

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

Таким образом на данный момент мы имеем следующий алгоритм действий:

if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )

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

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

Давайте поставим ему дополнительное условие, открывать позицию только в том случае когда открытых позиций нет: if( OrdersTotal()=0), здесь OrdersTotal() – функция возвращающая значение открытых и отложенных ордеров.

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

if( OrdersTotal()=0)

if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )

Как видите, мы весь алгоритм с проверкой условий поместили в фигурные скобки под условием if( OrdersTotal()=0) и если это условие не будет выполнено, торговый робот просто будет ждать следующего тика (изменения цены).

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

Описание переменных создаваемого торгового робота

В нашем примере мы использовали следующие переменные:

PMA – переменная содержащая значение периода используемой скользящей средней;

Sl – переменная содержащая значение ордера стоп-лосс;

Tp – переменная содержащая значение ордера тейк-профит;

Все три значения не могут быть дробными и потому относятся к типу int (целых чисел).

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

Таким образом, получаем следующее описание переменных:

PMA=13,sl=50,tp=100;

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

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

PMA=13,sl=50,tp=100;

int start() // Спец . функция start

if( OrdersTotal()==0)

if( Bid>iMA (Symbol(), Period(),PMA, 0,MODE_SMA , PRICE_CLOSE, 0) )

return; // Выход из start()

Заключение

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

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


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

Данные о том, что именно зарабатывающих трейдеров не более 5% встречаются повсеместно. Деньги остальных 95% делятся между первыми 5% и брокерами/диллинговыми центрами.

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

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

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

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

Немного теории

Типы данных

Торговый эксперт оперирует данными. Он работает с поступающими ценами, ценовыми значениями индикаторов, ведет подсчеты открытых ордеров, что-то печатает в Журнал торгового терминала.

В mql4 существуют следующие типы данных:

Теперь весь наш код выглядит так:

Основные типы данных:

– целые числа (char, short, int, long, uchar, ushort, uint, ulong)

– логические (bool)

– литералы (ushort)

– строки (string)

– числа с плавающей точкой (double, float)

– цвет (color)

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

– перечисления (enum)

Сложные типы данных:

– структуры;

– классы.

На первых порах вам не понадобится и 70% из вышеперечисленного. Рассмотрим только то, что нам будет нужно в рамках разработки нашего торгового эксперта.

– Тип int – целые числа, т. е. 1, 2, 5,100, 1425…

– Тип double – числа с дробной частью (с запятой): 1,0254, 0,0547…

– Тип bool – имеет только 2 значения – true (правда) и false (ложь).

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

С типом bool все также, например переменная bool b = true, означает, что бочонок с именем b содержит в себе true.


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

Объявлять переменную нужно только 1 раз. Позднее мы поговорим о том, где их можно объявлять и как это влияет на последующую работу.

Условные операторы if-else

Разберем, что же означает каждая строчка.


В глобальных переменных, кроме переменных для значений индикаторов, мы объявили переменную типа datetime с названием open. Сейчас она содержит 0.

ВАЖНЫЙ МОМЕНТ: установите курсор на слово datetime и нажмите на клавиатуре F1 – появится СПРАВКА с описанием, что означает тип datetime. Так можно делать НА всех встроенных командах!

if (Open [0]!= open): Если Время Открытия Нулевой Свечи НЕ РАВНО open (т. е. нулю), то выполнится код в фигурных скобках. Команда Open [0] означает Время Открытия Нулевой (т. е. текущей, еще не закрытой свечи). Также, установите курсор на Open и нажмите F1 – почитайте, что это за команда.

EnveUP = iEnvelopes (NULL,0,13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,1); – нажимаем на iEnvelopes и видим, в каком порядке и какие данные должны быть указаны:

double iEnvelopes (

– string symbol, // имя символа

– int timeframe, // таймфрейм

– int ma_period, // период

– int ma_method, // метод усреднения

– int ma_shift, // сдвиг средней

– int applied_price, // тип цены

– double deviation, // отклонение (в процентах)

– int mode, // индекс линии

– int shift // сдвиг

);

В нашем коде мы не предусмотрели возможность изменять данные индикатора Envelopes. Давайте это исправим. Нам нужно вывести во внешние параметры Период и Отклонение, выраженное в процентах.

Внимание! Это не конец книги.

Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.


Вы познакомитесь с азами программирования на языке MQL4.

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

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

Для просмотра содержимого вам необходимо авторизоваться или зарегистрироваться.



Telegram Канал партнеров

✅


Все Курсы от SKILLBОX практически БЕСПЛАТНО здесь ->

Читайте также: