首页 文章

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

提问于
浏览
0

我是购买苹果股票的简单例子 . 我努力用 run_algorithm() 运行算法 . 当我试图运行'dual moving average cross'时,出现了完全相同的错误 . 我也尝试过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,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中,文件“/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,文件“/ 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行,如果不是has_data_for_dates,则为ensure_treasury_data(d) ata,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'

2 回答

  • 1

    仅供参考,我认为问题与 python 3.6 中的 SSL 证书有关 . 不幸的是,错误消息(特别是如果忽略堆栈跟踪)不是很有帮助 . 对于mac try: sudo /Applications/Python\ 3.6/Install\ Certificates 命令重新安装证书

  • 0

    根据docs这里, startenddatetime 对象,而不是字符串 . 所以,你应该定义如下:

    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)
    

相关问题