Блог им. robot-scalper
- 19 февраля 2019, 14:37
- |
К нам поступил запрос на создание многопараметрического робота, с кучей условий торговой логики и в конце с припиской: «За работу я готов оплатить 800 рублей». Как у заказчика получилась такая сумма осталось не ясно. Возможно, всё тривиально, и это просто все его доступные средства, которые остались от торговли по интуиции. А возможно человек просто не понимает какую работу нужно проделать и из чего образуется цена на торговых роботов. Но это не страшно. Мы как раз сейчас и постараемся разобраться в этом.
Итак, чтобы разработать робота нужно выполнить определенные этапы. Рассмотрим их.
- Нужно определиться с торговой стратегией и формализовать её (точки входа, стоп-лоссы, тейк-профиты, фильтры и т.п.);
- Желательно создать прототип данного робота;
- Проверить работоспособность стратегии и прототипа на исторических данных;
- Желательно провести оптимизацию стратегии и найти оптимальные значения параметров;
- Нужно провести анализ сделок и добавить общие фильтры на ситуации в которых робот часто показывает убытки. Главное, нельзя примерять переоптимизацию! Иначе в реальной торговли результаты будут сильно отличаться! После этого возвращаемся к пункту 4. И работаем до тех пор пока стратегия не будет универсальной или пока мы её не забракуем как непригодную. Так тоже бывает, и не редко.
- Теперь можно приступать к непосредственной разработке робота, например, на LUA под QUIK;
- После разработки нужно протестировать робота и убедиться в четкой работе скрипта. Если обнаружатся неточности в работе или явные баги, то их нужно исправить и заново запустить робота на тестирование;
- Для того чтобы пользователь мог легко управляться с роботом требуется сделать удобный интерфейс и подробное описание функционала, то есть создаем документацию;
- Плюс нужна подробная инструкция с картинками по установке и использованию робота для начинающих пользователей;
- И конечно же всё равно у заказчика будут появляться вопросы, на которые нам нужно отвечать. То есть, нужна техническая поддержка.
И это мы рассмотрели идеальный вариант, когда во время работы заказчик не вносит изменения в торговую стратегию.
Как Вы могли убедиться, для создания качественного торгового робота требуется довольно много времени и сил. Мы здесь даже не касаемся самого программирования, которое тоже является довольно сложным и долгим процессом.
По поводу технических инструментов мы можем порекомендовать следующие варианты:
- Для тестирования прототипа стратегии на исторических данных хорошо подойдет программа TSLab.
- Для реальной торговли на боевом счете желательно использовать роботов на LUA. В этих скриптах можно прописать всевозможные проверки торговой логики и проверки на корректность входных данных (биржа может передавать и нулевую цену актива и пустые значения, робот при этом не должен «падать» и выдавать баги). Плюс, робот на LUA подключается непосредственно в QUIK, имеет высокое быстродействие, не занимает много ресурсов компьютера и не требует ежемесячной абонентской платы.
Рентабельно ли разрабатывать таким образом роботов за 800 рублей или даже за 3-5 тыс.рублей? Конечно же нет.
Что за такие цены могут предложить на рынке? Только скачанный где-то непонятный скрипт с сомнительной документацией и конечно без качественной техподдержки. Бесплатный сыр мы все знаем где бывает. Да и скупой платит дважды.
Нужно ли платить разработчикам роботов или нет, каждый решает для себя сам. Можно и не платить, а взять и методично, по пунктам, всё сделать самостоятельно. Сколько уйдет на это времени? И какой будет конечный вариант? Зависит непосредственно от опыта, знаний и умений конкретного человека.
Чем больше у человека опыта в программировании, в трейдинге, в автоматизации бизнес-процессов, в тестировании, в умении оптимизировать стратегии, тем быстрее и качественнее будет результат. Если вы начинающий алготрейдер и у вас нет наставника с его опытом и наработками, то настраиваться сразу желательно на 6 месяцев работы и более.
Профессиональный алготрейдер может передать знания по созданию прототипов, тестированию на истории и оптимизации роботов за более короткий срок. И это будет скорее всего платная услуга.
Кстати, как вы считаете, что лучше, купить готового робота за несколько тысяч рублей или за эту же сумму научиться самостоятельно разрабатывать и тестировать роботов? Напишите в комментариях.
По различным вопросам обращайтесь в личку или на почту:
mail@robot-scalper.ru
Очень много интересной и важной информации можно найти здесь:
https://www.instagram.com/robot_scalper/
Наш сайт: Robot-Scalper.ru
Желаем Вам успехов в трейдинге!
Берегите себя и свой депозит!
- хорошо
-
18
Как и многие другие, я начинал свою работу в качестве трейдера с торгового терминала Metatrader4. И когда у меня созрела необходимость в написании собственных скриптов и советников (торговых роботов), я не мудрствуя лукаво открыл учебник по MQL4 и изучив основы этого языка, через пару часов уже мог состряпать простую программку.
Дальше-больше, после реализации простых скриптов пришло желание запрограммировать более сложные алгоритмы торговли. Возникали, конечно, вопросы, но ответы на них достаточно легко дают Яндекс с Гуглом. В настоящее время существуют столько сайтов и форумов посвящённых данной тематике, что достаточно трудно найти такой вопрос, который остался бы без ответа после более-менее тщательного штудирования интернета.
Для чего я вам все это рассказал? Дело в том, что никакого особого опыта в программировании, кроме школьных уроков информатики у меня до этого не было. А это означает, что для того, чтобы справиться с этим делом вовсе не обязательно быть программистом.
Если же у вас за плечами уже есть какой-либо опыт программирования на любых языках, то данная задача вам покажется элементарной. Уверяю вас, так оно на самом деле и есть, на деле здесь всё оказывается куда проще и стоит только начать, как вы незаметно для себя уже превратитесь в матёрого создателя торговых роботов.
Как написать программу
В QUIK предусмотрена возможность установки двух основных типов программ скриптов и торговых роботов:
- Программ написанных на языке QPILE;
- Программ написанных на языке программирования 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
- Нажать кнопку “Сохранить”
Неудобство данного метода написания состоит в том, что без редактора невозможно скомпилировать файл и проверить его на наличие ошибок. Однако это не так критично, как может показаться на первый взгляд, поскольку наличие ошибок (а также их краткое описание) вам выдаст торговый терминал после того как вы попытаетесь запустить в нем программу.
После этого достаточно будет её отредактировать и запустить вновь. В том случае, если ошибок больше нет, окно “Ошибки выполнения скрипта” останется пустым, а программа начнёт работать (об этом будет свидетельствовать характерный значок “play” перед названием). После того, как заложенный в неё алгоритм отработает, она остановится. Если же она специально зациклена (работает на постоянное отслеживание текущей рыночной ситуации), то остановить её можно будет нажатием на кнопку “Остановить”.
Как протестировать торгового робота
В Метатрейдере с этим делом всё обстоит довольно просто — запускаешь тестер стратегий, выбираешь временной интервал ценовой истории и вперёд. Тестер прогонит через загруженного в него торгового робота весь массив цен из заданного в настройках интервала и выдаст вам график прибыли/убытка которые были бы получены роботом при реальной торговле online. При этом у вас ещё будет возможность оптимизировать настройки тестируемого торгового робота таким образом, чтобы получить наилучший результат (наибольший профит), правда на всё том же ограниченном интервале истории.
В QUIK такого тестера априори не существует. То есть тестировать созданных роботов на истории вы здесь не сможете**, но оно, пожалуй, и к лучшему. Почему к лучшему? Излишняя оптимизация на истории может сыграть с вами злую шутку. Дело в том, что самые замечательные результаты торговли в прошлом никогда не гарантируют вам того же и в будущем. Часто бывает так, что стратегии “заточенные” (читай — оптимизированные) под определённый интервал времени в прошлом и приносящие на нём стабильно высокий доход, в реальном времени начинают откровенно сливать депозит.
Но не расстраивайтесь, торговых роботов для терминала QUIK вы сможете тестировать в реальном времени. Правда для этого вам потребуется так называемый демо-счёт (вы ведь не хотите, чтобы тестируемый советник принялся сразу же торговать реальными деньгами).
В отличие от метатрейдера в котором и реальные, и учебные счета открываются в одном и том же терминале, в квике для этого нужно установить специальный учебный терминал. По сути своей это тот же QUIK, только данные он берет со специального — учебного сервера (котировки немного отстают по времени от реальных, но в целом повторяют их с достаточной точностью) и для торговли здесь используются виртуальные деньги.
Учебный QWIK можно скачать у любого брокера, желательно у того, через которого вы планируете в дальнейшем торговать. Правда здесь возможны некоторые заморочки связанные с тем, что не всегда учебная версия данного торгового терминала позволяет работать со скриптами LUA.
Если та версия, которую предлагает ваш брокер не поддерживает возможножность установки и запуска LUA-скриптов, то можете установить демку от брокера БКС. Это не реклама, просто у меня стоит такая же и я точно знаю, что данная версия позволяет работать с любыми скриптами и советниками написанными на языке программирования LUA (QLUA).
** По крайней мере чистыми средствами QUIK, без использования какого-либо дополнительного софта.
Как установить LUA-скрипт в торговый терминал
Процесс установки торгового робота (скрипта) одинаков и для учебного, и для реального терминалов. Он довольно прост и выглядит следующим образом:
- Сначала заходите в верхнее меню терминала “Сервисы” и находите там кнопку “LUA-скрипты”:
- После нажатия на неё, перед вами появится уже знакомое вам окно “Доступные скрипты”. Жмём кнопку “Добавить” и в выпавшем окне выбираем созданный вами файл торгового робота или скрипта.
Вот и всё, на этом процесс установки торгового робота закончен. Для того, чтобы он начал работать достаточно выбрать его кликом мышки и нажать кнопку “Запустить”. Если в программе не будет обнаружено ошибок, то она начнёт работать, а иначе выдаст вам соответствующее сообщение (см. выше).
Вы можете поделиться этой статьёй на своей странице в соцсетях:
- Categories
- Tags
- Related Articles
- Author
В данной статье мы уже подошли вплотную к тому, чтобы создать свой первый скрипт для торгового терминала QUIK. И начнем создавать скрипт, а не индикатор, потому что для начала скрипт будет проще для понимания.
Итак, чтобы у нас находилось все в одном месте, а не раскиданы все файлы по компьютеру, создадим специальную папку для будущих скриптов и для удобства разместим ее прямо в папке с Квиком.
Как и где создаем каталоги и файлы
Открываем папку программы QUIK и прямо в ней создаем свою новую папку. Назвать ее можно как угодно, но желательно название задавать латинскими буквами, например «LuaScripts». В этой папке и будут храниться все созданные нами скрипты для КВИК на языке QLUA.
Заходим в нашу созданную папку «LuaScripts» и в этой папке создаем простой текстовый документ. ПКМ — правой кнопкой мыши в свободном пространстве и выбираем пункт «Текстовый документ».
Затем переименовываем этот файл и пишем любое название латинскими буквами, например пусть будет «Script_N1», а также меняем расширение на нужное нам .lua, в итоге у нас получается файл «Script_N1.lua». Но хочу предупредить, что чаще всего расширения не видно у файлов, поэтому если Вы все сделаете как написал выше, то виндоус по умолчанию все равно добавит расширение .txt, поэтому можно открыть либо в проводнике, либо в «тотал командоре» либо включить отображение расширений файлов в свойствах папки, либо создать файл прямо в программе NotePad++.
Если хотим создать через НотПад. То вверху в меню данной программы нажимаем вкладку «Синтаксисы», выбираем пункт «L» и в открывшейся области выбираем «Lua».
Далее в меню NotePad нажимаем кнопку «Файл» — «Сохранить как».
В открывшемся новом окне находите папку с Квиком и открываете созданную папку «Lua scripts». Внизу в этом же окне задаете имя файла «Script_N1» и еще чуть ниже выбираете тип файла LUA. Затем нажимаете «Сохранить».
Все, файл нашего будущего скрипта создали, осталось дело за малым, написать в него код на языке LUA! Как мы уже знаем, что есть инструкция в КВИКе о том, как создается скрипт, называется этот файл с инструкцией QLUA.chm, располагается в папке с Квиком.
Напишем простейший код для примера
function main() message("Запущен мой скрипт"); end
И сохраним сделанные нами изменения в файл путем нажатия на кнопку в меню
Переходим к запуску скрипта «Script_N1.lua»
Хоть и очень просто, но все же уже первый скрипт написан! Давайте запустим его в QUIK.
Для этого Открываем терминал КВИК, в меню выбираем пункт «Сервисы» — «LUA скрипты…».
В появившемся окне «Доступные скрипты» справа нажимаем на кнопку «Добавить». Находим свой скрипт «Script_N1.lua» в папке «Lua scripts» и жмем «Открыть».
У нас открывается наш скрипт. Теперь, чтобы его запустить, выделяем строку с нашим скриптом «Script_N1.lua» и справа в окне нажимаем кнопку «Запустить».
После этого у нас появляется окно сообщений в КВИК вот такое!
В окне какие-то каракули 🙂 Но давайте это устраним. В NotePad в редакторе скрипта в меню находим раздел «Кодировки» и далее выбираем «Преобразовать в ANSI».
Еще раз сохраняем наш скрипт. Возвращаемся в КВИК и в окне «Доступные скрипты» жмем кнопку «Запустить».
Теперь выходит окно с понятным сообщением!
Для того, чтобы постоянно в создаваемых в NotePad файлах не проводить преобразование в ANSI, можно сразу один раз в настройках указать кодировку нового документа.
Для этого в меню «Опции» — «Настройки». В появившемся окне выбираем из списка «Новый документ» и справа настраиваем следующее: «Кодировка — ANSI», «Формат Конца Строк — Windows (CR LF).
На этом пока завершим наши действия на сегодня, не все сразу, но многое мы уже познали, много интересного еще нас ждет впереди!
Если робот остался в длинной позиции, указываем L_Pos = true, а S_Pos = false и наоборот, если в короткой позиции, то указываем S_Pos = true, L_Pos = false. Если без позиции, указываем false, false. Эти действия удобно делать, просто комментируя не нужные строки кода.
И так, наш робот автоматически отслеживает заданные параметры. При выполнении условия на вход в позицию, робот отправляет транзакцию на сервер брокера. Далее он ожидает ответа, что транзакция принята брокером, если транзакция принята брокером, то далее, робот ожидает ответа от биржи, что заявка выставлена в торговую систему. После получения ответа от биржи, что заявка выставлена, робот записывает текущую позицию в соответствующую переменную и далее начинает отслеживать, выход из текущей позиции и возможность входа в противоположную позицию. Наш робот не отслеживает, исполнена заявка или нет, в этом нет необходимости, поскольку используются рыночные приказы, если биржа ответила, что заявка принята, это значит, она уже исполнена. В случае, если на каком-либо этапе выставления заявки что-то пойдет не так, например, транзакция не принята брокером или заявка не выставлена в торговую систему биржи, то робот сообщит нам об этом, выведя на экран текстовое сообщение, также наш робот может отправить на email сообщения об ошибке.
Давайте поясню понятие Транзакция. Транзакция — это процесс отправки заявки на биржу. В момент транзакции отслеживается корректность параметров заявки, и проверяются доступные лимиты по объемам заявки. При отправке транзакции могут возникать два вида ошибок на двух разных этапах. Первый этап, на котором могут возникать ошибки, это в момент вызова функции sendTransaction – эта функция отправляет транзакцию на сервер брокера. На этом этапе, ошибки отслеживаются терминалом QUIK, и все они связаны с корректностью составленной таблицы с параметрами заявки. Какие это могут быть ошибки, например, не указали, объем заявки или не указан торговый счет, т.е. это ошибки в коде скрипта. Второй этап, на котором могут возникнуть ошибки, из-за которых заявка не будет выставлена на бирже, это этап проверки параметров заявки в торговой системе. Этот этап наступает после того как терминал QUIK принял Вашу транзакцию и отправил ее дальше. Тут могут возникнуть ошибки следующего характера. Например, превышен допустимый объем заявки или указана цена, которая выше или ниже максимально возможной цены или заявка выставляется в момент отсутствия торгов.
Ошибки первого этапа возникают только во время первичных, тестовых торгов роботом. После того как скрипт отлажен, ошибок этого типа не бывает. Ошибки второго этапа могут появляться в независимости от кода скрипта, но опять же при хорошем коде, в котором исключены моменты, при которых ошибка теоретически возможна, появление ошибки второго этапа сведена к минимуму. На самом деле остается одна единственная ситуация, при которой появление ошибки второго этапа возможна – это обрыв связи с сервером в момент, когда транзакция принята терминалом QUIK, но не дошла до сервера брокера. К счастью, это исключительно редкая ситуация, я бы сказал больше — теоретическая. По транзакциям пока все, пойдем дальше.
Наш робот действует не молча, он постоянно записывает свои действия и параметры в указанные файлы. На каждой свече робот записывает текущие параметры — Дата, Время, Цена закрытия, Значение скользящей средней, Ускорение, Текущая позиция лонг – шорт. Эти данные помогают отследить возможные ошибки в направлении позиции или восстановить работу скрипта после, например, случайного закрытия терминала QUIK.
Помимо текущих параметров, записываются и результаты транзакций. Всегда есть возможность посмотреть, когда робот совершал сделки и прочитать сообщение об ошибках, если таковые будут.
Хорошо, что нам уже известно про алгоритм укорение скользящей средней? Мы подробно разобрали этот алгоритм, кода тестировали его на исторических данных. Скрипт торгового робота и скрипт тестирования очень похожи. Оба этих скрипта получают данные, тестовый скрипт считывает данные из файлов, торговый скрипт считывает данные с графиков QUIK. Далее оба скрипта выполняют одинаковые действия, рассчитывают параметры индикаторов и отслеживают условия для входа в позицию или выхода из нее. Различия, в действиях начинаются после того, как выполняются условия входа или выхода. Тестовый скрипт просто записывает данные, а торговый скрипт отправляет транзакцию на сервер QUIK. По сути, это единственное их различие. Один совершает реальные сделки, другой просто записывает данные.
Это были озвучены сходства и различия в логике работы обоих скриптов. Различия в коде скриптов более существенны, поскольку появляется необходимость обработки транзакций. Плюс в торговом скрипте должны отсутствовать логические ошибки, из-за которых скрипт может прекратить свою работу. Надежность работы торгового скрипта ставится на первое место.
Давайте перейдем к коду и рассмотрим каждую его строку. Я очень надеюсь, что Вы уже ознакомились со всеми разделами текущего Курса, в противном случае Вам будет сложнее понять, о чем идет речь.
Цитата |
---|
ЛуаСкрипт написал: Возникают проблемы с производительностью, стабильностью работы роботов и самого QUIK |
Это зависит от квалификации программиста, а не от наличия/отсутствия примеров.
Lua придумали не мы и существует он очень давно. Что мешает посмотреть алгоритмы на не связанных с QUIK ресурсах, посвященных Lua?
И не надо говорить про «специфику», вся специфика относящаяся непосредственно к QUIK уже миллион раз обсуждалась еще со времен QPILE и с тех пор мало что изменилось.
И даже более того, 99% вопросов по «специфике», вообще никак не относятся к программированию на Lua, а относятся к функционалу самого терминала QUIK.
А функционал самого терминала QUIK должен быть Вам хорошо известен до того как Вы возьметесь программировать.
Цитата |
---|
ЛуаСкрипт написал: Проблема — нет эталонного торгового робота от разработчиков |
Да нет, и не будет. Все наши функции необходимые для реализации такого робота описаны в документации QLUA.chm.
Все Lua функции можно найти в документации на Lua и сторонних ресурсах которые ему посвящены.
Если Вам не понятно, как отправить транзакцию или получить нужные данные, готовы подсказать.
Цитата |
---|
ЛуаСкрипт написал: 2. проблема — нет типового способа получения данных их QUIK |
Что значит «типового»? Вот мы считаем что все имеющиеся способы (DDE, ODBC, QLUA) являются типовыми.
Цитата |
---|
ЛуаСкрипт написал: и передачу заявок обратно |
тот же комментарий, мы считаем имеющиеся способы «типовыми».
Цитата |
---|
ЛуаСкрипт написал: как передавать данные из QUIK в EXCEL |
Что тут писать если есть DDE?
А в Excel есть VBA.
А дальше куда угодно.
Цитата |
---|
ЛуаСкрипт написал: принимающий кода на VBA для MS Excell |
такой пример уже есть, см примеры для Trans2quik
Цитата |
---|
ЛуаСкрипт написал: также самый простой контроль выполнения заявок |
что такое «контроль выполнения заявок»? Если интересует как получить данные то уже было отвечено выше. Если интересует как считать состояние портфеля, то формулы можно посмотреть в документации на терминал.
Цитата |
---|
ЛуаСкрипт написал: запись логов. |
запись в файл, это штатный функционал Lua, посмотрите его документацию, функция io.open
Цитата |
---|
ЛуаСкрипт написал: 3. Если вы сделаете штатный способ прикрутить Python 3 к QUIK — вообще будет супер!! |
а почему Python? Вот лично Вам он нравится и удобен, а вот лично мне нет, теперь все языки поддерживать? Простите но нет.
И наша позиция относительно универсального API однозначна, для таких целей существует FIX адаптер. Да он платный, бесплатного аналога нет и не будет.
С помощью языка программирования Lua можно создавать различные игры, утилиты, торговые роботы и другие разработки. Язык Луа несложный для восприятия, имеет популяризированный интерпретатор. Предлагается ознакомиться с Луа поближе, а также узнать, как написать торговый робот или скрипт на этом языке.
Содержание
- Что из себя представляет язык Lua и чем он полезен?
- Короткие исторические данные
- Особенности языка программирования Луа
- Преимущества и недостатки
- Сравнение с ДжаваСкрипт
- Особенности программирования роботов для трейдинга на языке Луа
- Обзор лучших торговых роботов на Lua – готовые решения для начинающих
- Робот-терминал «Delta Pro»
- «RQ: One Percent»
- «RQ: Martin»
- Виды скриптов на Lua для терминала QUIK
- Как написать робота на языке Lua
- Как программировать на LUA в терминале QUIK
- Как установить LUA-скрипт в торговый терминал
Что из себя представляет язык Lua и чем он полезен?
Lua – это легкий в применении встраиваемый язык. Новички признаются, что с его помощью, можно в короткий срок научиться азам программирования.
Луа удачно удается совмещать с разработками, которые были составлены на другом языке. Его часто рекомендуют студентам, которые только начинают осваивать науку об электронных разработках.
Язык Lua часто используется в разных сферах. Он может пригодиться:
- Пользователю, который играет в компьютерные игры (писать плагины).
- Специалисту по созданию игр (разрабатывать движок).
- Программисту по разработке приложений (писать плагины для разных утилит).
- Разработчику в направлении embedded (язык не тормозит процесс и позволяет работать качественно)
- Трейдерам для написания скриптов и торговых ботов.
Торговый робот для QUIK на Lua по уровням докупки
Благодаря Луа был создан не один торговый робот. Достоинство состоит в том, что каждый пользователь может быстро разобраться в нюансах языка и самостоятельно создать подобную программу. Через нее можно будет посылать команды в терминал Quik и осуществлять технический анализ.
Для чего нужен язык Lua, обзор языка программирования LUA:
Короткие исторические данные
Луа был придуман в 1993 году бразильскими программистами из отделения Tecgraf. Разработчики позаботились о том, чтобы каждый пользователь смог внести определенные поправки в развитие языка.
Это можно сделать благодаря открытому доступу к коду. Для Бразилии появление собственного языка программирования стало настоящим открытием. Ведь до этого, данная страна не добивалась подобных успехов в сфере компьютерных разработок.
Язык был создан на базе SOL и DEL. Эти разработки увидели мир годом ранее, чем Lua. Автором выступила та же бразильская организация. Эти языки программирования были сделаны на заказ Petrobras – компанией того же государства, занимающейся добыванием и обработкой нефти.
Последняя версия Луа 5.4.0 вышла сравнительно недавно – в 2020 году. Разработчики стараются как можно чаще внедрять в проект интересные и полезные функции. Поэтому программа постоянно обновляется и пользуется спросом у разработчиков.
Особенности языка программирования Луа
Столкнувшись с Lua, разработчику предоставляется возможность применения этого языка, как встроенного (благодаря тому, что он скриптовый), так и автономного (в определенных случаях, его удастся использовать без дополнений). Когда авторы работали над созданием Луа, они намеренно шли к тому, чтобы изготовить оперативный инструмент, который не займет много места и будет легко функционировать на любом устройстве.
Разработчики старались максимально упростить этот язык, дабы его быстро могли освоить даже начинающие программисты. В этом заключается повышенный спрос на проект.
Специалисты имеют возможность писать код и создавать масштабные разработки, не обращаясь к библиотекам на официальном сайте. Авторы позаботились о наличии необходимых параметров в самой программе.
Начинающие пользователи стремятся узнать, в каких сферах используется язык Lua. Он конструировался для изготовления программ в промышленной отрасли. Но сегодня с помощью данного языка создаются разные торговые роботы, скрипты, компьютерные игры, приложения, боты для Телеграм и прочее.
Кроме того, Lua задействован в инновационной технике, которая помогает изучать космос. Также его используют при обучении студентов в университетах.
Наиболее популярным языком программирования Луа считается на родине. Именно в Бразилии, его применяют практически повсюду (где это возможно).
Преимущества и недостатки
Как любая программа, механизм и язык программирования Lua имеет ряд своих плюсов и минусов. Стоит начать с положительных сторон разработки:
- Качественная транспортировка. В отличие от многих программ, Луа получается просто переносить из одной операционной системы в другую. При этом, не возникает серьезных изменений. В любом случае, ошибок в работе кода не будет.
- Много библиотек. Если сравнивать с ДжаваСкрипт, то в Луа параметры библиотек гораздо меньше. Однако, на официальном ресурсе найдется все необходимое для полноценной работы с языком.
- Оперативность. Система позволяет за короткое время добавить те библиотеки, которые важны для конкретного процесса написания кода.
- Легкость в использовании. Для гуру программирования понадобится изучить только некоторые детали языка, и уже тогда они смогут смело использовать его в своих разработках. Для тех, кто только начинает разбираться в программировании, также не понадобится много времени, чтобы понять Lua.
- Существенная экономия памяти. Создавая программы на этом языке, специалист гарантированно заметит разницу с другими аналогами. Ведь разработки Луа нуждаются в меньшем количестве памяти на устройстве.
Единственный значительный минус языка – он скриптовый. А это значит, что зачастую его можно использовать только в комбинации с другими языками для разработок. Наиболее популярным из таковых считается С. То есть, придется осваивать дополнительный язык программирования.
Сравнение с ДжаваСкрипт
Многие пользователи сравнивают Луа с JavaScript, утверждая, что их коды практически одинаковы. Между языками действительно больше похожего, чем отличительного.
Но, несмотря на очевидные сходства, есть и масса различий. К примеру, Луа имеет свою программную поддержку. Однако, недавно разработчики ДжаваСкрипт ввели обновление, согласно которому, пользователю достаточно написать слово «yield» между генераторами, после чего появится поддержка программы.
Оператор Lua для возведения в степень обозначает такой знак «^», а у JavaScript – это «**». У последнего есть функции увеличения и уменьшения. Зато Луа может совершать перегрузку операторов. ДжаваСкрипт вмещает в себе только переменные функции, тогда, как у Луа они определенные.
JavaScript может «похвалиться» поддержкой известного стандарта Юникод. Чтобы обозначить неравность в языке применяется комбинация «!==», а Lua, для этой же цели использует «~=». Остальные различия представлены в таблице.
Особенности программирования роботов для трейдинга на языке Луа
Создавать роботов на QLua совсем не сложно, справятся даже новички. Главное, в самом начале разобраться с базовой теорией. Для того, чтобы составить код, пригодится самый простой текстовый редактор.
Схема создания похожа на составление индикатора. Однако есть несущественная отличительная черта в самом коде. Еще одна неплохая «изюминка» – новоиспеченного робота удастся расположить где угодно на своем ПК.
Важно! В коде должна быть единственная функция – «main».
Как только код робота будет составлен и отредактирован, его рекомендуется сохранить. Не стоит забывать о расширении lua. Как уже было сказано, программу можно разместить в любом месте на компьютере. Чтобы проверить свой код, нужно запустить робота. Для этого необходимо перейти в раздел «Сервисы». Внизу будет строка «Lua скрипты», ее следует нажать.
Далее появится окно с загруженными скриптами. Там следует выбрать требуемый файл и запустить его с помощью соответствующей кнопки.
В конце рекомендуется осуществить проверку кода бота на ошибки. Если все хорошо, то робот запустится. В случае возникновения заминок, стоит снова вернуться к коду и проверить его правильность.
Обзор лучших торговых роботов на Lua – готовые решения для начинающих
С помощью языка программирования Луа можно создать различные виды роботов любой сложности. Однако, можно приобрести уже готовую программу. Предлагается ознакомиться с известными алгоритмами, которые уже готовы к работе. Их можно купить или опробовать демонстрационную версию.
Полностью готовый торговый робот для терминала QUIK на языке Lua:
Робот-терминал «Delta Pro»
Позволяет привести в действие около 120 любых опционов на одной платформе. При этом можно использовать разные типы стратегий и инструментов.
«RQ: One Percent»
Робот предназначен для торговли в сфере трейдинга. Алгоритм позволяет увеличить доход от данной деятельности в несколько раз. Риски минимизированы, их можно с легкостью просчитать.
«RQ: Martin»
Система позволяет произвести расчет лота перед совершением сделки. Предусмотрена торговля в режиме «полуавтомат». Уровни удается успешно отслеживать и задавать вручную.
Виды скриптов на Lua для терминала QUIK
При выполнении определенной задачи в терминале QUIK, используются такие скрипты:
- Lua-скрипты. Их можно хранить в сети, на локальном диске, или в другом месте, где до них будет открыт доступ терминалу. Они достаточно функциональны, чтобы с их помощью создать торгового робота. Можно будет создавать таблицы в QUIK, пользоваться параметрами инструментов, давать команды на выполнение различных заданий и т.д.
- Пользовательские индикаторы. Здесь, сравнительно с предыдущим видом, гораздо меньший функционал. Программа предназначена для того, чтобы пользователь мог вывести алгоритм действий на графиках терминала.
Программирование на языке Lua для желающих освоить язык досконально – полное руководство скачать:
Программирование на языке Lua
Роботы на Lua для QUIK,- робот Айсберг:
Как написать робота на языке Lua
Решившись создать собственного робота, пользователь должен следовать заранее составленному алгоритму. Когда он наберется опыта в программировании, то сможет с легкостью писать свои коды и экспериментировать. Выбрав для изучения этой сферы именно Lua, новичок не ошибется. Ведь в начале, главное, остановиться на простом и максимально понятном языке программирования.
Чтобы начать, следует открыть программу терминал для трейдинг QUIK. В ее окне необходимо создать папку. Это то место, где будут сохраняться все написанные скрипты. Пользователь может дать папке совершенно любое наименование, но оно должно состоять только из латинских символов. Допустим, ее название такое – «LuaScripts».
Далее нужно активировать папку и создать там текстовый редактор, например, Блокнот. На свободном месте (в пределах окна программы) нужно кликнуть правой кнопкой мыши. Появится диалоговое окно, в списке которого нужно выбрать вкладку «Создать», а затем, ряд «Текстовый документ».
Ему тоже стоит дать название, чтобы потом не путаться. К примеру, можно написать «Script_N1». Не стоит забывать о разрешении используемого языка – .lua. То есть, у пользователя должна получиться такая надпись на документе «Script_N1.lua». Однако, ОС Windows часто меняет расширение автоматически, поставив в файле .txt. В этом случае, рекомендуется создать документ в NotePad++, поставив нужное разрешение.
В этой программе понадобится выбрать раздел «Синтаксисы». Здесь появится диалоговое окно с несколькими пунктами. Нужно будет выбрать «L». Оттуда появится еще одно окно, где необходимо нажать на «Lua».
После этого, в том же меню, на ряду с разделом «Синтаксисы», следует нажать на раздел «Файл». В последующем окне возникнет надпись – «Сохранить как». Пользователю нужно нажать на нее и подождать пока откроется новое окно.
Там, вверху, будет видна строка с наименованием созданной ранее папки «Lua scripts». В нижней части окна отображены 2 другие документа, которые создал пользователь. Если все совпадает, необходимо подтвердить действие и сохранить текущее состояние кода.
Следующий шаг – написание кода на выбранном языке программирования Луа. Начинающие могут воспользоваться инструкцией, она поможет создать простой код, для того, чтобы специалист опробовал свои силы. Алгоритм действий находится в файле программы с названием QLUA.chm.
Предлагается, для примера, написать такой легкий код:
function main()
message(«Произведен пуск моего первого скрипта»);
end
Далее, нужно кликнуть на кнопку сохранения в меню.
Код должен сохраниться в файле «Script_N1.lua». Запускаем его и смотрим, как отображается дебютный скрипт.
Чтобы открыть его в КВИК, необходимо открыть данную программу и выбрать в разделе опций вкладку «Сервисы». Далее появится диалоговое окно, там стоит нажать на «LUA скрипты…».
Потом пользователь увидит папку «Доступные скрипты». Вверху с правой стороны находится кнопка «Добавить». Нажимаем ее и отыскиваем файл с кодом. Он находится здесь «Script_N1.lua».
При открытии документа, важно выбрать строку «Script_N1.lua» (она должна сохраниться на диске C), затем, внизу кликаем по кнопке «Запустить».
Тут же возникнет новое окно.
Чтобы не было этих непонятных символов, нужно зайти в программу NotePad. В настройках есть раздел «Кодировки», нажимаем на него. Тогда появится перечень вкладок, среди которых следует нажать на «Преобразовать в ANSI».
Дальше стоит нажать на кнопку сохранения и вернуться на окно сообщений. Там будет уже другая надпись, а не ряд с каракулями.
Как программировать на LUA в терминале QUIK
Существует 3 популярных способа:
- Создается любой текстовый файл, где следует поставить расширение .lua. Далее нужно открыть редактор и написать код. После запуска подобный алгоритм выполнится только единожды. Запускать вручную можно бесконечно. Можно воспользоваться для разового подсчета определенных сведений.
- В самом Lua-скрипте необходимо составить функцию с именем main(). Далее, в эту же функцию, требуется вставить написанный код. А функция sleep() пригодится, чтобы временно приостанавливать скрипт или, наоборот, возобновлять. То есть, если активировать функцию main(), а затем вставить функцию sleep(), то удастся добиться расчета с периодичностью в конкретный интервал времени.
- В программе QLUA можно воспользоваться событийной моделью разработки. Таким образом, теперь необязательно в одной функции «обнаруживать» изменения и, за счет этого, выполнять следующие команды.
Предлагается подробнее разобрать последний способ. Чтобы произвести обработку конкретного события, следует написать функцию в скрипте в Квик. Можно воспользоваться такой схемой:
Скрипт LUA может состоять из несколько функций со специальными наименованиями: сделка, котировки и прочее. Необходимо найти в программе раздел «Таблицы», перейти на «Lua». Там выпадет диалоговое окно и будет видна строчка «Доступные скрипты», кликаем по ней.
Далее следует нажать вкладку «Запустить». Потом идет обработка и выполнение обязательной функции main().
Затем, нужно объявить is_run, функция будет вмещать в себе значение true, пока пользователь не активирует кнопку «Остановить скрипт». Тогда переменная функция переходит в режим false внутри OnStop().
После этого функция main() заканчивается, а сам скрипт останавливается. Написанный скрипт нужно сохранить и запустить. Совершая сделки, пользователь увидит данные по каждому лоту и конечную сумму сделок.
Для запуска QLua в Квик, необходимо перенести его в новую папку на используемом ПК. Ее можно назвать как угодно, например, «MyLua». Там будут храниться все Lua-скрипты. Зайдя в QUIK, нужно открыть раздел «Сервисы», потом нажать на вкладку «Lua-скрипты».
В открывшемся окне необходимо активировать кнопку «Добавить». Затем нужно выбрать скрипт и открыть его. Он окажется в разделе «Загруженные скрипты». Потом следует выделить строку скрипта и нажать «Запустить». Для остановки работы скрипта, достаточно нажать «Остановить».
Как установить LUA-скрипт в торговый терминал
Учебный и стандартный терминал требует одинакового алгоритма установки торгового робота:
- Необходимо в верхнем меню терминала нажать на раздел «Сервисы».
- Далее найти кнопку «LUA-скрипты» в выпадающем диалоговом окне и кликнуть:
- В то время, должно появиться окно «Доступные скрипты». Затем, стоит активировать кнопку «Добавить» и выбрать файл необходимого торгового робота.
Снятие данных с графика Lua скриптом в терминале Quik:
Lua – это прекрасный вариант для изучения программирования и для успешной работы в дальнейшем. Главное, не останавливаться лишь на прочтении теории. Лучше изучать материал, постоянно практикуясь. Спустя определенное время разработчик начнет делать успехи и сможет создать свой стоящий продукт.
Как написать торгового робота: инструменты для начинающих
Время на прочтение
4 мин
Количество просмотров 28K
Тема автоматизированных систем для торговли на бирже довольно популярна в рунете в последние несколько лет. Однако начинающим инвесторам создать своего торгового робота может быть нелегко. Сегодня мы расскажем о том, как это можно сделать без лишних затрат.
Примечание: любая инвестиционная деятельность на бирже связана с определенным риском, это нужно учитывать. Кроме того, для запуска своего торгового робота вам понадобится брокерский счет, открыть его можно онлайн. Вы можете отладить свою стратегию с помощью тестового доступа с виртуальными деньгами.
Варианты создания роботов
Существует несколько вариантов создания роботизированного софта для торговли на бирже:
- Создание роботов для работы на прямом подключении – такие системы работают «в обход» торговой системы брокера, отправляя заявки напрямую в «движок» торговой системы биржи. Этот вариант используют уже опытные трейдеры, которые готовы платить в том числе и за такой способ подключения.
- Подключение к брокерской торговой системе по API. Некоторые брокеры позволяют подключать внешний торговый софт к своим торговым системам по специальным интерфейсам. Клиенты ITI Capital могут делать это с помощью API SMARTcom. В этом случае роботы могут быть достаточно сложными.
- Автоматизация операций напрямую в торговом терминале. Наиболее простой, подходящий для новичков способ, заключается в том, чтобы автоматизировать торговлю напрямую в базовой программе любого трейдера – терминале.
Сегодня мы будем рассматривать третий вариант, поскольку он наиболее прост.
Как это работало раньше
Торговые терминалы предыдущих поколений можно было интегрировать с различными инструментами автоматизации. Одним из наиболее популярных, как ни странно, в свое время был Excel. С его помощью трейдеры могли настроить экспорт данных из торгового терминала, а также получать торговые приказы.
Меню для подключения Excel в одном из торговых терминалов прошлого поколения
Также распространенной практикой среди трейдеров было подключение к своим терминалам мощных систем технического анализа и разработки роботов вроде WealthLab и MetaStock. В таких случаях интеграция обычно осуществляется с помощью дополнительных библиотек.
В перечисленных случаях трейдер получал возможность автоматизации, и, в случае MetaStock и WealthLab, создания довольно сложных торговых систем, но связки с внешними программами часто оказывались ненадежными. С течением времени эта проблема была решена – в некоторых торговых терминалах появились встроенные языки программирования.
Как это работает теперь: изучаем язык TradeScript
В наши дни на российском рынке самый простой способ создать несложного торгового робота, работающего с системой брокера, это использование терминала SMARTx.
В нем есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы различного уровня сложности. Язык был изначально создан для разработки торговых роботов, он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.
Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SMARTx, что позволяет добиваться значительно более высокой надежности и быстродействия.
Вот пример торговой стратегии, записанной на 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
В пакете с TradeScript поставляет и модуль бэктестинга, который позволяет оценить продуктивность работы описанной стратегии на исторических данных. Помимо прочего, в системе реализована функция тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу — время виртуальной сделки, цена и получившаяся «доходность» будут показываться в отдельном окне.
Кроме того пользователь может запускать столько одновременно работающих алгоритмов, сколько позволит тактовая частота процессора и память компьютера. Учитывая большое число слов и операндов скриптового языка, это означает возможность создания сколько угодно сложных торговых стратегий.
Что еще: отладка на тестовом доступе
Использование встроенной в торговый терминал функциональности по разработке торговых роботов – удобный и надежный способ автоматизации торговли. Однако несмотря на существующие функции для тестирования стратегий, не стоит пренебрегать и дополнительными возможностями отладки.
Поэтому мы рекомендуем перед запуском стратегии для торговли реальными деньгами «прогнать» ее на тестовом доступе. Этот шаг позволит отладить все моменты, включая реакцию программы на осуществленные сделки, без риска реальных финансовых потерь. Применение анализа с помощью исторических данных, проверки «на лету» и использование тестового доступа позволит максимально полно отладить вашу стратегию.
Полезные ссылки по теме инвестиций и биржевой торговли:
- Открыть брокерский счет онлайн
- Тестовый счет с виртуальными деньгами
- Софт для торговли на бирже: торговый терминал, мобильные приложения
- Структурные продукты
- Модельные портфели