Блог им. robot-scalper

Как создать торгового робота своими руками? Robot-Scalper

Торговый робот своими руками под QUIK

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

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

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

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

Изучаем функции алготрейдинга (выставление и снятие заявок, получение текущих данных из терминала, механизм взаимодействия скрипта и терминала).

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

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

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

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

Не забываем сделать удобный интерфейс, чтобы сразу видеть текущее состояние системы (заявки, позиция, стоп, тейк и т.п.).
Пример можно увидеть здесь:
Робот Sigma

Тестируем. Анализируем сделки. Проверяем насколько корректно отрабатывает робот.

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

Если торговый терминал позволяет, то можно провести бэк-тестирование (тестирование на исторических данных). Либо даже форвардное тестирование. Об этом подробно написано здесь https://smart-lab.ru/blog/503560.php

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

Какие гарантии того что робот будет стабильно зарабатывать деньги?
– Никаких! Когда разрабатываешь робота, то не знаешь заранее будет ли данная стратегия прибыльная или нет. Только время покажет. Это как в любом другом бизнесе. Например, вы купили помидоры и стали их продавать. Какие гарантии? – Никаких! Если вы плохой бизнесмен, то ничего не продадите и помидоры просто протухнут. А если хороший бизнесмен, то будете в прибыли.
Так же и в трейдинге. Нельзя ставить сильно высокую цену на продажу, так как никто у вас не купит. И нельзя ставить сильно низкую цену на покупку, так как никто по такой цене вам не продаст.
Слишком близкие цены покупки и продажи тоже не будут вам выгодны, так как комиссия будет съедать большую часть прибыли. Во всём нужна золотая середина! Это понимание приходит с опытом.

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


Часть 2

Еще люди спрашивают, сложно ли развивать ваш проект «Робот Скальпер» и осуществлять техподдержку?
— Да. Сложно. Приходится отвечать более чем на 100 вопросов каждый день. Вопросы абсолютно разные. Не только по роботам. Это и базовые: как начать торговать, как открыть счет, сколько денег нужно и т.п., и нестандартные: вопросы по тарифам брокеров, по функционалу терминала QUIK, по данным от Мосбиржи и т.п.
Так как торговый робот для пользователя является конечным или финальным продуктом и если происходит сбой у брокера или в терминале QUIK или на бирже, то с точки зрения пользователя проблема всегда заключается в роботе! Это ведь он теперь работает не так как надо! И никого не волнует висит ли сервер брокера или поставляет ли Мосбиржа кривые котировки (нулевые цены и нулевую тек.позицию, при том что актив есть на балансе), отрубился ли интернет, заглючил или перезагрузился компьютер. Эти и другие проблемы приходится нам решать. Чтобы оказывать качественный сервис нужно знать гораздо больше, чем только алгоритм торговой стратегии.

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

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

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

Желаем добра и успехов в трейдинге!

Остались вопросы по роботам? 
Обращайтесь в личку или на почту mail@robot-scalper.ru 

Откроем Вам бесплатно брокерские счета: демо и боевой! С версией терминала QUIK 7.27!

С уважением,
команда проекта «Робот Скальпер»

Наш сайт: Robot-Scalper.ru
Почта: mail@robot-scalper.ru 
Актуальная информация всегда есть в инстаграме: @robot_scalper
★31
9 комментариев
Также можете сохранить статью в закладках. Пригодится.
avatar
А ты не пробовал использовать какие-нибудь визуальные DLL для qlua?
Например QVClua.
avatar
Eldar Shaymardanov, 
лет 5 назад я интересовался данной темой. Изучал разные предложения на рынке. Пришел к следующим выводам:
1. QLUA позволяет выводить и раскрашивать информацию на экране. Даже мигание фона можно сделать и шрифт можно менять. А также можно использовать события мыши. Этого базового функционала вполне достаточно для текущих задач.
2. Сторонние компоненты всегда будут являться источником новых багов и проблем. Никто не знает насколько качественной и долгосрочной будет их поддержка.
Чем меньше элементов в системе, тем система надежнее и отказоустойчивее!
3. Не нужно следить за обновлениями сторонних компонентов и не нужно будет пользователям объяснять почему та или иная штука из нового интерфейса не работает или работает не так как хотелось бы.

Может быть кому-то и понравится использовать сторонние компоненты. Я не против этого. Но для себя я решил, что постараюсь обходиться стандартным функционалом. Так надежнее, для проекта. А это важнее всяких плюшек! ))

С уважением,
Денис
Алготрейдер.
avatar
И все? Так просто? сегодня же пишу робота )))
Владимир Литвинов, 
дорогу осилит идущий! ;)

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

У меня, кстати, есть базовые скрипты для LUA. С подробным описанием функций, для начинающих алготрейдеров.
Если нужны скрипты, обращайтесь на почту robot-scalper@mail.ru 
Подскажу, помогу.
avatar
Robot-Scalper.ru, Вот на слове скрипт, все познания в области программирования у меня заканчиваются ))) А нет, я еще в школе точку и черточку рисовал с помощью кода Как же тот язык назывался не помню. Эт когда на мониторах такой экранчик еще вешали )))) эх времена были
Владимир Литвинов, учиться никогда не поздно! ;)
avatar
Robot-Scalper.ru, тем более, что я еще молодой

теги блога Robot-Scalper.ru

....все тэги



UPDONW
Новый дизайн