我使用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)
我收到的错误消息是:
**JSONDecodeError: Expecting value: line 1 column 1 (char 0)**
这是错误的图片:
同样,当我尝试运行程序时会发生这种情况。
可能是什么问题?任何帮助,提示或建议都非常感谢!
TIA
附录:
我也尝试过这个:
https://docs.google.com/document/d/1mvZO_JDirbJNXJfM0bTS9uMipHE5cfSGFj0sUpJIcsw/edit?usp=sharing
最佳答案
我知道这个问题已经解决了,但是我尝试了他们在github问题上提供的内容,但并没有帮助我,所以我愿意向我展示如何解决我的问题。也许会对您有帮助。
问题出在zipline的Benchmark.py文件(以及其他几个文件)中,该文件尝试从iex获取数据,但由于其功能更改而失败。
我将向您展示我如何使示例代码运行:
(我假设您已经安装了zipline并运行Apple购买示例代码)
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:]
该代码取自有关此问题的shlomikushchi github page的答案。在这里shlomikushchi将数据源从iex切换到了Yahoo Pandas 。2.接下来,打开文件:loaders.py,同样在zipline中:
他们在其中调用函数:
(在代码中查找)
数据= get_benchmark_returns(符号
更改为:
data = get_benchmark_returns(symbol,first_date, last_date)
3.打开zipline文件夹中的某个位置的trading.py,在这行之后:
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'):
输入这些行:start_session = pd.Timestamp(start_session).tz_localize(tz='US/Central')
end_session = pd.Timestamp(end_session).tz_localize(tz='US/Central')
现在,当您在此处运行代码时,它应该可以工作:https://www.zipline.io/beginner-tutorial.html
关于python - 获取JSONDecodeError:期望值:使用Python + Zipline + Docker + Jupyter的第1行第1列(字符0),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56957791/