Максим Милованов
Максим Милованов личный блог
23 апреля 2014, 09:52

Среднесрочная система для пары доллар-рубль. Часть 2. Разработка робота на QPILE

В прошлой статье, посвященной торговой системе на паре рубль-доллар, мы протестировали на исторических данных алгоритм, определили необходимые параметры стратегии и выяснили риски. Настало время применить полученные знания в написании торгового робота для торгового терминала QUIK.
Еще раз, хотелось бы напомнить о торговом алгоритме: подробнее
 
 Среднесрочная система для пары доллар-рубль. Часть 2. Разработка робота на QPILE
Рис. 1. Алгоритм торгового робота


Хотелось бы описать структуру файлов робота. Самого робота я назвал BEC (Break Extremum Candles):
  1. robot_bec.qpl             -           главный файл торгового робота
  2. strategy_func.qpl       -           файл с функциями специфичными для данного робота
  3. func.qpl                      -           файл с функциями, облегчающими работу с языком QPILE, эти функции так или иначе очень часто применяются для разработки любого робота
  4. config.qpl                   -           конфигурационный файл
  5. data.txt                       -           файл, хранящий позицию и цену входа в сделку
  6. log.txt                         -           файл, хранящий действия робота, в том числе и его ошибки


Все файлы снабжены большим количеством комментариев, которые будут понятны любому человеку. Однако необходимость разобрать структуру робота всё же есть (Рис. 1).
 
Со входом в позицию, при реализации, проблем не должно возникнуть, т.к. работа происходит на стандартном механизме транзакций, о которых можно почитать непосредственно в документации к QUIK. Выполнение функции осуществления сделки вынесено в отдельную функцию createOrderByMarket(), которая описана в файле func.qpl. В качестве параметров в этой функции выступают operation – тип операции «B» или «S» (Покупка или продажа соответственно), shareCount – количество лотов для покупки.
 
Отдельно стоит уделить внимание функции управления позицией managePosition (Рис. 2).
 Среднесрочная система для пары доллар-рубль. Часть 2. Разработка робота на QPILE
Рис. 2. Управление позицией
Прежде чем запускать робота, нужно отредактировать конфигурационный файл. Необходимо указать корректные номера счета, код инструмента, установить проскальзывание и другие служебные переменные в файле config.qpl.
 
 Среднесрочная система для пары доллар-рубль. Часть 2. Разработка робота на QPILE
Рис. 4. Внешний вид робота
Безусловно, использование языка программирования QPILE может быть немного затратным в силу ограничений языка. Поэтому использовать его или не использовать – дело каждого разработчика. С момента появления новых инструментов для разработки роботов появилась возможность использовать более совершенные инструментов, такие как LUA (встроенного в QUIK), программы для создания и тестирования роботов TradeMatic и др. Но, тем не менее, практика программирования роботов и торговых систем важна, и стоит применять именно необходимый наиболее подходящий для решения задачи, инструмент. В данном случае мы использовали язык QPILE и разработали робота, который стабильно работает на валютной паре доллар-рубль.

Код торгового робота на Qpile на сайте robostroy.ru 
6 Комментариев
  • siva
    23 апреля 2014, 09:58
    В избранное же.
  • Михаил Васин
    23 апреля 2014, 10:36
    как робот 3 марта пережил на истори?
  • ves2010
    23 апреля 2014, 11:08
    1 до 1.1.09 si был унылым неликвидным говном изза отсутствия сальдирования… т.е за 2008г тестить смысла нет
    2 т.к торгуешь лимитниками запрети торговать в первую минуту торгов внутри гэпа… и посмотри резалт
    • Dem0N
      23 апреля 2014, 13:45
      ves2010, так у него же просматриваются свечи только с 11-00 до 18-45, соответственно нет торговли на гэпах
  • Ruslan_Loginov
    23 апреля 2014, 14:54
    Даже как то неожиданно увидеть подобный пост.
    Чуть расширьте условия.
    1. Интервал час
    2. Добавим две скользящие
    3. фьюч РТС
    Вполне рабочий алгоритм.

    Вопрос автору поста: Зачем разбиваете весь робот на подфайлы? почему не объединить в один? Есть в этом какой то смысл или так привыкли просто? Спасибо.
    PS. +)
  • dima_garage
    23 апреля 2014, 19:04
    и как часто он входит в позицию?
    сегодня к примеру ни разу не вошел

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн