Zipline错误:AttributeError:' NoneType'对象没有属性' index'

时间:2017-09-18 12:50:26

标签: python algorithmic-trading zipline back-testing

我希望自动化我的手动交易策略。然而,一开始,我试图重现Zipline购买Apple股票的简单例子。我努力用run_algorithm()运行算法。当我试图运行“双移动平均线”时,出现了完全相同的错误。我也试过IPython和终端,但仍然得到了这个错误。在这个论坛上,我无法找到与此相关的任何内容。我会非常感谢任何提示。谢谢。

我在macOS和Zipline版本1.1.1上使用Python 3.6。

代码:

import zipline as zl from zipline.api import order, record, symbol


def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('AAPL'), 10)
    record(AAPL=data.current(symbol('AAPL'), 'price'))

zl.run_algorithm(start='2015-1-1', end='2017-1-1', initialize=initialize, capital_base=10000)

这是追溯:

  

Traceback(最近一次调用最后一次):文件   " /Users/SOL/Desktop/Python/backtest.py" ;,第13行,在   zl.run_algorithm(start = 2015-1-1,end = 2017-1-1,initialize = initialize,   capital_base = 10000)文件   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py" ;,   第360行,在run_algorithm environ = environ,File中   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py" ;,   第132行,在_run env = TradingEnvironment(asset_db_path = connstr,   environ = environ)文件   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/finance/trading.py" ;,   第99行,在init self.bm_symbol,File中   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py" ;,   第173行,在load_market_data环境中,文件   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py" ;,   第287行,在ensure_treasury_data中,如果没有has_data_for_dates(数据,   first_date,last_date):文件   " /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py" ;,   第87行,在has_data_for_dates dts = series_or_df.index中   AttributeError:' NoneType'对象没有属性' index'

1 个答案:

答案 0 :(得分:0)

根据此处的docsstartenddatetime个对象,而不是字符串。所以,您应该将它们定义如下:

from datetime import datetime

start = datetime(year=2015, month=1, day=1)
end = datetime(year=2017, month=1, day=1)

然后致电

zl.run_algorithm(start=start, end=end, initialize=initialize, capital_base=10000)