Как составить программу биржа

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

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

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

Изучите возможный стек технологий

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

Пишите вы высокочастотного робота, которому важна каждая миллисекунда? На каких рынках каких стран будет работать торговая система? Будет ли в ней лишь торговый движок, или еще нужно добавить модуль риск-менеджмента?

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

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

  • Большинство брокерских и не только API имеют интерфейсы на C++ и/или Java. Возможно, вы сумеете найти готовые модули для подключения, написанные на C#, Python, R, Excel и MatLab представителями сообщества/клиентами конкретного брокера. Но возможно придется и писать их самостоятельно.
  • Для анализа данных часто применяют такие библиотеки, как uBLAS, LAPACK и NAG для C++, MatLab в Python популярны NumPy/SciPy.
  • При разработке высокочастотных роботов, использующих GPU (FPGA), скорее всего придется познакомиться с фреймворком CUDA.

Изучите специфику разработки в сфере финансов с помощью встроенных языков программирования

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

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

Один из самых популярных на российском фондовом рынке терминалов – это QUIK, и в нем есть алгоритмический язык QPILE ( QUIK Programmable Interface and Logic Environment). С его помощью можно автоматизироватьнесложные торговые системы. Также в QUIK встроен интерпретатор скриптового языка LUA – он называется QLUA. В терминал скрипты на нем можно загружать как в виде исходного кода, так и уже в виде скомпилированного байт-кода.

Пример кода на QPILE:

PROGRAM FirmCode = “MC0012300000” CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, “EQTV”, “SUR”) CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, “EQTV”, “SUR”) Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, “EQTV”, “SUR”) AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked If AvailableMoney > 0 Status = “Заявки доступны” Else Status = “Заявки недоступны” SET_ROW_COLOR(ROWNAME, “RGB(255,138,138)”, “DEFAULT_COLOR”) End If END_PROGRAM

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

Помимо QUIK, на российских биржах можно торговать через терминал SMARTx. В нем используется встроенный скриптовый язык TradeScript. Синтаксис у него простой, но количество доступных слов и операндов, кодировать можно довольно сложные стратегии. Вот так может выглядеть код простой стратегии на TradeScript:

Buy Signals # Покупаем, если момент и инерция имеют однонаправленный тренд TREND(EMA(CLOSE, 20), 15) = UP AND TREND(MACD(13, 26, 9, SIMPLE), 5) = UP Sell Signals # Продаем, если момент и инерция имеют однонаправленный тренд TREND(EMA(CLOSE, 20), 15) = DOWN AND TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Long Signal # Выходим, если тренд инерции и момента имеет противоположное направления TREND(EMA(CLOSE, 20), 15) = DOWN OR TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Short Signal # Выходим, если тренд инерции и момента имеет противоположное направления TREND(EMA(CLOSE, 20), 15) = UP OR TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

Самый важный этап: тестирование и отладка

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

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

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

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

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

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

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

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

Программирование торговых роботов: инструменты, язык для разработки

Содержание

  1. В чем преимущества и недостатки самостоятельной разработки робота для торгов
  2. Какие шаги включает в себя процесс разработки торгового робо-советника
  3. Финансовый анализ, заложенные алгоритмы, торговый движок
  4. Как выбрать язык для программирования торговых роботов
  5. Отладка и тестирование торгового робота на виртуальном счете
  6. Знание каких языков программирования необходимы для создания торгового робота – разработка бота от А до Я
  7. MetaQuotes Language 5
  8. С#
  9. Java
  10. Python
  11. Инструменты, которые понадобятся при разработки робота для трейдинга
  12. Wealth-Lab
  13. MetaStock
  14. Omega Research
  15. TSLab
  16. StockSharp
  17. LiveTrade
  18. SmartX
  19. Основные этапы разработки бота для торговой площадки
  20. Этап 1: идея и детальные описания будущей системы
  21. Этап 2: предварительное тестирование
  22. Этап 3: анализ роботизированной системы
  23. Этап 4: ядро
  24. Этап 5: разработка торговой стратегии
  25. Этап 6: тестирование
  26. Этап 7: анализирование результатов
  27. Возможно ли разработать торгового робота для биржевой работы без навыков программирования?
  28. Способ 1: Написание торгового робота, используя инструменты внутреннего языка вашего программного обеспечения
  29. Способ 2: использование табличного процессора Excel
  30. Способ 3: использование аналитических платформ
  31. Способ 4: применение в процессе разработки трейдингового робота языков программирования

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

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

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

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

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

