开篇
简单说一下为什么想写这个系列:
- 我个人对自动化交易比较感兴趣,他山之石,可以攻玉,搞清楚easyTrader,就搞清楚了市面上大部分自动交易方法。
- 实践是检验真理的唯一标准,一个无法实盘的量化交易系统,相当于一位纸上谈兵的将军。
- 网络上有很多成熟的组合,不管是量化还是非量化的,都可以通过程序实现follow(跟单)。
- 希望能实现自己的自动化交易系统,实现并扩展其功能。
项目概况
- 【Github地址】https://github.com/shidenggui/easytrader
- 【项目作者】食灯鬼
- 【项目简介】提供同花顺客户端/国金/华泰客户端/雪球的基金、股票自动程序化交易以及自动打新,支持跟踪 joinquant /ricequant 模拟交易 和 实盘雪球组合, 量化交易组件。
下载项目源码
下载easyTrader源码
git clone git@github.com:shidenggui/easytrader.git
可以看到,项目中第一层结构有很多文件及文件夹,而核心源码,其实是在easytrader
这个文件夹中,其他的都是各种项目配置文件及文档,所以,我们聚焦真正的源码文件夹easytrader
。
源码量
我们用VScode Counter
插件,统计下整个代码量。33个文件,31个Python源文件,2个JSON配置文件。纯代码2889行,注释620行,空行677行,代码量不算大,在可读范围内。
再来逐一看一下每个文件的代码量,纯代码大于100行的文件只有6个,其他的都小于100行,阅读难度不算太大。
源码目录
我们打开easytrader
文件夹看一下结构,使用tree
工具查看项目结构如下,我们先大致逐一解释下每个文件的用途,后边文章再每个详细分析。
├── config # 配置文件夹
│ ├── __init__.py # 子模块入口,空文件
│ ├── client.py # 定义各种不同客户端需要的常量
│ ├── global.json # 全局字段配置
│ └── xq.json # 雪球各种地址
├── utils # 工具文件夹
│ ├── __init__.py # 子模块入口,空文件
│ ├── captcha.py # 验证码识别
│ ├── misc.py # 数据格式转换
│ ├── perf.py # perf_clock函数装饰器
│ ├── stock.py # 股票相关辅助函数
│ └── win_gui.py # 输出pywinauto内的几个对象
├── __init__.py # 包入口文件,输出一些方法
├── api.py # 两个核心api:use和follower
├── clienttrader.py # 客户端交易基类
├── exceptions.py # 异常处理
├── follower.py # 跟单基类
├── gf_clienttrader.py # 广发客户端交易
├── gj_clienttrader.py # 国金客户端交易
├── grid_strategies.py # 网格策略
├── ht_clienttrader.py # 华泰客户端交易
├── htzq_clienttrader.py # 海通证券客户端交易
├── joinquant_follower.py # 聚宽跟单
├── log.py # 日志
├── pop_dialog_handler.py # 弹窗操控
├── refresh_strategies.py # 各种刷新策略
├── remoteclient.py # 远程客户端
├── ricequant_follower.py # 米筐跟单
├── server.py # 远程服务端
├── universal_clienttrader.py # 通用同花顺客户端交易
├── webtrader.py # 雪球web版
├── wk_clienttrader.py # 五矿客户端交易
├── xq_follower.py # 雪球跟单
├── xqtrader.py # 雪球模拟交易与实盘
└── yh_clienttrader.py # 银河客户端交易2 directories, 33 files
功能点总结
初步过了一遍每个文件,可以将功能总结为几个部分:
- 客户端自动化交易:
clienttrader.py
,gf_clienttrader.py
,gj_clienttrader.py
,ht_clienttrader.py
,htzq_clienttrader.py
,universal_clienttrader.py
,wk_clienttrader.py
,webtrader.py
,xqtrader.py
- 量化平台跟单:
follower.py
,joinquant_follower.py
,ricequant_follower.py
,xq_follower.py
- 远程部署:
server.py
,remoteclient.py
- 其他辅助功能:
config
,utils
,api.py
,exceptions.py
,log.py
,pop_dialog_handler.py
,refresh_strategies.py
,grid_strategies.py
结语
本篇基本梳理清楚了easyTrader的源码结构和功能,后面文章逐一分析各个部分。