簡體   English   中英

Zipline錯誤:AttributeError:'NoneType'對象沒有屬性'index'

[英]Zipline Error: AttributeError: 'NoneType' object has no attribute 'index'

我想自動執行我的手動交易策略。 但是,從一開始,我就嘗試重現Zipline的簡單例子來購買蘋果股票。 我很難通過run_algorithm()運行算法。 當我嘗試運行“雙移動平均線交叉”時,出現了完全相同的錯誤。 我也嘗試了IPython和Terminal,但仍然收到該錯誤。 在這個論壇中我都找不到與此相關的任何信息。 我非常感謝您的任何提示。 謝謝。

我在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)

這是回溯:

追溯(最近一次通話):文件“ /Users/SOL/Desktop/Python/backtest.py”,第13行,位於zl.run_algorithm(開始= 2015-1-1,結束= 2017-1-1,initialize =初始化,大寫字母= 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)在初始self.bm_symbol文件“ /Library/Frameworks/Versions/3.6/lib/python3.6/site-packages/zipline/finance/trading.py”的第99行中,文件“ / Library / Frameworks /在load_market_data環境中的Python.framework / Versions / 3.6 / lib / python3.6 / site-packages / zipline / data / loader.py“,第173行,文件“ /Library/Frameworks/Python.framework/Versions/3.6/lib” /python3.6/site-packages/zipline/data/loader.py“,第287行,如果沒有has_data_for_dates(dat a,第一個日期,最后一個日期):文件“ /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 3.6中的 SSL證書有關。 不幸的是,錯誤消息(尤其是如果您忽略堆棧跟蹤信息)不是很有幫助。 對於Mac,請嘗試: sudo /Applications/Python\\ 3.6/Install\\ Certificates命令以重新安裝證書

根據此處的文檔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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM