如何更新已弃用的 python zipline.transforms 模块?
How to update the deprecated python zipline.transforms module?
我使用 quantopian zipline 包 http://www.zipline.io/beginner-tutorial.html 编写了一个 python 程序。我最近更新了包,遇到了 zipline.transforms 包被弃用的情况。我使用了 zipline.transforms 包中的两个函数,batch_transform()
和 MovingAverage
。
除了说用 history()
函数替换 batch_transform
之外,我没能找到一个很好的 post 来演示如何解决这个问题。但是,我不知道如何替换它。我还没有找到 post 说明如何修复 MovingAverage 弃用问题。
这是我正在使用的代码。
from zipline.algorithm import TradingAlgorithm
from zipline.transforms import batch_transform
from zipline.transforms import MovingAverage
class TradingStrategy(TradingAlgorithm):
def initialize(self, window_length=6):
self.add_transform(
MovingAverage, 'kernel', ['price'], window_length=self.window_length)
@batch_transform
def get_data(data, context):
'''
Collector for some days of historical prices.
'''
daily_prices = data.price[STOCKS + [BENCHMARK]]
return daily_prices
strategy = TradingStrategy()
有人可以举例说明如何更新上面的代码吗?考虑到 quantopian 的流行程度,我想有很多人在处理这些问题。
似乎没有直接的方法来使用 history
而不是 batch_transform
.
在我看来,不仅方法改变了,而且它们的使用方式也完全改变了。
文档提到了以下内容:
Every zipline algorithm consists of two functions you have to define:
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)
我使用 quantopian zipline 包 http://www.zipline.io/beginner-tutorial.html 编写了一个 python 程序。我最近更新了包,遇到了 zipline.transforms 包被弃用的情况。我使用了 zipline.transforms 包中的两个函数,batch_transform()
和 MovingAverage
。
除了说用 history()
函数替换 batch_transform
之外,我没能找到一个很好的 post 来演示如何解决这个问题。但是,我不知道如何替换它。我还没有找到 post 说明如何修复 MovingAverage 弃用问题。
这是我正在使用的代码。
from zipline.algorithm import TradingAlgorithm
from zipline.transforms import batch_transform
from zipline.transforms import MovingAverage
class TradingStrategy(TradingAlgorithm):
def initialize(self, window_length=6):
self.add_transform(
MovingAverage, 'kernel', ['price'], window_length=self.window_length)
@batch_transform
def get_data(data, context):
'''
Collector for some days of historical prices.
'''
daily_prices = data.price[STOCKS + [BENCHMARK]]
return daily_prices
strategy = TradingStrategy()
有人可以举例说明如何更新上面的代码吗?考虑到 quantopian 的流行程度,我想有很多人在处理这些问题。
似乎没有直接的方法来使用 history
而不是 batch_transform
.
在我看来,不仅方法改变了,而且它们的使用方式也完全改变了。
文档提到了以下内容:
Every zipline algorithm consists of two functions you have to define:
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)