Как я писал робота.
Ходу поделиться небольшими размышлениями по поводу роботописания. Сейчас данная тема очень хорошо развивается, появляется множество «псевдо Граалей».
Логика роботописания понятна: каждый хочет избавиться от сидения за мониторов целые дни на пролет и сберечь нервы (хорошо что у программы их нет, за то у нее есть баги ;-D ).
Итак, по своей профессии я программист поэтому с программированием проблем нет (причем я заметил — не важно на каком языке писать, важно сколько это займет времени, а всем известно что время — это деньги).
Начал я заниматься данными вопросами несколько лет назад.
Первое что мне пришло в голову было следующий вариант.
Вариант №1
Решил написать все в Quik на его встроенном скриптовом языке QPile.
Тут возникло столько вопросов… что у меня сразу опустились руки.
Язык крайне ограничен, очень не удобный, запутанный синтаксис. Диагноз: не для простых смертных.
Даже не совсем понимаю – вообще для чего он нужен то?
Ладно, этот вариант я отбросил после нескольких долгих попыток разобраться с QPile.
По мере знакомства с фондовым рынком я наткнулся на системы техничегоского анализа.
Вариант №2
Решил написать связку программы тех.анализа + Quik (без использования QPile).
На рынке есть хорошие программа тех.анализа – Amibroker, Wealth-lab, MetaStock, Omega.
У каждой программы есть свои минусы и свои плюсы.
Я лично остановился га AmiBroker. Понравился их скриптовый язык. Простота использования. Скорость программы. Видимо ее писали без использования мега каких то библиотек, т.к. дистрибутив намного меньше других программ.
После иследования программы и языка запрограммировать все что я хотел не получилось. Что же я хотел? Читайте дальше.
Вариант №3 – последний.
Между программой тех.анализа и Quik я написал систему учета позиций.
Система учета ЦБ и риск менеджмента – это программа, которая ведет учет ценных бумаг (в идеале суммойвой учет, но пойдет и простой количественный учет), контролирует риск и взаимодействует с Quik.
Преимущества:
- Учет множества ценных бумаг (если торговля происходит паралельно несколькими ценными бумагами)
- Решение проблемы учета позиций и риск менеджмента в программе тех.анализа. Легко ли вести учет в таких программах? Помоему, они для этого вообще не предназначены.
- Риск менеджмент. Что это означает? Допустим закрытие позиций при достижении определенного убытка и прекращение торговли. Причем цифра прибыли/убытка берется из Quik (общая сумма прибыли/убытка), а не рассчитывается – что бы избежать ошибок.
- Работа с Quik. Одно дело послать в Quik заявку на сделку, другое дело проконтролировать исполнение этой заявки. Еще сложнее – предпринять после этого очередную попытку.
Соответственно, если вы все таки используете свои алгоритмы для определения точек входа и точек выхода вам нет необходимости использовать программу тех.анализа. Но опять же, изобретать велосипед в виде различных индикаторов в своей программе не имеет смысла, если их можно сделать в системе тех.анализа за 5 минут.
Думаю что можно с любой программы тех.анализа выгрузить сигналы в файл.
На простом примере покажу как выгружать сигналы SAR в файл в AmiBroker
тут.
Вывод:
1. Используйте тройную связку. Переложите определение сигналов входа и выхода на программы технического анализа.
2. Написать промежуточное звено не сложно даже на С++, вам ведь надо будет только обработать файл сигналов от программы тех.анализа и переслать его Quik. Никаких графиков тут не нужно.
3. Прежде чем что либо делать – задайте вопрос: может быть велосипед уже изобретен?
4. Не забывайте про риск менеджмент, особвенно если торгуете на FORTS с плечами по самые яблоки ;-D
опубликовал у себя на сайте
Пока остановился на Transaq. там язык то же не сахар, но и не такой уродский как в квике. Есть еще разработки по транзак коннектор — это вообще то, что доктор прописал
Затем еще совсем непонятно что такое «Система учета позиций». Quik изначально был именно такой системой кстати и выродился из нее в торговый терминал. Уж что он умеет делать и что Qpile обрабатывать более-менее можно, так это позицию.
Почему Quik лишнее звено? я кстати робота писал не для HFT, я торгую на 5-15 мин, поэтому скорость исполнения для меня не играет роли.
Все там можно решить не прибегая к сторонней связке учета баланса.
Это вообще самый надежный вариант с роботом — использовать ОДНУ программу