当前位置:   article > 正文

pycharm 导入opencv anaconda3_Zipline+Pycharm 安装与配置

anaconda 安装时 return complexjson.loads(self.text, **kwargs)

v2-ded1cec020879a480d4dd518766d8da2_1440w.jpg?source=172ae18b

写这篇文章的目的:

量化交易的平台众多,从国外的Quantopian 到 国内的各种平台。 但对于刚入门的人来说,总是喜欢找到一种知根知底的offline的本地处理的方式。这样做的好处是特别灵活,同时不用被各种平台所限制。随心所欲的加上自己的算法,心情舒畅。

如果你也和我一样,那么就看下去吧。

我使用的平台 and 准备工作

操作系统:Win10 Python 环境:Anaconda Python 3.5 IDE:Pycharm 专业版(学生一年免费)

  1. 安装 Anaconda最新版本:https://www.anaconda.com/
  2. 安装Pycharm:https://www.jetbrains.com/pycharm/

用 Anaconda安装 Zipline

1.首先可以创建一个新的Python 环境。用于防止版本不兼容等问题同时方便环境管理。安装Anaconda最新版本后(我的是3.7),在开始搜索里找到你的Anaconda Promompt (Anaconda 3)。进入Anaconda Promompt 后,我们就可以用conda的脚本啦。

  1. 创建一个新的Python 3.5 的工作环境。由于Zipline现在只支持Python 3.5,所以需要创建一个3.5的环境。
conda create -n env_zipline python=3.5

2. 然后用activate 命令激活环境

activate env_zipline

3. 在你(env_zipline)环境中安装 Zipline

conda install -c Quantopian zipline

https://www.zipline.io/install.html 详情请参照官方原文.

下面会介绍在Pycharm中或者其他环境中运行Zipline的demo栗子中会遇到的问题。

问题1:如何导入Quandl数据

导入Quandl数据是我遇到的第一个问题。原因是官方给的方法不适合Win10且已经过时了。需要去quandl 去注册一个 账号,然后拿到你的token,来设置你的QUANDL_API_KEY 代替那串666。

  1. # 设置quandl的api key
  2. set QUANDL_API_KEY=66666666666666
  3. # 下载数据包
  4. zipline ingest -b quandl

有很多文章已经有详细说明,不赘述。参考引用文献 https://zhuanlan.zhihu.com/p/40565731

问题2:如何在Pycharm中使用Zipline

官方首先给出的是命令行的形式,如图一所示。但是我猜你一定不喜欢。

v2-733e1bfff062fa2d1c41ae6c1c69c36a_b.jpg
图1.命令行方式运行

你也可以用 IPython Notebook,但是我也不喜欢。。所以我们就要用Pycharm+Zipline,因为我觉得调试起来很方便,debug的环境我比较熟悉。buyapple.py 修改后的demo程序代码如下,可以直接在pyhcarm中运行。主要使用的是 Zipline 中的 run_algorithm函数。

  1. from zipline.api import order, record, symbol
  2. from zipline.finance import commission, slippage
  3. from zipline import run_algorithm
  4. import pandas as pd
  5. def initialize(context):
  6. context.asset = symbol('AAPL')
  7. context.set_commission(commission.PerShare(cost=.0075, min_trade_cost=1.0))
  8. context.set_slippage(slippage.VolumeShareSlippage())
  9. def handle_data(context, data):
  10. order(context.asset, 10)
  11. record(AAPL=data.current(context.asset, 'price'))
  12. def analyze(context=None, results=None):
  13. import matplotlib.pyplot as plt
  14. # Plot the portfolio and asset data.
  15. ax1 = plt.subplot(211)
  16. results.portfolio_value.plot(ax=ax1)
  17. ax1.set_ylabel('Portfolio value (USD)')
  18. ax2 = plt.subplot(212, sharex=ax1)
  19. results.AAPL.plot(ax=ax2)
  20. ax2.set_ylabel('AAPL price (USD)')
  21. # Show the plot.
  22. plt.gcf().set_size_inches(18, 8)
  23. plt.show()
  24. def _test_args():
  25. """Extra arguments to use when zipline's automated tests run this example.
  26. """
  27. import pandas as pd
  28. return {
  29. 'start': pd.Timestamp('2014-01-01', tz='utc'),
  30. 'end': pd.Timestamp('2014-11-01', tz='utc'),
  31. }
  32. if __name__ == '__main__':
  33. capital_base = 200000
  34. start = pd.to_datetime('2015-01-01').tz_localize('US/Eastern')
  35. end = pd.to_datetime('2016-01-01').tz_localize('US/Eastern')
  36. result = run_algorithm(start=start, end=end, initialize=initialize,
  37. capital_base=capital_base, handle_data=handle_data,
  38. bundle='quandl', analyze=analyze)

