【问题标题】:Zipline Error: AttributeError: 'NoneType' object has no attribute 'index'Zipline 错误:AttributeError:“NoneType”对象没有属性“索引”
【发布时间】:2018-02-27 00:24:01
【问题描述】:

我想自动化我的手动交易策略。然而,一开始,我试图重现 Zipline 购买苹果股票的简单例子。我很难用run_algorithm() 运行算法。当我试图运行“双移动平均线交叉”时,出现了完全相同的错误。我也尝试了 IPython 和终端,但仍然出现该错误。我在这个论坛中也找不到与此相关的任何内容。我将非常感谢任何提示。谢谢。

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

代码如下:

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(开始=2015-1-1,结束=2017-1-1,初始化=初始化, 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, 环境=环境)文件 "/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 行,在 ensure_treasury_data 如果没有 has_data_for_dates(data, 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'

【问题讨论】:

    标签: python algorithmic-trading zipline back-testing


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      根据此处的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)
      

      【讨论】:

      • 感谢您的帮助。我试过了,但仍然收到相同的错误消息...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 2017-03-10
      • 2019-07-18
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多