Блог им. hacktrade

Фреймворк для написания торговых роботов

Хочу представить вашему вниманию фреймворк 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
Качайте, пользуйтесь. И, жду ваших отзывов. Спасибо!
★34
9 комментариев
Не очень знаком с луа, поэтому возник вопрос: что за функция Trade()? Это встроенная функция или написанная Вами? Если Вами, то каков ее код?
avatar
А. Г., Рад видеть :)

Это псевдоним стандартной функции coroutine.resume, код можно посмотреть здесь: github.com/hacktrade/hacktrade/blob/develop/hacktrade.lua

Псевдоним сделан для удобства написания кода. Формально при вызове этой функции прерывается код робота и происходит отработка умных заявок (обновляются цены лимитников, количество, и т.п.)

Технически вся магия происходит в методе main (можно посмотреть по той же ссылке), там в цикле вызывается сопрограмма, которая создаётся из функции Robot.
avatar
hacktrade,

Спасибо, посмотрю.
avatar
а под сишарп с вызовом данных по дде нету? :))
avatar
kos2929, поддерживается только Lua ) Идея как раз в том, что запускаешь один файл и ничего не настраиваешь в терминале. Вообще )

Плюс синтаксический сахар, язык докручен, чтобы быть более предметно-ориентированным.
avatar
СПС,hacktrade, очень полезная штука. Сделал 4 советника — все работает!!! надеюсь фрэйм будет дальше развиваться и расширяться.
p.s. намного полезней QL (ИМХО)
avatar
Vladimir, спасибо! Да, фреймворк готов развивать, но ещё больше буду рад энтузиастам, которые смогут помогать в его развитии, так как весь код открыт ) Или присылайте пожелания по функционалу на GitHub.
avatar
Здравствуйте. Не совсем умные заявки. При частичном исполнении не выставляются на продажу/откуп исполненные лоты — это морозилово денег и вероятной прибыли от частично исполненных лотов. При смещении заявки вручную — выставляется новая. Ручные заявки в замен выставленных роботом — фуу… не хорошо — надо снять и выставить там, где робот выставлял изначально.
В целом, фреймворк понравился. Мало комментариев на русском.
Спасибо.

теги блога hacktrade

....все тэги



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