Хочу представить вашему вниманию фреймворк HackTrade, который позволяет быстро писать торговых роботов.
Плюсы:
- работает в QUIK без лишних усилий
- робот работает быстро (можно делать роботов на тиках)
- поддерживаются графики
- «умные заявки» избавляют от бесконечной отладки
- можно компилировать в один файл и продавать
- открытый исходный код
Данный продукт уже выкладывался, но ушёл на доработку и значительно усовершенствовался.
Пример торгового робота:
dofile("hacktrade.lua")
function Robot()
feed = MarketData{
market="QJSIM",
ticker="SBER",
}
order = SmartOrder{
account="NL0011100043",
client="74808",
market="QJSIM",
ticker="SBER",
}
ind = Indicator{
tag="MAVG",
}
while true do
if feed.last > ind[-1] then
order:update(feed.last, 10)
else
order:update(feed.last, -10)
end
Trade()
end
end
Это пример реверса по скользящей средней. Пример тривиальный, но надёжный )
Робот догоняет цену. Если снимите заявку, он выставит количество, которое не успел купить/продать. Остаётся приобрести лежак и ехать на карибы.
Попробуйте в действии )
Фреймворк с драфтом документации лежит здесь:
https://github.com/hacktrade/hacktrade
Качайте, пользуйтесь. И, жду ваших отзывов. Спасибо!
Это псевдоним стандартной функции coroutine.resume, код можно посмотреть здесь: github.com/hacktrade/hacktrade/blob/develop/hacktrade.lua
Псевдоним сделан для удобства написания кода. Формально при вызове этой функции прерывается код робота и происходит отработка умных заявок (обновляются цены лимитников, количество, и т.п.)
Технически вся магия происходит в методе main (можно посмотреть по той же ссылке), там в цикле вызывается сопрограмма, которая создаётся из функции Robot.
Спасибо, посмотрю.
Плюс синтаксический сахар, язык докручен, чтобы быть более предметно-ориентированным.
p.s. намного полезней QL (ИМХО)
В целом, фреймворк понравился. Мало комментариев на русском.
Спасибо.