文章目录
形成自己的交易体系,打造属于自己的交易系统。不问得失,但求究竟。
量化交易研究,可以从backtrader、vnpy和qstock这三个框架起步,其它框架大同小异。实盘则可以选择QMT或PTrade。
backtrader、vnpy、vectorbt、hikyuu、wondertrader、quantconnect
回测基本编程模型:
df = get_data('股票代码', start_date, end_date, ...) ## 获得行情历史数据
data = df.copy()
strategy = MyStrategy(data, 策略参数, ...) ## 构造策略
start_backtest(strategy) ## 运行回测
## 显示回测结果
引子
发家致富不能指望靠炒股,但股市不可不研究,研究多一点总比盲目买卖为好。
人工盯盘太累人,有个机器人帮你炒股岂不更好?
股价变动难以预测,但绝不是随机的和杂乱无章的,它是有规律的。只是影响股价的因子比较多,常人最多只能了解十之六七。十之六七已足矣定胜负了,常胜固不可有,但提高胜率是可以的。所以我们做量化就是不断逼近真理。
沪深市场共上市7146只股票,其中深市有4617只,沪市有2529只。从行业分布来看,深市以商业、信息科技行业的股票为主,沪市的行业主要集中于工业和金融服务领域。
美股一共11621只股票,主要是三家交易所:纽约证券交易所(NYSE)(大约3459家),美国证券交易所(大约1061家),纳斯达克证券市场(Nasdaq)(大约3159家)。美股实现T+0交易,最小买卖单位为1股,貌似更适合做量化。
炒股软件主要分为行情和交易两大类。排名前列的炒股软件:经传多赢、同花顺、新浪财经、东方财富、大智慧、指南针。
量化交易不等同于程序化交易,量化的核心是策略。自动交易只是量化交易的一小部分。
要做量化交易,主要解决三大问题:
- 获得行情数据
- 编写策略
- 自动交易
常用库:matplotlib、numpy、pandas、Ta-Lib
从哪里获得行情数据?
- 同花顺。大名鼎鼎的易峥创办的核心软件,问财。
- 网站。网易财经, 还有雪球,东方财富等很多证券网站都能拿到数据,但这些不是API接口,需要用爬虫
- 券商。但券商也不会直接提供API。例如富途牛牛API。在国金证券开个户,轻松获取行情数据。
- 华泰的金融数据下载器, https://findata-insight.htsc.com:9151/help/terminal/download/, 需要先申请一个金融数据下载器账号,登陆后金融数据下载器提供了多类数据的查询和下载。分为日度历史行情数据和股票数据集两大类数据。
- 数据公司。如通达信股票接口,可以做股票交易API接口,对接各大卷商。还有Tushare大数据,Tushare不是普通炒股者用的软件,而是为那些有兴趣做股票期货数据分析的人提供pandas矩阵数据的工具
- 聚宽
- JQData是聚宽数据团队专门为金融机构、学术团体和量化研究者们提供的本地量化金融数据服务。使用JQData,可快速查看和计算金融数据,无障碍解决本地、Web、金融终端调用数据的需求。历经5年沉淀,40万宽客及数3500家知名量化机构投研交易验证。使用上,JQData适用Windows、Mac、Linux多种操作系统,支持python2、python3和以及任意编程语言。数据通过简洁的API方式提供,pip即可直接安装使用,挣脱使用束缚,实现更多场景。只需三行代码,即可随取随用~
- 查看JQData使用文档
- Github。好心人下载好的数据,网盘上获取。数据库下载地址如下:
- 股票基础信息,链接:https://pan.baidu.com/s/1qZJIy8s,61e3
- 2000年到2018年历史Json源数据,链接:https://pan.baidu.com/s/1jIY70bG,cmpw
- 2000年到2018年日历史数据Sqlite文件,链接:https://pan.baidu.com/s/1eTxcjdC,ujbn
- 三个常用的库:akshare、baostock以及tushare库
- 聚宽的JQdata免费用,所有的数据都可以用,但是只能半年,半年后续费,3000元+/年,小贵,不过可以获得他的因子库,未来考虑吧
- tushare也是免费,但是只限于少量api接口,大部分有用的必须充值会员,200元档基本够用,500元就是vip无限制了,1000元可以入高级群,呵呵
- 不考虑在线服务了,太难用。尝试了优矿,很难用;估计米筐、聚宽的在线版也好不了哪去;且,这几家都不再搞个人宽客方向了,都给机构服务去了;米筐连社区都关了。
常用库
TA-Lib技术分析库
TA-Lib(Technical Analysis Library, 即技术分析库)是Python金融量化的高级库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MACD、RSI、KDJ、动量指标、布林带等。
- 趋势分析: 通过计算趋势指标,如移动平均线、布林带、MACD等,可以帮助交易者识别市场趋势,判断价格走势。
- 震荡分析: 通过计算震荡指标,如相对强弱指标(RSI)、随机震荡指标(Stochastic Oscillator)等,可以帮助交易者识别市场超买超卖区域,寻找交易机会。
- 成交量分析: 通过计算成交量指标,如成交量、成交量加权平均价格(VWAP)等,可以帮助交易者了解市场参与度,判断市场情绪。
- 动量分析: 通过计算动量指标,如动量指标(Momentum)、相对强弱指标(RSI)等,可以帮助交易者识别市场动量,判断价格变化的速度和幅度。
- 波动率分析: 通过计算波动率指标,如平均真实范围(ATR)、布林带等,可以帮助交易者了解市场波动情况,评估风险水平。
安装过程如下:
cd ta-lib && ./configure --prefix=/usr/local/talib && make && make install
export TA_LIBRARY_PATH=/usr/local/talib/lib
export TA_INCLUDE_PATH=/usr/local/talib/include
pip install ta-lib
我们完全可以只依赖ta-lib库和券商的订单API就能完成基本的量化系统。
ta-lib常用函数:
根据pandas数据计算各个指标:
import pandas as pd
import talib
import numpy as np
## SMA
talib.SMA(df['close'], timeperiod=10)
df['ma10']=talib.MA(df['close'], timeperiod=10, matype=0) # matype: 0代表SMA,1代表EMA,2代表WMA
## MACD
dif, dea, bar = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
## KDJ,通过该函数计算出K、D的值,然后通过K、D计算出J值,具体的计算方式如下:
df['K'], df['D'] = talib.STOCH(df['high'].values, df['low'].values, df['close'].values, fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
df['K'].fillna(0,inplace=True)
df['D'].fillna(0,inplace=True)
df['J']=3*df['K']-2*df['D']
empyrical
Quantopian开源的常见金融风险指标lib库,会调用pandas_datareader从yahoo或google获取股票数据
股票数据
-
技术面:均线、 资金流入、 MACD、 KDJ、 RSI、 BOLL、 CCI、 BIAS、 WR、 MTM
-
行情面:涨跌幅、 DDE大单净量、 DDE大单净额、 委比、 振幅、 换手率、 成交量、 成交额、 股价、 分时指标、 强势股
-
基本面:总股本、总市值、 流通市值、 流通比例、 十大股东持股比例、 股东户数、 户均持股数、 增减持、 机构持股、 分红、 上市天数
-
财务面:销售毛利率 市盈率 市净率 市销率 净利润增长率 营业收入增长率 每股收益 每