Quntag
Quntag личный блог
29 октября 2024, 13:48

Пользуется ли кто то API Финам?

Всем привет. 

Потихоньку готовлю инфраструктуру для ухода от терминала Metatrader5 — есть некоторые неудобства при алготрейдинге с десятком торгуемых символов FORTS MOEX. В связи с этим хочу воспользовать API Финама для получения и сохранения котировок фьючерсов срочного рынка (для начала). 
Ориентируясь на библиотеку и разбираясь с интернет запросами столкнулся, что следующий запрос:

{
    "interval": {
        "count": 500,
        "from": {
            "seconds": "1729382400"
        }
    },
    //"security_board": "SPBFUT",
    //"security_code": "RIZ4",
    "security_board": "TQBR",
    "security_code": "SBER",
    "time_frame": "INTRADAYCANDLE_TIMEFRAME_M1"
}

Является рабочим, данные поступают, OHLC каждой свечи с временной меткой — приходят. 
Но при попытке получить то же для фьючерса RIZ4 — ошибка. И там и там данные хочу получить с 20.10.2024, но для акции SBER успешно, для фьючерса RIZ4 — не успешно. 

Может кто то работал с этим, подскажите, что я делаю не так?

60 Комментариев
  • Anest
    29 октября 2024, 14:04
    Не знаю как за API, но на Transaq надо заменить classcode  с SPBFUT, на FUT.Должно заработать.
  • Дмитрий Овчинников
    29 октября 2024, 14:12
    есть некоторые неудобства при алготрейдинге с десятком торгуемых символов FORTS
    Что за неудобства, если не секрет?
      • 3Qu
        30 октября 2024, 00:10
        Quntag, 
        Хочется чтобы было что то полегче, визуальная часть мне перестаёт быть нужна. И тогда сразу требования к платформам (Windows) уходит, 
        Сорри, этот ваш комметарий раньше не прочел.
        Тогда вам действительно Квик никак не подходит. Кроме Transaq коннектора или его эквивалента ничего и не придумаешь. Зато, хошь Питон, хошь JS, хош под Винду, хошь под Линукс. Новый Питон3.13 оч шустрый стал, но под него еще не все либы подогнали.
      • Дмитрий Овчинников
        30 октября 2024, 07:32
        Quntag, 
        да, экспирация конечно это черные дни рабского однообразного труда, я всегда чертыхаюсь. Зато дает ощущение «работы». 
        Насчет шва не понял, в MQL есть все возможности по экспорту данных.
        Тестирование наладил с небольшими нюансами. Точнее с большими нюансами, но, наверное, я к ним уже привык.
        Про версию терминала для алго я давно ною, но кого это интересует в MQ? Им бы побольше рюшечек туда налепить, это стандартный путь любого ПО. Сервер у меня с большим запасом, так что это скорее просто нытье.

          • Дмитрий Овчинников
            30 октября 2024, 10:33
            Quntag, 
            Они сделали очень красивый отчётик, который можно сформировать в терминале
            На ЕБС он показывает дикую дичь, бесполезная вещь.
            Единственная возможность MQL по экспорту — формирование csv со сделками. Этим только и пользуюсь. Но как только хочется что то большее то он мне не помогает. 
            Написал скрипт, в котором из истории сделок делается то, что мне необходимо, далее в csv. Но я не визуал, меня от графиков тошнит, мне интереснее таблицы с цифрами разглядывать.

            А в целом да, если вы программист, тогда надо делать свой велосипед. Можно применить бэкграунд ;)
  • 3Qu
    29 октября 2024, 14:42
    Были посты, где сильно ругали коннектор Финама. Че-то там было критически важное. Т.к. не использую, в подробности не вникал.
    Вообще-то, даже собирался использовать, но все недостатки в совокупности меня остановили.
    Пожалуй, основной, это наличие только у одного брокера — прикован к нему как цепями. Я это проходил с АПИ Альфы — кончилось АПИ, и все многолетние наработки коту под хвост. Многое так и не было восстановлено.
    • Gambler <osaengine.ru>
      29 октября 2024, 17:23
      3Qu, для этого можно использовать платформы. Ушел один тип подключения — перешел на другой. Собрал у себя знаменитый опен сорс osaengine.ru/
      • 3Qu
        29 октября 2024, 17:52
        Gambler , так-то оно так, но непонятно, что дает Енжина, по сравнению с просто подключением, скажем, через вебсокет. Где цимес?
        Я, конечно, не оч в курсе, но по Енжине сразу ограничивается функциональность подключения. Универсальность всегда дает ограничения.
        • Gambler <osaengine.ru>
          29 октября 2024, 19:41
          3Qu, ахаха, сайт посмотрите, вы меня с кем-то путаете. А не с той Осы, у меня другой сайт. Свободный от маркетинга и объективный.

          А дает то, что вы написали. Не мучаться с переходом на другое АПИ, что возможно даже в рамках одного брокера.
          • 3Qu
            29 октября 2024, 20:29
            Gambler , т.е., к Алексу Ван с его OS Engine вы никакого? А я было подумал — дубль.)
            Посмотрел ваш сайт и гитхаб, Питон для крипты, смотрю, поддерживается и обновляется. Смотрю и асинхронность, вроде, есть. Поддерживаемые версии Питон только не указаны. И не понял, там и REST API и вебсокеты? Че-то подробностей не нашел.
            Я, вообще, софт от Unicorn использую.
            • Gambler <osaengine.ru>
              29 октября 2024, 20:33
              3Qu, нет-нет-нет. Вы всё неправильно поняли ))

              osaengine.ru/ это мой сайт. Там каталог готовых платформ. Я никаких программ или платформ не предлагаю. Я занимаюсь описанием и отзывами к программам от других авторов.
              • 3Qu
                29 октября 2024, 20:55
                Gambler , то-то я смотрю, че-то не сходится. Теперь понятно.
                  • 3Qu
                    29 октября 2024, 23:25
                    Quntag, к сожалению Квик-Луа. АПИ у Квик нет, но у Луа есть C-API.
                    Есть сторонние программы для торговли через Квик, все они работают через Луа. OS Engine, например (не единственная) — там все под С#, если не ошибаюсь. Мне она не нравится, но многие говорят, что самое оно.
                    Кто-то прямо на Луа ТС пишет, но язык больше для сценариев, для работы как самостоятельная программа как-то не оч.
                    • Просто трейдер
                      29 октября 2024, 23:31
                      3Qu, не советуйте Осу. Не работает она. Пришли, получили пачку ошибок, ушли — вот основной сценарий. Код — аховый.
                      • 3Qu
                        29 октября 2024, 23:36
                        Просто трейдер, я и не советую. Так и сказал — мне она не нравится.
                        А чего там еще есть под Квик? S#? — этот смотрел лет 10 назад, ниче не знаю.) Что еще? Разве только самому ДЛЛ писать.
                  • Gambler <osaengine.ru>
                    29 октября 2024, 23:24
                    Quntag, сделайте через какую-то платформу. Я собрал у себя на сайте варианты, работающие с рынком РФ osaengine.ru/ Конкретный API всегда будет менее универсальным решением. Всегда.
                    • 3Qu
                      29 октября 2024, 23:41
                      Gambler , для Quntag точнее пожалуйста, там у вас собрано до фига всего.) Сходу не разберешься.)
                      • Gambler <osaengine.ru>
                        30 октября 2024, 15:20
                        Quntag, верно. Но есть и универсальные. Первый три, QuantConnect, StockSharp, Backtrader. Причем первые два имеют свой SDK, который можно использовать напрямую из своих программ. Backtrader уже монолит.
  • Cubigator
    29 октября 2024, 14:53
    Привязываться к API определенного брокера это все равно что стать его рабом. Или быть кинутым, как кинул меня мой американский форекс брокер Oanda с его API в 2020 году, когда всех россиян попросили на выход. Нужно искать стандартную альтернативу имеющуюся почти у всех брокеров. Самый простой вариант это Quik+Lua.
    • 3Qu
      29 октября 2024, 15:02
      Cubigator, 
      Самый простой вариант это Quik+Lua.
      Ага, самый простой.) К нему еще ДЛЛ и пр. и пр. Замотаешся.
      ДЛЛ есть и готовая, можно найти в инете, но она, в общем, для чего-то более менее простенького. Мне не подошла. Там еще начнутся проблемы с потоками, на чем Квик виснет целиком.
      • Cubigator
        29 октября 2024, 15:31
        3Qu, DLL в моих роботах не используются. Все функции работы с Quik встроены в Lua. Только в скрипте который логинится к серверу используется DLL для поиска кнопки коннект в Quik и формы ввода пароля.
        С потоками да, в LUA это проблемно, но это уже не простой скрипт будет, и ничего не мешает запускать для каждого алгоритма и для каждого инструмента свой отдельный скрипт. У меня постоянно висят 15 штук, не на самой мощной виртуалке и ничего не виснет.
        • 3Qu
          29 октября 2024, 15:33
          Cubigator, т.е., вы непосредственно в ЛУА ТС делаете? А события в main() перекладываете и уже там их обрабатываете?
          • Cubigator
            29 октября 2024, 15:38
            3Qu, Ничего никуда не перекладываю. Все события развиваются в цикле while is_run в main()
            • 3Qu
              29 октября 2024, 15:52
              Cubigator, эт я уже понял.
              Не понял, откуда в main() берутся данные подписок на котировки, установки и срабатывания заявок и пр. Они же не сами там появляются.)
              Я-то их через ДЛЛ получал и там по потокам разводил.
              Просто интересно, сейчас я на другой бирже, без Квик, через вебсокеты.
              • Cubigator
                29 октября 2024, 16:13
                3Qu, даные считываются из открытого в Quik графика
                local tabCurCandles = getCandlesByIndex(ID_Graph, 0, x-MaxPer-2, MaxPer+1) — выборка свечей
                Стакан читается
                              local ask_price,bid_price = 0,0
                              ql2 = getQuoteLevel2(class_code, sec_code) — стакан
                              if ql2.offer~=nil and ql2.bid~=nil then
                                ask_price=tonumber(ql2.offer[1].price)
                                bid_price=tonumber(ql2.bid[tonumber(ql2.bid_count)].price)

                Позицию открывает 
                local result = sendTransaction(transaction) — запрос на сервер для открытия позиции

                Все это встроенные в Lua функции.

                Проверка срабатывания заявок идет через стандартное событие OnTransReply
                function OnTransReply(trans_reply)
                  if  trans_reply ~= nil and type(trans_reply) == «table» then
                есть еще OnTrade(), но я им не пользуюсь.
                • 3Qu
                  29 октября 2024, 16:06
                  Cubigator, я немного не о том. Ну, да, ладно.
      • John Smith
        29 октября 2024, 18:24
        Коммуникация между потоками через Linda objects из Lua Lanes нормально работает, в том числе для передачи данных из потока терминала в поток скрипта. Использую уже несколько лет, каких-то серьезных проблем не возникало.
        • 3Qu
          29 октября 2024, 19:12
          John Smith, посмотрел
          lualanes.github.io/lanes/
          И чем это отличается от просто написания ДЛЛ и далее на чем хош? Непонятно, на фига надстройки.
          • John Smith
            29 октября 2024, 19:29
            Оно позволяет без собственных велосипедов легко пробрасывать события в поток скрипта и не нагружать гуёвый поток терминала (и так педальный от рождения). То, что должны были сделать разрабы Квика с самого начала, но до сих пор не сделали.
            • 3Qu
              29 октября 2024, 19:40
              John Smith, эт, наверное, да. Но, даже уже по описанию, возникает куча особенностей и проблем. Так не проще ли написать одну лишь ДЛЛ с несколькими единообразными функциями (т.е.,  вариации одного и того же кода), и далее работать со знакомыми потоками С++ или С#, чем разбираться еще и с этим.
              • John Smith
                29 октября 2024, 20:01
                Не, если Lua — лишь тонкая прослойка, то смысла в Lanes может и нет. У меня весь робот на Lua, поэтому Lanes хорошо вписался.

                Я тоже сперва огреб немало гемора с многопоточкой, в том числе терминал наглухо зависал, но перенос всей обработки событий полностью в поток скрипта с помощью механизма обмена сообщениями из Lanes их полностью устранил.

                В общем, если что, Lanes с квиком дружит, включая создание своих потоков.
    • Gambler <osaengine.ru>
      29 октября 2024, 17:28
      Cubigator, писал ранее про создание алгоритма через GPT smart-lab.ru/blog/1037920.php С тех пор ИИ только поумнел )

      А так, мой сайт со сборником всех популярных опен сорсов osaengine.ru/ Если уж и программировать, то через какую-то платформу.
  • Влад Л.
    29 октября 2024, 16:15
    Я бы попробовал RiZ4 (маленькая «i»).

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

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