В
прошлой статье, посвященной торговой системе на паре рубль-доллар, мы протестировали на исторических данных алгоритм, определили необходимые параметры стратегии и выяснили риски. Настало время применить полученные знания в написании торгового робота для торгового терминала QUIK.
Еще раз, хотелось бы напомнить о
торговом алгоритме:
подробнее
Рис. 1. Алгоритм торгового робота
Хотелось бы описать структуру файлов робота. Самого робота я назвал BEC (Break Extremum Candles):
- robot_bec.qpl - главный файл торгового робота
- strategy_func.qpl - файл с функциями специфичными для данного робота
- func.qpl - файл с функциями, облегчающими работу с языком QPILE, эти функции так или иначе очень часто применяются для разработки любого робота
- config.qpl - конфигурационный файл
- data.txt - файл, хранящий позицию и цену входа в сделку
- log.txt - файл, хранящий действия робота, в том числе и его ошибки
Все файлы снабжены большим количеством комментариев, которые будут понятны любому человеку. Однако необходимость разобрать структуру робота всё же есть (Рис. 1).
Со входом в позицию, при реализации, проблем не должно возникнуть, т.к. работа происходит на стандартном механизме транзакций, о которых можно почитать непосредственно в документации к QUIK. Выполнение функции осуществления сделки вынесено в отдельную функцию createOrderByMarket(), которая описана в файле func.qpl. В качестве параметров в этой функции выступают operation – тип операции «B» или «S» (Покупка или продажа соответственно), shareCount – количество лотов для покупки.
Отдельно стоит уделить внимание функции управления позицией managePosition (Рис. 2).
Рис. 2. Управление позицией
Прежде чем запускать робота, нужно отредактировать конфигурационный файл. Необходимо указать корректные номера счета, код инструмента, установить проскальзывание и другие служебные переменные в файле config.qpl.
Рис. 4. Внешний вид робота
Безусловно, использование языка программирования QPILE может быть немного затратным в силу ограничений языка. Поэтому использовать его или не использовать – дело каждого разработчика. С момента появления новых инструментов для разработки роботов появилась возможность использовать более совершенные инструментов, такие как LUA (встроенного в QUIK), программы для создания и тестирования роботов TradeMatic и др. Но, тем не менее, практика программирования роботов и торговых систем важна, и стоит применять именно необходимый наиболее подходящий для решения задачи, инструмент. В данном случае мы использовали язык QPILE и разработали робота, который стабильно работает на валютной паре доллар-рубль.
Код торгового робота на Qpile на сайте robostroy.ru
2 т.к торгуешь лимитниками запрети торговать в первую минуту торгов внутри гэпа… и посмотри резалт
Чуть расширьте условия.
1. Интервал час
2. Добавим две скользящие
3. фьюч РТС
Вполне рабочий алгоритм.
Вопрос автору поста: Зачем разбиваете весь робот на подфайлы? почему не объединить в один? Есть в этом какой то смысл или так привыкли просто? Спасибо.
PS. +)
сегодня к примеру ни разу не вошел