Я написал свой собственный пакет zipline, чтобы получать цены на криптовалюту из моего обмена. Прием пищи проходит гладко, и я проверил базу данных и увидел в ней свои мелкие данные.
Я попытался запустить очень простой алгоритм для проверки своего пакета, но столкнулся с исключением.
Мой алгоритм выглядит так:
def initialize(context):
# I tried to run it without this line as well
context.sim_params._emission_rate = 'minute'
def handle_data(context, data):
order(symbol('ETHBTC'), 10)
record(ETHBTC=data.current(symbol('ETHBTC'), 'price'))
Последняя строка дает мне следующее исключение:
File "python3.5/site-packages/zipline/data/us_equity_pricing.py", line 710, in sid_day_index
offset = day_loc - self._calendar_offsets[sid]
KeyError: Equity(0 [ETHBTC])
Я изучил этот вопрос далее и обнаружил, что zipline использует ежедневник для чтения столбцов, чтобы получить календарное смещение для символа «ETHBTC». Но мои дневные барные данные пусты, так как я просто принимаю мелкие данные.
В соответствии с документацией zipline прием данных дневного бара не является обязательным, из чего я пришел к выводу, что zipline будет при необходимости пересчитывать данные минут до дневных данных.
Кто-нибудь испытывал это раньше? Есть ли что-то, что я должен сделать, чтобы начать повторную выборку минутных и дневных данных бара?
Ура!