目录
前言
一、程序语言选择
二、量化交易的选择
vn.py简介
三、零基础搭建vn.py量化交易框架
四、解决vn.py下载依赖过程出现的问题。
1.XX模块运行失败,有read time out红字
2.AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'
3.python pip error:Microsoft Visual C++ 14.0 or greater is required
量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。
最近在研究量化交易,把近一个月的学习研究经验与心得分享给大家。
以下是量化交易的基本组成部分
熟话说女怕嫁错郎,男怕入错行。选择一门合适的编程语言,将大大提高你的开发效率和成功率。
选择Python作为量化交易的主要语言有以下几个方面优势:
正如Java语言离不开Spring框架,选择一个好的框架,也将大大提高开发者的效率。
一个好的框架已经帮开发者实现了底层代码,而开发这只需关注量化的核心部分风控、数据分析、策略交易。
目前国内的量化交易框架有:vn.py、TuShare(数据服务)、AKShare(数据服务)、聚宽(web)等等。
其中笔者认为选择vn.py是最为合适的框架:
vn.py是一套基于Python的开源量化交易系统开发框架,于2015年1月正式发布,在开源社区7年持续不断的贡献下一步步成长为全功能量化交易平台,目前国内外金融机构用户已经超过900家,包括:私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。
官方网站:VeighNa量化社区 - 你的开源社区量化交易平台
GitHub代码仓库:GitHub - vnpy/vnpy: 基于Python的开源量化交易平台开发框架
环境准备:windows10、PyCharm
首先从Github代码仓库下载vn.py源码,点击Download ZIP,下载源码源码压缩包并解压。
从jetbrains下载流行的Python编译器PyCharm
https://www.jetbrains.com/pycharm/
这里选择社区版安装就可以了。
打开之后的源码是不能直接运行的,需要下载安装依赖。这里推荐使用conda来管理项目得依赖。
Miniconda — conda documentation
注意:由于Python在版本兼容性做得很差,所以在下载conda前先查看当前下载的vnpy版本支持的Python版本。
在源码的README.md查看支持的Python版本为3.7。
下载安装完成之后需要配置conda环境变量
首先右键此电脑->属性->高级系统->高级在系统变量选中Path点击编辑->新建
将conda安装路径的三个目录添加进去。
G:\conda为笔者安装conda的根目录。
G:\conda
G:\conda\Scripts
G:\conda\Library\bin
配置好之后回到Pycharm点击Termial(终端)选项,输入以下命令:
conda -V
显示出版本号则说明环境配置成功。
接着安装vnpy源码依赖,首先输入以下命令创建conda环境:
conda create -n vnpy_master python=3.7
The following NEW packages will be INSTALLED:
ca-certificates pkgs/main/win-64::ca-certificates-2022.07.19-haa95532_0
certifi pkgs/main/win-64::certifi-2022.6.15-py37haa95532_0
openssl pkgs/main/win-64::openssl-1.1.1q-h2bbff1b_0
pip pkgs/main/win-64::pip-22.1.2-py37haa95532_0
python pkgs/main/win-64::python-3.7.13-h6244533_0
setuptools pkgs/main/win-64::setuptools-61.2.0-py37haa95532_0
sqlite pkgs/main/win-64::sqlite-3.39.2-h2bbff1b_0
vc pkgs/main/win-64::vc-14.2-h21ff451_1
vs2015_runtime pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
wincertstore pkgs/main/win-64::wincertstore-0.2-py37haa95532_2
Proceed ([y]/n)? y
输入命令之后会列举需要安装的环境包,会询问是否执行Proceed ([y]/n)? ,输入y后继续安装。
都安装完成之后需要激活conda环境
conda.bat activate vnpy_master
接着就是安装vnpy的依赖包:
python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
依赖都安装完毕之后需要在Pycharm使用conda环境
按ctrl+alt+s打开设置,找到Project ->Python interpretor点击设置->Add
选择创建的conda环境确定之后就能使用依赖了。
新建run.py文件输入以下代码:
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy.gateway.ctp import CtpGateway
from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.cta_backtester import CtaBacktesterApp
def main():
"""Start VN Trader"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_engine.add_app(CtaBacktesterApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
点击main函数左边运行图标运行。
ERROR: Exception:
Traceback (most recent call last):
File "G:\programfile\lib\site-packages\pip\_vendor\urllib3\response.py", line 435, in _error_catcher
yield
File "G:\programfile\lib\site-packages\pip\_vendor\urllib3\response.py", line 516, in read
data = self._fp.read(amt) if not fp_closed else b""
File "G:\programfile\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 90, in read
data = self.__fp.read(amt)
File "G:\programfile\lib\http\client.py", line 447, in read
n = self.readinto(b)
File "G:\programfile\lib\http\client.py", line 491, in readinto
n = self.fp.readinto(b)
File "G:\programfile\lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "G:\programfile\lib\ssl.py", line 1049, in recv_into
return self.read(nbytes, buffer)
File "G:\programfile\lib\ssl.py", line 908, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out
此类问题一般是网络问题,如在下载依赖时没有加国内镜像,那么会默认去Python官网下载,由于官网是国外网络故会出现超时。
解决方法:在pip下载命令加国内镜像
-i https://pypi.tuna.tsinghua.edu.cn/simple
出现这个问题是vnpy安装PyQT5出现的问题,其它博主给的答案是安装PyQT5的工具包,
pip install PyQt5-tools
pip install -U setuptools==59.1.1
然而并不能解决问题。
解决方案是查看vnpy源码依赖的PyQT5版本支持的Python版本为3.7,故安装Python3.7版本,
安装低版本或高版本都有可能导致兼容性问题。
出现这个问题是pip安装依赖时需要c++环境支持,下载并安装c++ 14以上版本
下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)
选择其他工具