Блог им. 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
Качайте, пользуйтесь. И, жду ваших отзывов. Спасибо!
1.5К | ★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
Здравствуйте. Не совсем умные заявки. При частичном исполнении не выставляются на продажу/откуп исполненные лоты — это морозилово денег и вероятной прибыли от частично исполненных лотов. При смещении заявки вручную — выставляется новая. Ручные заявки в замен выставленных роботом — фуу… не хорошо — надо снять и выставить там, где робот выставлял изначально.
В целом, фреймворк понравился. Мало комментариев на русском.
Спасибо.

Читайте на SMART-LAB:
Фото
Снижение военной премии в нефти: что это меняет для доллара и G10
Во второй половине понедельника – начале вторники рынки активно пересматривают премию за худший сценарий на энергетическом рынке, что цепочкой...
⚙️ Как Займер использует ИИ в своей работе
Мы часто говорим, что наш сервис — высокотехнологичный, и это не пустые слова. Ранее мы уже рассказывали, как в Займере работают скоринг и...
Фото
Денежный рынок vs облигации: фокус смещается
В период роста ключевой ставки Банка России фонды денежного рынка стали весьма популярны. За это время они обеспечили инвесторам высокую...
Фото
Гендиректор Инарктики продал свои акции компании. Что это может значить?
Вечером в пятницу (6 марта ) вышел сущфакт о том, что Соснов Илья Геннадьевич, гендиректор Инарктики, продал свои акции компании. В нашем...

теги блога hacktrade

....все тэги



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