Однако и тут можно столкнуться со следующими неприятностями:

  • у вас не будет возможности подключить к системе любые выбранные индикаторы;
  • подобные роботы не предполагают работу с аналитическими данными и прямыми потоками котировок через API.

Какие шаги включает в себя процесс разработки торгового робо-советника

Финансовый анализ, заложенные алгоритмы, торговый движок

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

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

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

Создание алгоритмов для трейдинга, логика торговых роботов:

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

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

  1. Нужно знать по какой стоимости приобретать тот или иной актив. Если мы выложили, а заявка по-прежнему висит, цена ушла. Берем по расценкам рынка?
  2. Что делать, если заявка отыграла себя только на половину? Остаток продаём по рыночной стоимости? Через какой промежуток времени?
  3. Отключаем робота раньше, чем завершиться торги? Насколько раньше? Будет ли он основан на спокойной волатильном боковике или, наоборот, на всплеске?
  4. В какие дни робот будет осуществлять торговлю? На протяжении всей недели или в активно волатильные дни – в понедельник и пятницу?
  5. Какие останавливающие приказы будут запрограммированы в робо-советнике?

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

Как выбрать язык для программирования торговых роботов

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

Если у вас уже есть определенные знания в сфере программирования и вы владеете, например, С#, то скорее всего вы будете писать стационарное приложение, в котором будет применено API торгового терминала вашего брокера, допустим это будет программный продукт QUIK.

Программирование торговых роботов: инструменты, язык для разработки

Интересно! Если вы не сталкивались с программированием, но хотите обрести эти навыки и разработать собственного бота, обратите внимание на языки QPILE и QLUA, которые встроены в рабочий комплекс QUIK.

Отладка и тестирование торгового робота на виртуальном счете

Третьим шагом будет проверка нашей работы, когда робот сформирован и написан.

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

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

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

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

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

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

Знание каких языков программирования необходимы для создания торгового робота – разработка бота от А до Я

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

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

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

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

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

  • торговый двигатель – доступная и простая система, отвечающая за выполнение легких задач, создается на языках C, C++;
  • торговый робот для управления настройками – данная система отвечает за управление алгоритмами и редактирует интерфейс пользователя, включает в себя механизмы представления результатов торговли; пишется программа на языках C++, С#, Java и подобные;
  • сервис для тестирования рабочей платформы на основе исторических данных и подбора параметров для торговли – модуль отвечает за тестирование новых алгоритмов, осуществляющееся на основе исторических данных, а также заново настраивает текущие алгоритмы; для написания используются только скриптовые языки программирования.

Программирование торговых роботов: инструменты, язык для разработки

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

Так какой же язык программирования для написания торгового робота выбрать: Java, Python, C# или C++?

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

Наибольшим спросом пользуются следующие языки: MetaQuotes Language 5, C#, Java, Python и C++. Последние два являются наиболее простыми для изучения.

Программирование торговых роботов: инструменты, язык для разработки

Amibroker

MetaQuotes Language 5

Данный язык программирования похож на C++, на нем пишутся и разрабатываются программы для сервиса Meta Trader 5, используемой для торговли на биржах Forex, Futures и других.

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

Синтаксис, как было указано выше, приближен к С++ и дает возможность работать в объектно-ориентированном стиле. В качестве вспомогательной платформы со всеми необходимыми для написания торгового робота инструментами предоставляется среда MetaEditor.

Программирование торговых роботов: инструменты, язык для разработки

Главными функциями программы являются:

  1. Консультант – автоматическая торговая система, которая привязывается к определенному графику.
  2. Графическое отображение рассчитанных зависимостей – это индикатор, разработанный клиентом в качестве дополнения к уже встроенных в систему датчикам.
  3. Скрипт – сценарий, где прописан ход действий, созданный для единоразового автоматического выполнения.
  4. Библиотека – совокупность общедоступных функций, где хранятся и распространяются часто используемые модули клиентских программ. Автоматически библиотеки никакие функции не выполняют.
  5. Включаемый файл – первоначальный текст часто используемых модулей пользовательских программ.

С#

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

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

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

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

Java

Если сравнивать Java с вышеописанным языком программирования, то можно сделать вывод, что они практически идентичны.

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

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

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

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