你以为都好了吗,没有。测试的时候会调用benchmarks.py的文件来计算策略对比的一个基准。在 benchmarks.py 中使用了一个从 IEX 网站下载数据的链接,然而这个链接从19年就过期了。彻底的解决办法参考问题3.

问题3:运行中 benchmarks.py 文件出错

错误入下所示。原因就是有一个SPY_benchmark.csv的文件需要从IEX的数据网站上下载,然而源码中的链接早已经不再支持。解决方法很多,比如可以在下载一个SPY_benchmark.csv放入对应的位置,文件可以在zipline的github中的resource文件夹中找到。我的放入位置为:C:UsersPro.ziplinedata,大家找到自己的对应位置即可。

下面给出一个相对正式的解决放法。

  1. Traceback (most recent call last):
  2. File "C:/Users/Pro/PycharmProjects/zipline_test/Buy_apple.py", line 62, in <module>
  3. bundle='quandl', analyze=analyze)
  4. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplineutilsrun_algo.py", line 430, in run_algorithm
  5. blotter=blotter,
  6. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplineutilsrun_algo.py", line 159, in _run
  7. trading_days=trading_calendar.schedule[start:end].index,
  8. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplinefinancetrading.py", line 103, in __init__
  9. self.bm_symbol,
  10. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplinedataloader.py", line 149, in load_market_data
  11. environ,
  12. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplinedataloader.py", line 216, in ensure_benchmark_data
  13. data = get_benchmark_returns(symbol)
  14. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesziplinedatabenchmarks.py", line 39, in get_benchmark_returns
  15. data = r.json()
  16. File "C:UsersProAnaconda3envsenv_ziplinelibsite-packagesrequestsmodels.py", line 897, in json
  17. return complexjson.loads(self.text, **kwargs)
  18. File "C:UsersProAnaconda3envsenv_ziplinelibjson__init__.py", line 319, in loads
  19. return _default_decoder.decode(s)
  20. File "C:UsersProAnaconda3envsenv_ziplinelibjsondecoder.py", line 339, in decode
  21. obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  22. File "C:UsersProAnaconda3envsenv_ziplinelibjsondecoder.py", line 357, in raw_decode
  23. raise JSONDecodeError("Expecting value", s, err.value) from None
  24. json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

首先在IEX 网站上注册 https://iexcloud.io/ 得到你的个人的token。然后在 benchmarks.py的源文件中找到 request.get().如下图所示:

v2-3350166f30c129e235e58488d03f3055_b.jpg
图2.benchmarks.py修改代码

用你的token代替 pk_numbersnumbersnumbers。

  1. token = 'pk_numbersnumbersnumbers'
  2. r = requests.get(
  3. 'https://cloud.iexapis.com/stable/stock/{}/chart/5y?token={}'.format(symbol, token)
  4. )

详情请参见:https://github.com/quantopian/zipline/issues/2480

结束语

运行结果如下图所示

v2-1b9f2d018df69469b589ea8f731dc872_b.jpg
图3.运行结果

大家可以跑自己黑科技算法去做量化交易啦。接下来准备把框架的源程序看熟。我们一步步慢慢来。然后加上tushare的数据尝试做A股的数据分析。

最后我在我的github中上传了最后运行的文件:

https://github.com/szy1900/Zipline-Demo-Code-Run-in-Pycharm​github.com

引用资料

https://www. zipline.io/beginner-tut orial.html#running-the-algorithm https:// github.com/quantopian/z ipline/issues/2480 https:// groups.google.com/forum /#!topic/zipline/X48PVjvbpFU https:// zhuanlan.zhihu.com/p/84 779129 https:// zhuanlan.zhihu.com/p/40 565731
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/773206
推荐阅读
相关标签
  

闽ICP备14008679号