大数据测试 量化交易回测

Kevin.zhao · 2022年05月06日 · 最后由 Kevin.zhao 回复于 2022年05月06日 · 5158 次阅读

我们如何测试一种交易策略是否有效,这就需要回测
回测是一种用于建模的术语,用于指历史数据的预测模型。回测是一种反向测试,以及应用于前一时间段的特殊类型的交叉验证 (百度的)。
主要策略 KDJ 和 MACD ,金叉 (DIFF 从下方穿过 DEA ) 买,死叉 (DIFF 从上方穿过 DEA) 卖
KDJ 策略不稳定,假信号多,而且会有钝化。
后面的策略就以 MACD 为主
MACD 称为异同移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线 DIF,再用 2×(快线 DIF-DIF 的 9 日加权移动均线 DEA)得到 MACD 柱。MACD 的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。MACD 的变化代表着市场趋势的变化,不同 K 线级别的 MACD 代表当前级别周期中的买卖趋势(百度的)。
1.MACD 公式
初始值
EMA_12 = EMA_26 = DEA = 第一天的收盘价
但是有些股票发行很久了,总不可能好几年的数据全部都算一遍,我们就可以在你要算的日期前面加上 26X5 天,取前 130 天的收盘价。
EMA_12 = (EMA_12(前一天的 EMA_12)*11/13) + (今天的收盘价)*2/13)
EMA_26 = (EMA_26(前一天的 EMA_26)*25/27) + (今天的收盘价)*2/27)
DIFF = EMA_12 - EMA_26
DEA = (DEA*8/10) + (DIFF*2/10)
MACD = DIFF - DEA
2.水上和水下
一般称为 0 轴上方,和 0 轴下方,也有人称为水上和水下
水上金叉

水下金叉

3.回测
首先我们要先根据每天的收盘价算出每天的 MACD 值

EMA_12 = EMA_26 = DEA = float(price_stock_list[0][2])
for i in range(0, l):
    DIFF = 0
    EMA_12 = (EMA_12*11/13) + (float(price_stock_list[i][2])*2/13)
    EMA_26 = (EMA_26*25/27) + (float(price_stock_list[i][2])*2/27)
    DIFF = EMA_12 - EMA_26
    DEA = (DEA*8/10) + (DIFF*2/10)

再制定买入和卖出的规则

if DIFF_1 < DEA_1 and DIFF > DEA:  #金叉买入
if DIFF_1 < DEA_1 and DIFF > DEA and float(closing_price) > MA_10: #金叉,并且金叉形成的收盘价大于10日均线,买入
if DIFF_1 < DEA_1 and DIFF > DEA and DIFF >0: #在0轴上方,金叉买入
if (DIFF_1 > DEA_1 and DIFF < DEA) : #死叉卖
if (DIFF_1 > DEA_1 and DIFF < DEA) or (DIFF_3>DIFF_2 > DIFF_1> DIFF): #死叉或者DIFF的值连续3天下跌卖出
shares_list =[
{"name":"比亚迪","code":"sz002594"},{"name":"酒鬼酒","code":"sz000799"},
{"name":"恩捷股份","code":"sz002812"},{"name":"爱尔眼科","code":"sz300015"},
{"name":"药明康德","code":"sh603259"},{"name":"圣邦股份","code":"sz300661"},
{"name":"长春新高","code":"sz000661"},{"name":"博腾股份","code":"sz300363"},{"name":"迈瑞医疗","code":"sz300760"}]

典形方案:10W 本金,最高持有 5 支,320 个交易日 最高总资产 149376
交易结束后收益:

在水上交易:10W 本金,最高持有 5 支,320 个交易日 最高总资产 112264.0
交易结束后收益:

结论:1.典形的金叉买入死叉卖策略,收益最高,但是熊来了跑不掉,不能规避风险
2.在 0 轴上方交易,能有效躲闭熊市风险,但是牛市收益没有典形策略收益高。

共收到 3 条回复 时间 点赞

不明觉厉。

话说怎么结论看起来不像是测试结论,是这种量化交易的测试结论就是这样子的么?

陈恒捷 回复

我写没有系统的做过量化交易的测试,就是自己写着玩的

4楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册