Получи случайную криптовалюту за регистрацию!

Переходим к работе ТС с заданными тикерами в BackTrader. ТС, | Финансовая Лаборатория

Переходим к работе ТС с заданными тикерами в BackTrader.

ТС, как и данные, подтягиваются к Cerebro. Например:

cerebro = bt.Cerebro()
cerebro.addstrategy(ts1)
cerebro.addstrategy(ts2)
cerebro.adddata(data1)
cerebro.adddata(data2)

И ts1 и ts2 будут получать data1 и data2. Нужно сделать так, чтобы можно было выбирать, какие данные в какие ТС отправлять.

Трейдеры "Финансовой Лаборатории" придумали простое решение. В каждой ТС может быть сколько угодно параметров. Нужно сделать параметр в виде кортежа, где передавать номера тикеров. Например, для 1-го, 3-го и 4-го тикера параметр будет data_ids = (0, 2, 3)

Событие next будет вызываться для каждой ТС по приходу нового бара каждого тикера. Нам нужно "поймать" состояние, когда пришли все новые бары всех тикеров по ТС.

Решений здесь можно придумать много. Один из вариантов такой. Вводим логическую переменную синхронности тикеров ТС. Изначально ставим ее в False. На каждом next сравниваем дату/время последнего бара каждого тикера ТС (номера их мы знаем из параметра ТС). Если тикеры до next были не синхронные, а с приходом next синхронизировались по времени, то выполняем расчеты алгоритма ТС. Ставим логическую переменную синхронизации тикеров в True. Если с приходом next дата/время тикеров ТС не синхронны, то ставим логическую переменную синхронизации тикеров в False. Расчеты алгоритма ТС не выполняем.

Этот алгоритм синхронизации можно использовать даже если данные приходят по разным временнЫм интервалам.