В большинстве коннекторов OsEngine используется конвертация потоковых данных из JSON объектов. Поговорим о том, как правильно и не правильно поступать при их использовании.
Newtonsoft.Json
Именно эту библиотеку желательно использовать. Никакого смысла плодить в проекте множество преобразователей сообщений в JSON классы нет.
И на сегодняшний день можно говорить о том, что было бы не плохо, если бы она в итоге осталась единственной в нашем проекте для этих целей.
Камрады! Коннектор к ALOR OPEN API добавлен к OsEngine около трёх недель назад. Бета тесты завершены. Пора торговать!
1) Это очень классный коннектор в плане стека. Как крипта. Rest + web sockets. Это современно, это общепринятые стандарты, которые на сотнях бирж существуют. Короче — огонь.
2) Быстрый. Пока в глюках не замечен, только если палкой не тыкаешь.
3) Единственный пока в своём роде на MOEX. Лучшее, что есть из бесплатного. Им мог стать Тиньков Апи первой версии. Но там камрады стек трейдинговый не знали, кто его делал. А вторая команда разработчиков стек технологический изменила в худшую сторону.
4) Сообщения об ошибках при запросах прекрасны. И цифры, и текст. Очень редко, где такое. Спасибо. Это ускорило разработку. Отдельный привет команде за это. Красавчики.
Три различных типа времени приходит из шлюзов. Это супер странно. Вообще нигде такого не видел. Поэтому ставим на ПК МОСКОВСКОЕ ВРЕМЯ, иначе могут быть различные странности.
Продолжаем разговаривать про класс, предоставляющий данные для источников в OsEngine. А именно про класс ConnectorCandles. И в данной статье поговорим о его коде. Что там есть.
Сам класс находится в проекте вот здесь:
Я понял, что я не то искал. Время от времени пытаюсь найти API от TradingView и всегда натыкаюсь на то, что есть только для брокеров. А искал-то не то. Данные-данными, данные в другом месте можно взять, а вот UI про графики хороший. Оказывается у них есть такая штука: www.tradingview.com/lightweight-charts/
Есть и более продвинутые у них, но эта вроде сама нетребовательная к скиллам разработчика. Хотя даже эта для меня слишком front-ориентированная, кажется. Но благо есть какие-то либы на гитхабе чтобы с этим можно было взаимодействовать из Python.
В моих розовых мечтах (пока даже не уверен, позволит ли это всё делать эта либа) я это могу заиспользовать для чего-то такого:
— Мой автоматический скринер-алертер, найдя интересный кейс автоматом кидает его в окно график, может сразу в нескольких TF. И я могу сам по своему усмотрению определять логику работы: например, новый тикер вешается в окно, куда был добавлен наиболее давно добавленный график или что-то такое.
— У меня есть простенький UI (пусть даже просто в JupyterNotebook), но он позволяет полностью подстраиваться под мои процессы, а не процессы подстраивать под tool. Ну например, выделил список тикеров и они все «прыгнули» в окна графиков или что-то такое.
Создал дэшбоорд (онлайн) для отображения усредненных результатов торговли с нескольких счетов на фондовом рынке корпоративными и государственными облигациями публично.
https://kimkarus.ru/deshbordy/proizvoditelnost-i-effektivnost-investirovaniya/
Используемые технологии: MetaTrader5 (MQL5), ETL, ClickHouse, DateLens
Просто решил показать, как можно отслеживать торговую активность с разных бирж
Изменения, баг-фиксы и улучшения, которые были внесены в проект за последний месяц.
В данной статье поговорим об использовании циклов. Какие нужны, а какие смогут уронить наш замечательный терминал. Кроме того, поговорим о синтаксическом сахаре из библиотеки LINQ, которая, как не сложно догадаться по динамике этих записей, тоже под запретом. Почему и как?
Один из самых быстрых циклов, которые существуют. Это основная боевая единица, которую нужно использовать.
Данный цикл не создаёт дополнительных методов в памяти и не является потоконебезопасным. Практически любую ситуацию внутри него можно обработать. Также он позволяет ставить внутри себя точки останова.
Бесконечный цикл с условием продолжения.
Также разрешён к использованию. Имеет все плюсы цикла for.
Этот цикл создаёт метод внутри памяти и не даёт контролировать выбор объекта. В случае, если есть какие-то проблемы с перечислением или листом, выбрасывается неконтролируемое исключение.
Данный цикл нельзя использовать в многопоточном окружении при работе с листами.