代码解析_vnpy源代码解析

继续对vnpy的代码解析

vnpy中用peewee作为数据库的ORM,也就是一个和数据的mapping,这样调用访问数据会更有秩序而不是到处都是sql语句,这和java中的hibernate之类很类似。

vnpy因为越做越大的关系,但其实对于新手,往往开始不一定需要这样一个把所有数据库类型都兼容,也不一定需要那么的券商实盘接口,因为往往也就在一家券商开实盘和读行情,甚至也不一定需要多种品种,股票期货数字货币vnpy都支持了,但很多早期学习者可能只需要了解一个品种就够了,了解整体的逻辑再加其他品种也不迟。

既然如此,说明vnpy的解读其实是可以从减法来入手的,也就是思考一个问题,如何把vnpy裁剪为最简化的一个版本,够用就好。首先看数据库兼容,假设就只支持一种数据库mysql,那么在trader目录下有一个database目录,保留database.py(一个抽象类)和databasesql.py(sql数据库包括mysql,sqlite等),那么database_mongo.py就可以减掉了。如果初期也不考虑回测精度,就去掉分钟线回测,就保留个日线回测跑通即可,后期需要做高频策略的时候再加分钟线和tick

上个图吧

1b422b0bedde6372499add068a317a74.png

vnpy2.0之后应该是重构了,结构更清晰了

  1. 核心的交易代码在trader包里,app.py是 实现链接各application的类,constant是常量定义,engine.py是引擎的基类,gateway.py是链接各个 api接口的基类, rqdata.py(因为vnpy应该是和rqdata深度合作了,所以vnpy基本只有这一个数据源了)
  2. trader下有个ui目录,这里是 界面显示 的一些基类,包括各种单元格,列表等,从这里看得出vnpy在显示方面是很克制的,虽然外部有很多很丰富的图表,显示k线,显示回测结果,但是vnpy还是 坚持用最原生的QtWidget来做显示,包括在根目录下有个chart目录,是用qtwidget做了一个k线图,真不容易,小小一个k线图,要考虑的实现细节还是很多的
  3. api目录是 各种市场的api接口,所以里边有很多是.c结尾的头文件和dll,vnpy等于把这些都封装了,确实为广大量化从业人员节省了很多时间
  4. app,这个是非常重要的目录,实际上 如果把vnpy抽象为多层结构,那么api是在底层,链接交易市场,trader在api之上,封装了量化交易核心代码, app在trader之上,封装了应用,包括algotrading(算法交易,比如大单拆分算法等), cta_backtester(cta回测), data_manager(这个可以看到本地数据的完整度,也蛮实用的), option_master(期权部分), risk_manager(风险控制), spread_trading(价差交易)

对比了 市场多个开源的量化交易系统,vnpy的确是 架构设计上最为精炼简洁的,目录层级很清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值