- Торговый робот для QUIK. На каком языке программирования его написать, как протестировать и как установить в торговый терминал
- Как написать программу
- Программирование на LUA
- Где писать программу. Какой редактор использовать?
- Как протестировать торгового робота
- Как установить LUA-скрипт в торговый терминал
- Как создать торгового робота своими руками? Robot-Scalper
Торговый робот для QUIK. На каком языке программирования его написать, как протестировать и как установить в торговый терминал
Как и многие другие, я начинал свою работу в качестве трейдера с торгового терминала 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-скрипты”:
- После нажатия на неё, перед вами появится уже знакомое вам окно “Доступные скрипты”. Жмём кнопку “Добавить” и в выпавшем окне выбираем созданный вами файл торгового робота или скрипта.
Вот и всё, на этом процесс установки торгового робота закончен. Для того, чтобы он начал работать достаточно выбрать его кликом мышки и нажать кнопку “Запустить”. Если в программе не будет обнаружено ошибок, то она начнёт работать, а иначе выдаст вам соответствующее сообщение (см. выше).
Источник
Как создать торгового робота своими руками? Robot-Scalper
Нас часто спрашивают, как самостоятельно создать робота? И сложно ли это?
– Нет, не сложно, если у вас есть опыт и наработки. Но если вы начинающий алготрейдер, то перед вами встанет сразу несколько непростых задач.
Для начала вы должны определиться какую именно торговую стратегию будете автоматизировать.
Затем нужно четко формализовать эту стратегию: описать строгими условиями все входы и выходы из позиции.
Теперь нужно определиться под какой торговый терминал будем разрабатывать робота.
Изучаем функции алготрейдинга (выставление и снятие заявок, получение текущих данных из терминала, механизм взаимодействия скрипта и терминала).
Изучаем как устроена структура данных (таблиц) на сервере Мосбиржи, чтобы знать откуда что брать.
Важно иметь хотя бы базовое понимание о программировании: что такое переменные, условия, операции сравнения, циклы, функции, события, работа с файлами и т.п.
После этого можно смело браться за создание своего робота. Описываем логику на языке программирования и запускаем робота на демо-счете, для отладки. Исправляем баги или ошибки в логике алгоритма, если такие обнаружатся.
Для удобства все настройки выносим в отдельный файл, чтобы не приходилось каждый раз изменять исходный код робота при подстройке стратегии.
Не забываем сделать удобный интерфейс, чтобы сразу видеть текущее состояние системы (заявки, позиция, стоп, тейк и т.п.).
Пример можно увидеть здесь:
Тестируем. Анализируем сделки. Проверяем насколько корректно отрабатывает робот.
Логирование событий позволяет отследить в прошедшем времени все намерения робота и все свершившиеся события: выставление и снятие заявок, полное или частичное исполнение заявок, изменение текущей позиции и т.п.
Если торговый терминал позволяет, то можно провести бэк-тестирование (тестирование на исторических данных). Либо даже форвардное тестирование. Об этом подробно написано здесь https://smart-lab.ru/blog/503560.php
А также можно выполнить оптимизацию значений параметров стратегии.
Здесь важно искать не просто конкретные значения, при которых система покажет максимальную прибыль и минимальный убыток (в следующем месяце это может не повториться), а нужно найти диапазон значений, в которых стратегия показывает прибыль. Желательно брать значения из середины диапазона. Мы не можем наверняка знать насколько хорошо они подойдут в следующем торговом периоде. Но мы ожидаем, что доходность будет положительна.
Какие гарантии того что робот будет стабильно зарабатывать деньги?
– Никаких! Когда разрабатываешь робота, то не знаешь заранее будет ли данная стратегия прибыльная или нет. Только время покажет. Это как в любом другом бизнесе. Например, вы купили помидоры и стали их продавать. Какие гарантии? – Никаких! Если вы плохой бизнесмен, то ничего не продадите и помидоры просто протухнут. А если хороший бизнесмен, то будете в прибыли.
Так же и в трейдинге. Нельзя ставить сильно высокую цену на продажу, так как никто у вас не купит. И нельзя ставить сильно низкую цену на покупку, так как никто по такой цене вам не продаст.
Слишком близкие цены покупки и продажи тоже не будут вам выгодны, так как комиссия будет съедать большую часть прибыли. Во всём нужна золотая середина! Это понимание приходит с опытом.
По поводу прибыльных стратегий. Как сразу найти прибыльную? – Никак. Нужно запрограммировать и протестировать десятки стратегий. Нужно анализировать сделки. Потом придет понимание того что работает на рынке, а что нет. Непроизвольно вы начнете делить стратегии на группы с общими признаками. После этого любую новую стратегию, еще до тестов, вы сразу будете относить к той или иной группе. И будете понимать примерные возможности по риску и доходности.
Это то, что касается разработки торговых стратегий и роботов.
Еще люди спрашивают, сложно ли развивать ваш проект «Робот Скальпер» и осуществлять техподдержку?
— Да. Сложно. Приходится отвечать более чем на 100 вопросов каждый день. Вопросы абсолютно разные. Не только по роботам. Это и базовые: как начать торговать, как открыть счет, сколько денег нужно и т.п., и нестандартные: вопросы по тарифам брокеров, по функционалу терминала QUIK, по данным от Мосбиржи и т.п.
Так как торговый робот для пользователя является конечным или финальным продуктом и если происходит сбой у брокера или в терминале QUIK или на бирже, то с точки зрения пользователя проблема всегда заключается в роботе! Это ведь он теперь работает не так как надо! И никого не волнует висит ли сервер брокера или поставляет ли Мосбиржа кривые котировки (нулевые цены и нулевую тек.позицию, при том что актив есть на балансе), отрубился ли интернет, заглючил или перезагрузился компьютер. Эти и другие проблемы приходится нам решать. Чтобы оказывать качественный сервис нужно знать гораздо больше, чем только алгоритм торговой стратегии.
Иногда думаешь, что всё, база знаний полная. В ней есть все вопросы и ответы. И за последние 3 месяца не было ни одного нового вопроса. И тут раз, появляется совершенно странный вопрос, который ставит тебя в тупик. Приходится подключаться дистанционно к пользователю, анализировать проблему, находить решение и добавлять его в базу знаний. И, если необходимо, то добавляется проверка в самого робота. Чтобы робот либо сам устранял ошибку, либо выдал сообщение пользователю о том что нужно сделать для продолжения торговли.
Так, постепенно, решая одну задачу за другой и набирается опыт, который позволяет чувствовать себя уверенно в алготрейдинге.
Спасибо всем, кто дочитал до конца!
Если вам интересны статьи о том как разрабатываются роботы, поддержите нас лайком. Мы будем знать нужно ли тратить время на подобные затеи или нет )) Может быть вам интереснее прочитать о более практических вещах? О конкретных стратегиях, их характеристиках в цифрах, рисках, доходностях? Напишите в комментариях. Мы обязательно вам ответим.
Желаем добра и успехов в трейдинге!
Остались вопросы по роботам?
Обращайтесь в личку или на почту mail@robot-scalper.ru
Откроем Вам бесплатно брокерские счета: демо и боевой! С версией терминала QUIK 7.27!
С уважением,
команда проекта «Робот Скальпер»
Источник