Cas*_*ils 2 python zipline docker jupyter
我使用 Docker 安装了 Zipline 和 Jupyter:https : //github.com/quantopian/zipline/blob/master/Dockerfile
我现在正在尝试在 Jupyter 下运行以下 Zipline 代码
%%zipline --bundle quantopian-quantl --start 2008-1-1 --end 2012-1-1 -o strat.pickle
from zipline.api import symbol, order, record
def initialize(context):
pass
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data[symbol('AAPL')].price)
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息是:
**JSONDecodeError: Expecting value: line 1 column 1 (char 0)**
Run Code Online (Sandbox Code Playgroud)
同样,当我尝试运行程序时会发生这种情况。
可能是什么问题?任何帮助、提示或建议~非常~感谢!
TIA
附录: 我也试过这个:https : //docs.google.com/document/d/1mvZO_JDirbJNXJfM0bTS9uMipHE5cfSGFj0sUpJicsw/edit?usp=sharing
小智 12
我知道这个问题已经解决了,但是我尝试了他们在 github 问题上提供的内容,但没有帮助我,所以我决定展示我是如何解决我的问题的。也许它会帮助你。
问题出在 zipline 的 benchmark.py 文件(和其他几个文件)中,它试图从 iex 获取数据并失败,因为它们的功能发生了变化。
我将向您展示我为运行示例代码所做的工作:
(我假设您已经安装了 zipline 并运行了苹果购买示例代码)
1.benchmark.py:查看计算机中的 zipline 文件夹(已下载或已安装的 pip/conda)。打开 benchmark.py(先找到它)并编辑它,将整个代码更改为:
import numpy as np
import pandas as pd
import pandas_datareader.data as pd_reader
def get_benchmark_returns(symbol, first_date, last_date):
data = pd_reader.DataReader(
symbol,
'yahoo',
first_date,
last_date
)
data = data['Close']
data[pd.Timestamp('2008-12-15')] = np.nan
data[pd.Timestamp('2009-08-11')] = np.nan
data[pd.Timestamp('2012-02-02')] = np.nan
data = data.fillna(method='ffill')
return data.sort_index().tz_localize('UTC').pct_change(1).iloc[1:]
Run Code Online (Sandbox Code Playgroud)
此代码取自 shlomikushchi github 页面关于该问题的答案。这里shlomikushchi将数据源从iex切换到了pandas,yahoo。
2.接下来,打开文件: loaders.py ,也在 zipline 的某个地方:
那里有一行调用函数:(在代码中查找)
数据 = get_benchmark_returns(符号
将其更改为:
data = get_benchmark_returns(symbol,first_date, last_date)
Run Code Online (Sandbox Code Playgroud)
3. 打开 trading.py ,也在 zipline 文件夹中的某处,在这一行之后:
class SimulationParameters(object):
def __init__(self, start_session, end_session,
trading_calendar,
capital_base=DEFAULT_CAPITAL_BASE,
emission_rate='daily',
data_frequency='daily',
arena='backtest'):
Run Code Online (Sandbox Code Playgroud)
输入这些行:
start_session = pd.Timestamp(start_session).tz_localize(tz='US/Central')
end_session = pd.Timestamp(end_session).tz_localize(tz='US/Central')
Run Code Online (Sandbox Code Playgroud)
现在当你在这里运行代码时它应该可以工作:
https://www.zipline.io/beginner-tutorial.html
| 归档时间: |
|
| 查看次数: |
5154 次 |
| 最近记录: |