零基础搭建量化交易框架

本文介绍了如何选择Python作为量化交易语言的优势,推荐vn.py框架,并详细步骤搭建vn.py环境,包括环境配置、依赖管理及下载过程中遇到的readtimeout、AttributeError和MicrosoftVisualC++问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、程序语言选择

 二、量化交易的选择

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是国内顶级量化框架,截至目前发文GitHub上有19k星星。
  • vn.py是开源框架,不用担忧投资开发者的策略被泄露
  • 覆盖国内外所有交易品种的交易接口,国内股票、期货,海外市场,数字货币等等
  • 开箱即用的各类量化策略交易应用

vn.py简介 

vn.py是一套基于Python的开源量化交易系统开发框架,于2015年1月正式发布,在开源社区7年持续不断的贡献下一步步成长为全功能量化交易平台,目前国内外金融机构用户已经超过900家,包括:私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。

官方网站:VeighNa量化社区 - 你的开源社区量化交易平台

GitHub代码仓库:GitHub - vnpy/vnpy: 基于Python的开源量化交易平台开发框架

三、零基础搭建vn.py量化交易框架

环境准备:windows10、PyCharm

首先从Github代码仓库下载vn.py源码,点击Download ZIP,下载源码源码压缩包并解压。

 

 从jetbrains下载流行的Python编译器PyCharm

https://www.jetbrains.com/pycharm/

这里选择社区版安装就可以了。

 安装完毕之后选择open->选择vnpy解压的文件夹。

 

打开之后的源码是不能直接运行的,需要下载安装依赖。这里推荐使用conda来管理项目得依赖。

Miniconda — conda documentation

注意:由于Python在版本兼容性做得很差,所以在下载conda前先查看当前下载的vnpy版本支持的Python版本。

在源码的README.md查看支持的Python版本为3.7。

  

 下载对应版本的conda

下载安装完成之后需要配置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函数左边运行图标运行。 

 看到界面后环境搭建成功!

四、解决vn.py下载依赖过程出现的问题。

1.XX模块运行失败,有read time out红字

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

  • 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
  • 中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple
  • 豆瓣:http://pypi.douban.com/simple/
  • 阿里云:http://mirrors.aliyun.com/pypi/simple/

2.AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel' 

出现这个问题是vnpy安装PyQT5出现的问题,其它博主给的答案是安装PyQT5的工具包,

pip install PyQt5-tools

pip install -U setuptools==59.1.1

然而并不能解决问题。

解决方案是查看vnpy源码依赖的PyQT5版本支持的Python版本为3.7,故安装Python3.7版本,

安装低版本或高版本都有可能导致兼容性问题。

3.python pip error:Microsoft Visual C++ 14.0 or greater is required

出现这个问题是pip安装依赖时需要c++环境支持,下载并安装c++ 14以上版本

下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)

选择其他工具

 

### 关于量化交易系统的开发方法和技术 #### 1. 开发流程概述 构建一个成功的量化交易系统涉及多个阶段的工作,从概念验证到实际部署。这不仅涵盖了算法的设计与实现,还包括数据处理、回测以及风险管理等多个方面[^1]。 #### 2. 数据获取与预处理 高质量的数据对于任何有效的量化模型来说都是至关重要的。开发者通常会依赖第三方API接口来收集市场行情和其他相关信息;之后还需要对这些原始资料进行清洗、转换等一系列操作以适应后续计算需求。 #### 3. 策略研发 此环节主要围绕着如何创建能够稳定盈利的投资逻辑展开讨论。常见的做法是从历史价格走势中寻找规律并据此制定买卖信号触发条件。值得注意的是,在这个过程中应当充分考虑各种可能影响决策的因素,并尽可能减少主观判断成分的影响。 #### 4. 性能调优 为了使程序运行得更快更高效,可以采用多种手段来进行代码层面的改进工作。比如利用专门针对特定编程语言特性的编译器选项或是库函数替代自定义实现部分功能模块等措施都能有效提升整体效率[^2]。 #### 5. 风险控制机制建设 考虑到金融市场的不确定性特征非常明显,因此有必要建立一套完善的风险管理体系作为保障。具体而言就是设定止损位、仓位管理规则等内容确保即使遇到极端情况也能最大限度保护账户安全。 ```python def calculate_risk_adjusted_return(profit, risk_free_rate=0.02): """ 计算风险调整后的收益. 参数: profit (float): 实际获得的利润比例. risk_free_rate (float): 无风险利率,默认为2%. 返回: float: 调整后的收益率. """ adjusted_profit = (profit - risk_free_rate) / max(0.01, abs(risk_free_rate)) return round(adjusted_profit * 100, 2) ``` #### 6. 测试环境搭建 在正式上线之前务必经过严格的测试过程检验整个平台的功能性和稳定性。除了常规的压力测试外还应该特别关注边界条件下表现出来的异常状况是否能得到妥善解决。 #### 7. 持续集成/持续交付(CI/CD) 借助自动化工具链的支持可以让新版本迭代变得更加顺畅快捷。通过配置合适的脚本文件自动完成源码拉取、打包上传直至最终发布的一系列动作大大缩短了产品更新周期的同时也降低了人为失误的概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值