Обратите внимание! Язык программирования Java можно эксплуатировать отдельно от программируемого сервиса.

Python

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

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

Инструменты, которые понадобятся при разработки робота для трейдинга

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

Wealth-Lab

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

Программирование торговых роботов: инструменты, язык для разработки

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

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

Как выбрать язык программирования для создания торгового робота – программирование для трейдера:

MetaStock

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

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

Программирование торговых роботов: инструменты, язык для разработки

Omega Research

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

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

TSLab

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

Программирование торговых роботов: инструменты, язык для разработки

StockSharp

Программный инструмент StockSharp является бесплатным в базовой версии, но имеет расширенную версию Pro, в которой наиболее широкий и привлекательный функционал. Основным языком программирования является C#.

Программирование торговых роботов: инструменты, язык для разработки

LiveTrade

Данный продукт является плодом работы петербуржской русской компании Cofite. Через встроенный в сервис терминал можно запускать роботов, а в продукте Robotlab от той же компании разрабатывать их.

Здесь также можно записывать торговые стратегии в виде блок-схемы, если не владеть навыком программирования, а затем реализовать их в терминале.

Программирование торговых роботов: инструменты, язык для разработки

SmartX

Торговая площадка SmartX являет собой не привычный терминал, а полноценный программный продукт, включающий в себя векторный язык программирования TradeScript, созданный специально для разработки роботизированных инвестиционных брокеров в США американской компанией Modulus Financial Engineering

Программирование торговых роботов: инструменты, язык для разработки.

Главными преимуществами программного продукта являются:

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

Программирование торговых роботов: инструменты, язык для разработки

Основные этапы разработки бота для торговой площадки

Этап 1: идея и детальные описания будущей системы

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

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

В чем заключается идея вашей торговой стратегии?

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

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

Этап 2: предварительное тестирование

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

Обратите внимание! Чтобы разобраться с основным функционалом робота-консультанта нужно выделить несколько дней свободного времени.

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

Этап 3: анализ роботизированной системы

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

Условно они делятся на две категории:

  • торговые;
  • дизайнерские.

Торговые риски – все те моменты, которые будут упущены в процессе разработки торгового алгоритма.

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

Этап 4: ядро

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

Этап 5: разработка торговой стратегии

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

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

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

Этап 6: тестирование

После написания торговой стратегии ее необходимо протестировать на виртуальном счете или реальных торгах.

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

Если где-то имеются погрешности, вернитесь на 3 или 4 этап разработки и отредактируйте элементы в них.

Этап 7: анализирование результатов

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

Важно! Необходимо постоянно обновлять информацию и не пренебрегать записями в данном журнале.

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

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

ТОП-4 доступных и простых способа написания автоматизированного брокера без знания языков программирования

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

Способ 1: Написание торгового робота, используя инструменты внутреннего языка вашего программного обеспечения

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

Программирование торговых роботов: инструменты, язык для разработки

Робот для Quik на LUA

Способ 2: использование табличного процессора Excel

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

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

Недостатками использования табличного процессора Excel являются замедленная работа и некоторые проблемы при внедрении робота в торговую систему.

Способ 3: использование аналитических платформ

Применение в работе таких аналитических платформ, как MetaStock или WealthLab не наделяют робота торговыми функциями, их важно адаптировать в процессе разработки. К достоинствам данного способа относят возможность проверки на основе исторических данных, а к недостаткам – частые сбои в системах и необходимость подключать к процессу разработки дополнительные инструменты.

Способ 4: применение в процессе разработки трейдингового робота языков программирования

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

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

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

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

Если вам понравилась статья, то подписывайтесь на мой телеграм канал.

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

progr

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

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

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

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

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

Написать форекс советника

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

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

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

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

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

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

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

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

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

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

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

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

Мастер советников MetaTrader

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

Мастер советников MetaTrader

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

Параметры сигналов советника

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

Варианты торговых сигналов советника

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

параметры модуля сигналов

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

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

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

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/2016/07/coins-730×487.jpg»]Как отдельными элементами Мартингейла увеличить прибыльность стратегии?[/info_block]

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

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

Заключение

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

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

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

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

  • Как из запаздывающего индикатора сделать работающий Грааль?
  • ECN или MTF – выбираем агрегатор ликвидности
  • Сетка ордеров на форекс: 2 варианта популярной стратегии

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

