hacktrade
hacktrade личный блог
27 июля 2014, 11:24

Спредовый робот на HackTrade

Доработал фреймворк HackTrade до версии 1.4.

Теперь можно удобно работать со стаканом
Обратите внимание, что по умной заявке сначала открывается позиция лучшим бидом, потом позиция приводится к 0 лучшим оффером.
Подход не стандартный, но оцените удобство: если снять заявку, робот поставит новую, чтобы добить недостающий объём.


Пример робота (исходник):

dofile("../hacktrade.lua")

function Robot()

    feed = MarketData{
        market="QJSIM",
        ticker="SBER",
    }

    order = SmartOrder{
        account="NL0011100043",
        client="74924",
        market="QJSIM",
        ticker="SBER",
    }
    
    
    while working do
      repeat
        order:update(feed.bids[1].price, 3)
        Trade()
      until order.filled      
      repeat
        order:update(feed.offers[1].price, 0)
        Trade()
      until order.filled
    end
end

Посморите на реализацию конечного автомата: 2 цикла, пока не заполнится умная заявка.
Жду отзывов )
20 Комментариев
  • Lika
    27 июля 2014, 11:44
    А Как называется язык на котором написан робот?
      • Lika
        27 июля 2014, 12:13
        hacktrade, а разве у него не должны подсвечиваться функциональные слова как в MQL4?
        Я бы, наверное, поняла код если бы каждая строчка была прокомментирована. Жаль что нет комментов что на каждой строчке происходит.
        И под опционы на этом языке можно писать?
  • Lafert
    27 июля 2014, 11:46
    если бы в комплекте с роботом шла еще и машина времени, что бы в 2006 год вернутся…
      • Vkt
        27 июля 2014, 16:22
        hacktrade, Поскольку пока не очень подробная документация, сходу не понял как, к примеру, выставить лимитную заявку на покупку по биду, но не ждать пока заполнится весь выставленный объем, а сразу после первой сделки выставить купленный объем на продажу по офферу, сняв перед этим неисполненный остаток лимитной заявки с бида. При этом надо учесть, что с момента получения программой информации о первой сделке по биду и фактическим снятием остатка из торговой системы, туда могли налить еще вплоть до полного исполнения. Т.е. если выставлять на оффер купленный объем по информации о первой сделки по биду, то мы можем продать не все, что купили. Получается, что надо дождаться снятия первой заявки с бида, еще подождать сколько-то времени на случай возможного прихода запоздавшей информации о сделках и уже потом выставлять оффер. Это все в умных заявках как-то учитывается?
          • Vkt
            27 июля 2014, 18:01
            hacktrade, если я все правильно понял, то это вообще крутая фишка! Т.е. можно наштамповать умных ордеров order1, order2… orderN и каждый умный ордер будет внутри себя отслеживать свою собственную позицию даже если после первой сделки по биду налили еще, он просто станет продавать больше по офферу пока не закроет свою собственную позицию до 0? При этом остальные умные ордера будут делать тоже самое?
              • Vkt
                27 июля 2014, 19:55
                hacktrade, супер, респект! Но еще больше вопросов появилось :)
                «Обратите внимание, что вам вернётся столько значений, сколько задано в параметрах графика. Не добавляйте на график слишком много значений, это может замедлить работу программы.» — имеется ввиду, что если на графике одна ЕМА, то Indicator при каждом обращении будет всасывать из Квика все доступные значения этого мувинга или что-то другое? Какова система нумерации бидов и офферов в стакане (feed.bids[1])?
                  • Vkt
                    27 июля 2014, 22:07
                    hacktrade, понятно, спасибо! А вот интерсено, свои заявки вычитаются из данных стакана, будет ли корректно фронтранится лучший бид:
                    repeat
                    order:update(feed.bids[1].price+feed.sec_price_step, 3)
                    Trade()
                    until order.filled
                      • Vkt
                        27 июля 2014, 22:19
                        hacktrade, ясно, ждем реализации планов!
                  • hacktrade, можно сделать замыкание для индикаторы/графики, которое на старте считывает все данные, а после добавлять только текущий активный или закрытый бар. Прирост по времени обеспечен.

  • legion73
    27 июля 2014, 16:44
    Можно ли получиь значение маржи из таблицы Quik. Или другие значения из таблиц?
      • legion73
        27 июля 2014, 17:46
        hacktrade, Спасибо за ответ.Буду разбираться. Есть у меня на вашей 1-ой версии робот. Хорошо работает с индикаторами.

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

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