我使用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)**

这是错误的图片:
python - 获取JSONDecodeError:期望值:使用Python + Zipline + Docker + Jupyter的第1行第1列(字符0)-LMLPHP

同样,当我尝试运行程序时会发生这种情况。

可能是什么问题?任何帮助,提示或建议都非常感谢!

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/

10-10 15:23