【问题标题】:zipline run_pipeline and positional argumentszipline run_pipeline 和位置参数
【发布时间】:2017-12-15 07:08:32
【问题描述】:

我正在使用 Zipline-1.1.1、Python3.4.6 创建动态股票选择器,如下所示:

from zipline.pipeline import Pipeline, engine
from zipline.pipeline.factors import AverageDollarVolume, Returns

def make_pipeline():
    dollar_volume = AverageDollarVolume(window_length=1)
    high_dollar_volume = dollar_volume.percentile_between(N, 100)
    recent_returns = Returns(window_length=N, mask=high_dollar_volume)
    low_returns = recent_returns.percentile_between(0, n)
    high_returns = recent_returns.percentile_between(N, 100)
    pipe_columns = {
        'low_returns': low_returns,
        'high_returns': high_returns,
        'recent_returns': recent_returns,
        'dollar_volume': dollar_volume
    }
    pipe_screen = (low_returns | high_returns)
    pipe = Pipeline(columns=pipe_columns, screen=pipe_screen)
    return pipe

我初始化一个管道对象:

my_pipe = make_pipeline()

但是当我尝试填充管道时,它失败了:

result = engine.PipelineEngine.run_pipeline(my_pipe, '2017-07-10', '2017-07-11')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    result = engine.PipelineEngine.run_pipeline(my_pipe, '2017-07-10', '2017-07-11')
TypeError: run_pipeline() missing 1 required positional argument: 'end_date'

我不知道出了什么问题,非常感谢任何帮助。

【问题讨论】:

    标签: python zipline


    【解决方案1】:

    如果我理解正确,您使用的是this 库。

    据我从该代码中可以看出,要能够使用run_pipeline 方法,您必须先在管道引擎上使用instantiate,例如SimplePipelineEngine。你需要它,因为PipelineEngine 是一个类,甚至是抽象类,而不是一个对象。

    所以你必须创建一个SimplePipelineEngine 类的对象,然后在其上调用run_pipeline。你可以这样做:

    your_engine = SimplePipelineEngine(get_loader=your_loader, calendar=your_calendar, asset_finder=your_asset_finder)
    your_eninge.run_pipeline(my_pipe, '2017-07-10', '2017-07-11')
    

    当然你必须先创建your_loader等。

    HereSimplePipelineEngine 用法的示例。我希望它会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多