Блог им. Frank_Cowperwood

Как я писал робота

Как я писал робота. 

Ходу поделиться небольшими размышлениями по поводу роботописания. Сейчас данная тема очень хорошо развивается, появляется множество «псевдо Граалей». 
Логика роботописания понятна: каждый хочет избавиться от сидения за мониторов целые дни на пролет и сберечь нервы (хорошо что у программы их нет, за то у нее есть баги ;-D ). 
Итак, по своей профессии я программист поэтому с программированием проблем нет (причем я заметил — не важно на каком языке писать, важно сколько это займет времени, а всем известно что время — это деньги). 
Начал я заниматься данными вопросами несколько лет назад. 
Первое что мне пришло в голову было следующий вариант. 

Вариант №1 
Решил написать все в Quik на его встроенном скриптовом языке QPile. 
image001.png
 
Тут возникло столько вопросов… что у меня сразу опустились руки. 

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


Вариант №2 
Решил написать связку программы тех.анализа + Quik (без использования QPile). 
image002.png
 
На рынке есть хорошие программа тех.анализа – Amibroker, Wealth-lab, MetaStock, Omega. 
У каждой программы есть свои минусы и свои плюсы. 
Я лично остановился га AmiBroker. Понравился их скриптовый язык. Простота использования. Скорость программы. Видимо ее писали без использования мега каких то библиотек, т.к. дистрибутив намного меньше других программ. 
После иследования программы и языка запрограммировать все что я хотел не получилось. Что же я хотел? Читайте дальше. 


Вариант №3 – последний. 
Между программой тех.анализа и Quik я написал систему учета позиций. 
image003.png

Система учета ЦБ и риск менеджмента – это программа, которая ведет учет ценных бумаг (в идеале суммойвой учет, но пойдет и простой количественный учет), контролирует риск и взаимодействует с Quik. 
Преимущества: 
  1. Учет множества ценных бумаг (если торговля происходит паралельно несколькими ценными бумагами) 
  2. Решение проблемы учета позиций и риск менеджмента в программе тех.анализа. Легко ли вести учет в  таких программах?  Помоему, они для этого вообще не предназначены. 
  3. Риск менеджмент. Что это означает? Допустим закрытие позиций при достижении определенного убытка и прекращение торговли. Причем цифра прибыли/убытка берется из Quik (общая сумма прибыли/убытка), а не рассчитывается – что бы избежать ошибок. 
  4. Работа с Quik. Одно дело послать в Quik заявку на сделку, другое дело проконтролировать исполнение этой заявки. Еще сложнее – предпринять после этого очередную попытку. 
Соответственно, если вы все таки используете свои алгоритмы для определения точек входа и точек выхода вам нет необходимости использовать программу тех.анализа. Но опять же, изобретать велосипед в виде различных индикаторов в своей программе не имеет смысла, если их можно сделать в системе тех.анализа за 5 минут. 
Думаю что можно с любой программы тех.анализа выгрузить сигналы в файл. 
На простом примере покажу как выгружать сигналы SAR в файл в AmiBroker тут


Вывод: 
1. Используйте тройную связку. Переложите определение сигналов входа и выхода на программы технического анализа.  
2. Написать промежуточное звено не сложно даже на С++, вам ведь надо будет только обработать файл сигналов от программы тех.анализа и переслать его Quik. Никаких графиков тут не нужно. 
3. Прежде чем что либо делать – задайте вопрос: может быть велосипед уже изобретен? 
4. Не забывайте про риск менеджмент, особвенно если торгуете на FORTS с плечами по самые яблоки ;-D

опубликовал у себя на сайте
★4
9 комментариев
Чем больше компонентов в системе, тем меньше ее надежность. Я то же в начале шел таким путем. Но уж больно все «нестабильно».
Пока остановился на Transaq. там язык то же не сахар, но и не такой уродский как в квике. Есть еще разработки по транзак коннектор — это вообще то, что доктор прописал
avatar
Cheshirscy, с количеством звеньев согласен, но с учетом того что каждое звено делает свое дело (т.е. отвечает за свой участок работ) я пришел к такому виду робота.
avatar
А я вот наоборот стараюсь сокращать количество звеньев в цепи. Для разработки эффективных роботов даже Quik лишнее звено, но его то исключить технически сложнее всего, поэтому из предложенных я бы выбрал все же первый вариант. Qpile — примитивный язык, которым несложно овладеть и пусть написанный на нем робот будет громоздким, но все же это будет лучшим в эксплуатации вариантом.
Затем еще совсем непонятно что такое «Система учета позиций». Quik изначально был именно такой системой кстати и выродился из нее в торговый терминал. Уж что он умеет делать и что Qpile обрабатывать более-менее можно, так это позицию.
avatar
Евгений (evus), могу позавидовать только вашему терпению в изучении QPile и его отладкой :).
Почему Quik лишнее звено? я кстати робота писал не для HFT, я торгую на 5-15 мин, поэтому скорость исполнения для меня не играет роли.
avatar
фигня. Qopile — очень гибкий и простой.
Все там можно решить не прибегая к сторонней связке учета баланса.

Это вообще самый надежный вариант с роботом — использовать ОДНУ программу
avatar
Dimanite, а у вас сложный алгоритм торговли? вы формируете сигналы покупки/продажи в QPile?
avatar
а чем тслаб плох?
avatar
ves2010, если честно — я его не пробовал. Я использовал AmiBroker, потому что он мне понравился.
avatar

теги блога Роман Frank_Cowperwood

....все тэги



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