Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Улучшение библиотеки #9

Closed
kv-gits opened this issue Jun 8, 2022 · 1 comment
Closed

Улучшение библиотеки #9

kv-gits opened this issue Jun 8, 2022 · 1 comment
Labels
enhancement New feature or request

Comments

@kv-gits
Copy link

kv-gits commented Jun 8, 2022

Читал Ваш пост в телеграмме про намерение написать библиотеку по улучшению backtrader. Не нашел иного источника связи с Вами, поэтому напишу сюда свои мысли по этой теме. Сам занят чем-то похожим.

  1. Numpy-pandas. Они хоть и написаны на си, но к сожалению не предназначены, для realtime, где нужно часто добавлять данных в конце массива. Хотя, конечно, можно найти обходные пути - например иметь отдельный датафрейм для тела массива и его хвоста и обновление бара реализовывать на хвосте, и при необходимости дополнять тело. Это приемлемый алгоритм для одного инструмента. Но если используются много инструментов, то могут быть тормоза.
    Далее про различие между numpy и pandas. Тут тоже не все просто. Numpy пошустрее и numpy можно очень сильно оптимизировать с помощью jit-компилятора numba. Но зато в pandas есть индексация по столбцу, однако, часто индикаторы нужно пересчитывать по барам, и индексация в таких алгоритмах может быть и не нужна вообще. И обновлять крайнее значение при приходе нового тика на датафрейме с индексом может быть неоптимально (о чем выше написал).

Можно еще глянуть на что-то типа того https://github.com/modin-project/modin

Я довольно долго обдумывал способы как построить свой торговый движок вокруг numpy-pandas и пришел к тому, что ни то не другое не предназначены для этого. Но и то и другое вполне приемлемо, если использовать их в отдельных сценариях, нежели чем в монолитной системе, что я у себя и делаю.

Для универсального же движка типа backtrader стоит присмотреться к cython. Возможно, c помощью cython даже есть смысл сам backtrader переделать. Хотя лично мне его архитектура не дает той свободы, которой хотелось бы, и там слишком много "метамагии" в коде движка. Но тем не менее, backtrader это самый продуманный из всех имеющихся движков на python, который "оброс" неплохими плагинами. Cython мог бы его очень хорошо ускорить, но объем работы мне сложно оценить.

  1. Про графику. Хочу обратить внимание на finplot. Она поинтереснее чем то, что на bokeh написано. Но она к сожалению - не про realtime. Про realtime - implot/dearpygui.
@kv-gits kv-gits changed the title Улучшение библитеки Улучшение библиотеки Jun 8, 2022
@cia76 cia76 added the enhancement New feature or request label Jun 28, 2022
@cia76
Copy link
Owner

cia76 commented Jun 28, 2022

Благодарю за дельные советы!

Извиняюсь за долгий ответ, только вернулся из разъездов. Пока я только присматриваюсь к возможности доработки BT, никаких резких изменений делать не планирую. Ваши идеи также проработаю.

@cia76 cia76 closed this as completed Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants