基于线段中枢震荡的策略


声明:回测结果不代表实盘运行效果,展示的策略示例只适合学习,不可直接用于实盘交易

策略文件:src/chanlun/strategy/strategy_futures_xd_zs.py

策略介绍

基于线段的中枢维持策略,在线段中枢上方做空,线段中枢下方做多。

开仓策略:

开仓策略严格一些,减少交易策略,尽量提升胜率与稳定性

在线段中枢下方,当前价格小于中枢低点(ZD),向下线段完成,笔不创向下线段底特征序列分型第三特征的低点,买入做多
在线段中枢上方,当前价格大于中枢高点(ZG),向上线段完成,笔不创向上线段顶特征序列分型第三特征的高点,卖出做空

平仓策略:

平仓条件适当宽松一些,可以用笔来判断
1. 买入做多,向上线段完成,退出平仓
2. 买入做空,向下线段完成,退出平仓
3. 买入做多,价格大于中枢低点,向上笔出现盘整/趋势背驰,或者任意卖点,退出平仓
4. 买入做空,价格小于中枢高点,向下笔出现盘整/趋势背驰,或者任意买点,退出平仓
6. 买入做多,价格大于中枢高点,向上笔出现笔背驰,退出平仓
6. 买入做空,价格小于中枢低点,向下笔出现笔背驰,退出平仓

策略回测结果

回测市场:期货

回测时间:2020-01-01 / 2022-08-01

回测周期:5分钟

回测标的:

'SHFE.RB', 'SHFE.FU', 'SHFE.HC', 'SHFE.BU', 'SHFE.SP',
'CZCE.TA', 'CZCE.MA', 'CZCE.SA', 'CZCE.CF', 'CZCE.FG', 'CZCE.RM', 'CZCE.SF', 'CZCE.SM', 'CZCE.AP',
'DCE.V', 'DCE.P', 'DCE.Y', 'DCE.M', 'DCE.I', 'DCE.EG', 'DCE.PP', 'DCE.L', 'DCE.C', 'DCE.EB'

回测配置如下:

    bt_config = {
        # 策略结果保存的文件
        'save_file': './data/bk/strategy_futures_xd_zs_signal.pkl',
        # 设置策略对象
        'strategy': StrategyFuturesXDZS(),
        # 回测模式:signal 信号模式,固定金额开仓; trade 交易模式,按照实际金额开仓
        'mode': 'signal',
        # 市场配置,currency 数字货币  a 沪深  hk  港股  futures  期货
        'market': 'futures',
        # 基准代码,用于获取回测的时间列表
        'base_code': 'SHFE.rb',
        # 回测的标的代码
        'codes': [
            'SHFE.RB', 'SHFE.FU', 'SHFE.HC', 'SHFE.BU', 'SHFE.SP',
            'CZCE.TA', 'CZCE.MA', 'CZCE.SA', 'CZCE.CF', 'CZCE.FG', 'CZCE.RM', 'CZCE.SF', 'CZCE.SM', 'CZCE.AP',
            'DCE.V', 'DCE.P', 'DCE.Y', 'DCE.M', 'DCE.I', 'DCE.EG', 'DCE.PP', 'DCE.L', 'DCE.C', 'DCE.EB'
        ],
        # 回测的周期,这里设置里,在策略中才能取到对应周期的数据
        'frequencys': ['5m'],
        # 回测开始的时间
        'start_datetime': '2020-01-01 00:00:00',
        # 回测的结束时间
        'end_datetime': '2022-08-01 00:00:00',
        # 是否是股票,True 当日开仓不可平仓,False 当日开当日可平
        'is_stock': False,
        # 是否是期货,True 可做空,False 不可做空
        'is_futures': True,
        # mode 为 trade 生效,初始账户资金
        'init_balance': 1000000,
        # mode 为 trade 生效,交易手续费率
        'fee_rate': 0.0001,
        # mode 为 trade 生效,最大持仓数量(分仓)
        'max_pos': 4,
        # 缠论计算的配置,详见缠论配置说明
        'cl_config': {
            'CL_BI_FX_STRICT': True,
            'fx_bh': 'fx_bh_no', 'fx_qj': 'fx_qj_k',
            'bi_type': 'bi_type_old', 'bi_bzh': 'bi_bzh_yes', 'bi_qj': 'bi_qj_dd', 'bi_fx_cgd': 'bi_fx_cgd_no',
            'xd_bzh': 'xd_bzh_yes', 'zsd_bzh': 'zsd_bzh_yes', 'xd_qj': 'xd_qj_dd', 'zsd_qj': 'zsd_qj_dd',
            'zs_bi_type': ['zs_type_dn', 'zs_type_bz', 'zs_type_fx'], 'zs_xd_type': ['zs_type_bz'],
            'zs_wzgx': 'zs_wzgx_zggdd', 'zs_qj': 'zs_qj_ck'
        },
    }

信号回测模式下,结果如下:

信号模式下,没有当前资金余额等数据,所有开仓指令,开仓金额固定为 10万 元,无期货杠杆倍数

净盈利从 0 开始,经过每笔交易盈亏,进行累加后得出

期货线段中枢震荡策略-表格

期货线段中枢震荡策略-图标

交易回测模式下,结果如下:

交易模式下,根据给定的初始资金 与 最大仓位数,决定每次开仓的金额

例如初始资金 100万,最大开仓 4,每笔开仓金额为 100万 / 4 = 25万

如后续盈利到 120万,当前已经有 2 笔持仓,占用资金 50万,余额 70万,后续一笔的开仓金额为 :70 / (4 - 2) = 35万

如当前持仓 RB/FU/HC/TA 四个仓位,已经达到设定的仓位数量,策略后续的开仓信号将会被忽略

期货线段中枢震荡策略-表格

期货线段中枢震荡策略-图标