Получим такое:
Пишем робота для торговли за 15 минут…

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

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

Например только лонг стратегия на двух МА выглядит вот так:

//@version=5

strategy(«2MA by Denis», commission_value = 0.022, initial_capital = 10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true)

//ProfitSize = input(100)

fastLength = input(9)

slowLength = input(18)

price = close

mafast = ta.sma(price, fastLength)

maslow = ta.sma(price, slowLength)

if (ta.crossover(mafast, maslow))

    strategy.entry(«MA2CrossLE», strategy.long, comment=«MA2CrossLE»)

Для фиксированного размера стопов, добавляем блок стопов.

//БЛОК СТОПОВ и ТЕЙКПРОФИТОВ

// The Fixed Percent Stop Loss Code

// User Options to Change Inputs (%)

stopPer = input.float(3.0, title=’Stop Loss %’) / 100

takePer = input.float(8.0, title=’Take Profit %’) / 100

// Determine where you’ve entered and in what direction

longStop = strategy.position_avg_price * (1 — stopPer)

shortStop = strategy.position_avg_price * (1 + stopPer)

shortTake = strategy.position_avg_price * (1 — takePer)

longTake = strategy.position_avg_price * (1 + takePer)

if strategy.position_size > 0

    strategy.exit(id=«MA2CrossLE», stop=longStop, limit=longTake, comment = «Long Stop Loss/Profit»)

if strategy.position_size < 0

    strategy.exit(id=«MacdShort», stop=shortStop, limit=shortTake, comment = «Short Stop Loss/Profit»)

    //PLOT FIXED SLTP LINE

plot(strategy.position_size > 0? longStop: na, style=plot.style_linebr, color=color.red, linewidth=1, title=«Long Fixed SL»)

plot(strategy.position_size < 0? shortStop: na, style=plot.style_linebr, color=color.red, linewidth=1, title=«Short Fixed SL»)

plot(strategy.position_size > 0? longTake: na, style=plot.style_linebr, color=color.green, linewidth=1, title=«Long Take Profit»)

plot(strategy.position_size < 0? shortTake: na, style=plot.style_linebr, color=color.green, linewidth=1, title=«Short Take Profit»)

// КОНЕЦ — БЛОК СТОПОВ и ТЕЙКПРОФИТОВ

Поздравляю, вы сделали своего первого робота. И он даже прибыльный 🙂

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

PS Если вы не поняли, куда пихать код, то попробуйте нажать кнопку “Pine Editor”

ТрейдингВью это отлично, но как заставить его торговать? 

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

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

Если коротко, то в TradingView создается Alert для стратегии, в котором Notification приходит в виде Webhook. Или в котором будильник использует интернет крючок, как напоминание…

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

На десерт: внутри есть более сложная стратегия

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

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

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

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

Как написать программу

В QUIK предусмотрена возможность установки двух основных типов программ скриптов и торговых роботов:

  1. Программ написанных на языке QPILE;
  2. Программ написанных на языке программирования LUA.

На мой взгляд, наиболее простым вариантом является работа с программами на языке LUA. Область применения данного языка программирования не ограничивается только написанием программ для торговых терминалов, на нём пишут и компьютерные игры, и мобильные приложения, и много чего ещё. Но нас сейчас интересует его использование в контексте написания программ торговых роботов для торгового терминала QUIK. К слову сказать, используемая здесь разновидность данного языка часто именуется QLUA (Q от QUIK).

Программирование на LUA

Описать все особенности и синтаксические конструкции языка в рамках одной этой статьи конечно не получится, впрочем в этом и нет особой необходимости. Как я уже говорил, синтаксис здесь довольно простой и включает в себя все основные команды свойственные любому современному языку программирования. Есть, конечно, некоторые специфические моменты, но все они подробно описаны на многочисленных тематических ресурсах. Например здесь: https://forum.quik.ru/forum10/topic2029/

Я сильно не заморачивался ни синтаксисом, ни изучением языка, а просто сразу начал писать программу. По ходу необходимости, уточнял синтаксис той или иной необходимой мне команды через поисковики. Например запрос типа “оператор для открытия позиции в QLUA” подсказывал мне, что для данной цели необходимо использовать оператор  sendTransaction(), а запрос “синтаксис оператора sendTransaction() в LUA” выдавал в первой же позиции результатов поиска сайт содержащий ответ:

Результаты поиска

На этом сайте вы найдёте синтаксис всех команд языка с конкретными примерами их использования: http://luaq.ru/

А вот здесь вы найдёте полное руководство по азам программирования на LUA: https://lua.org.ru/contents_ru.html

Кроме этого есть ещё масса других ресурсов содержащих исчерпывающую информацию по данной теме.

Где писать программу. Какой редактор использовать?

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

Для этого сначала создаёте обычный текстовый файл:

Открытие текстового документа

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

  • В меню текстового документа “Файл” необходимо выбрать пункт “Сохранить как”
  • В выпавшем окне сохранения нужно вместо расширения “Текстовый документ” выбрать расширение “Все файлы”
  • К названию сохраняемого документа добавить .lua
  • Нажать кнопку “Сохранить”
Сохранение файла lua

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

Ошибка в скрипте LUA
После запуска программы терминал показывает в ней ошибку

После этого достаточно будет её отредактировать и запустить вновь. В том случае, если ошибок больше нет, окно “Ошибки выполнения скрипта” останется пустым, а программа начнёт работать (об этом будет свидетельствовать характерный значок “play” перед названием). После того, как заложенный в неё алгоритм отработает, она остановится. Если же она специально зациклена (работает на постоянное отслеживание текущей рыночной ситуации), то остановить её можно будет нажатием на кнопку “Остановить”.

Интерфейс окна LUA-скриптов в QUIK
Основной интерфейс

Как протестировать торгового робота

В Метатрейдере с этим делом всё обстоит довольно просто — запускаешь тестер стратегий, выбираешь временной интервал ценовой истории и вперёд. Тестер прогонит через загруженного в него торгового робота весь массив цен из заданного в настройках интервала и выдаст вам график прибыли/убытка которые были бы получены роботом при реальной торговле online. При этом у вас ещё будет возможность оптимизировать настройки тестируемого торгового робота таким образом, чтобы получить наилучший результат (наибольший профит), правда на всё том же ограниченном интервале истории.

В QUIK такого тестера априори не существует. То есть тестировать созданных роботов на истории вы здесь не сможете**, но оно, пожалуй, и к лучшему. Почему к лучшему? Излишняя оптимизация на истории может сыграть с вами злую шутку. Дело в том, что самые замечательные результаты торговли в прошлом никогда не гарантируют вам того же и в будущем. Часто бывает так, что стратегии “заточенные” (читай — оптимизированные) под определённый интервал времени в прошлом и приносящие на нём стабильно высокий доход, в реальном времени начинают откровенно сливать депозит.

Но не расстраивайтесь, торговых роботов для терминала QUIK вы сможете тестировать в реальном времени. Правда для этого вам потребуется так называемый демо-счёт (вы ведь не хотите, чтобы тестируемый советник принялся сразу же торговать реальными деньгами).

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

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

Если та версия, которую предлагает ваш брокер не поддерживает возможножность установки и запуска LUA-скриптов, то можете установить демку от брокера БКС. Это не реклама, просто у меня стоит такая же и я точно знаю, что данная версия позволяет работать с любыми скриптами и советниками написанными на языке программирования LUA (QLUA).


** По крайней мере чистыми средствами QUIK, без использования какого-либо дополнительного софта.

Как установить LUA-скрипт в торговый терминал

Процесс установки торгового робота (скрипта) одинаков и для учебного, и для реального терминалов. Он довольно прост и выглядит следующим образом:

  1. Сначала заходите в верхнее меню терминала “Сервисы” и находите там кнопку “LUA-скрипты”:
Открытие окна LUA-скриптов в QUIK
  1. После нажатия на неё, перед вами появится уже знакомое вам окно “Доступные скрипты”. Жмём кнопку “Добавить” и в выпавшем окне выбираем созданный вами файл торгового робота или скрипта.

Вот и всё, на этом процесс установки торгового робота закончен. Для того, чтобы он начал работать достаточно выбрать его кликом мышки и нажать кнопку “Запустить”. Если в программе не будет обнаружено ошибок, то она начнёт работать, а иначе выдаст вам соответствующее сообщение (см. выше).

Вы можете поделиться этой статьёй на своей странице в соцсетях:

  • Categories
  • Tags
  • Related Articles
  • Author

Добавить комментарий