当我们得到一个新的买卖指标时,很想知道它是否能够帮我们赚钱?能赚多少钱?我能想到最好的办法就是用历史数据将这个指标验证一遍,以此获得该问题的答案。于是,我编写了一个非常简单的均线交易策略(可以把它看成买卖指标),我用“平安银行”和“比亚迪”近一年的日交易数据,分别验证了该策略的交易结果。
交易策略:
5日均线上穿15日均线,买入
5日均线下穿15日均线,卖出
回测数据:
平安银行(000001)
数据周期:日线周期
数据区间:2020年5月22~2021年5月18
买入信号:
日期 买入价格
2020-07-02 13.430000
2020-08-07 13.710000
2020-08-28 15.130000
2020-10-14 16.010000
2020-11-19 18.850000
2020-12-30 19.200001
2021-03-31 22.010000
2021-04-22 22.980000
卖出信号:
日期 卖出价格
2020-06-15 12.830000
2020-07-20 14.730000
2020-08-27 14.440000
2020-09-28 15.300000
2020-11-11 17.809999
2020-12-08 18.709999
2021-02-22 22.379999
2021-04-12 20.700001
盈亏统计:
日期 每股收益(元)
2020-07-20 1.299999
2020-08-27 0.730000
2020-09-28 0.170000
2020-11-11 1.799999
2020-12-08 -0.140001
2021-02-22 3.179998
2021-04-12 -1.309999
注意:回测数据来源雅虎财经,频繁运行程序会导致雅虎财经网站限流
修改以下代码用来更改回测标的
- # 获取股票交易代码为 000001.SZ 的数据
- self.data = web.DataReader('000001.sz', 'yahoo', start, end, session=session)
例如:回测标的换成“比亚迪”
- self.data = web.DataReader('002594.sz', 'yahoo', start, end, session=session)
回测结果:
买入信号:
日期 买入价格
2020-08-04 89.000000
2020-08-27 85.410004
2020-11-25 183.529999
2020-12-18 176.000000
2021-04-06 176.089996
2021-04-20 171.240005
卖出信号:
日期 卖出价格
2020-07-22 87.190002
2020-08-11 81.010002
2020-11-17 167.000000
2020-12-02 169.750000
2021-02-23 225.000000
2021-04-13 164.009995
2021-04-27 164.940002
盈亏统计:
日期 每股收益(元)
2020-08-11 -7.989998
2020-11-17 81.589996
2020-12-02 -13.779999
2021-02-23 49.000000
2021-04-13 -12.080002
2021-04-27 -6.300003
作者注释:
本例主要让大家直观感受量化交易中的“交易策略“和“策略回测”的概念,当然,这个是最简化的实现,没有考虑手续费,更没有优化策略,
但在此基础上,大家能迅速的修改出自己的策略,并回测该策略的盈亏数据,通过盈亏数据,不断完善自己的交易策略提高成功率也是十分的有趣的事情。