Ответ 1
Кажется, нет прямого способа использовать history
вместо batch_transform
.
Мне кажется, что не только методы были изменены, но и то, как они были предназначены для использования, также были полностью изменены.
В документации упоминается следующее:
Каждый алгоритм zipline состоит из двух функций, которые вы должны определить:
-
initialize(context)
-
handle_data(context, data)
Вот пример из документов об использовании метода истории для создания некоторых основных скользящих средних:
def initialize(context):
context.i = 0
context.asset = symbol('AAPL')
def handle_data(context, data):
# Skip first 300 days to get full windows
context.i += 1
if context.i < 300:
return
# Compute averages
# data.history() has to be called with the same params
# from above and returns a pandas dataframe.
short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()
# Trading logic
if short_mavg > long_mavg:
# order_target orders as many shares as needed to
# achieve the desired number of shares.
order_target(context.asset, 100)
elif short_mavg < long_mavg:
order_target(context.asset, 0)
# Save values for later inspection
record(AAPL=data.current(context.asset, 'price'),
short_mavg=short_mavg,
long_mavg=long_mavg)