黄金阶梯策略详解

📑 目录
  1. 策略概述
  2. 策略原理
  3. 核心参数
  4. 做多/做空转换逻辑
  5. 买卖信号生成规则
  6. 绩效统计
  7. 策略特点
  8. 相关文件清单

黄金阶梯策略详解

策略概述

黄金阶梯策略是一种改进版的 SAR(抛物线)趋势跟踪策略,通过引入波动均值(vol_ma)和 ATR 动态调整机制,对传统 SAR 算法进行优化,实现更灵敏的趋势识别和止损设置。

核心代码位于 E:\钱龙\py\量化策略\黄金阶梯终稿.py,函数入口为 calculategoldenladder(df)


策略原理

1. 改进版 SAR 抛物线算法

传统 SAR 算法使用最高价和最低价的极值来追踪趋势,黄金阶梯策略在此基础上引入波动均值(vol_ma)作为动态边界:

# 计算波动均值
ranges = np.zeros(length)
for i in range(1, length):
    ranges[i] = max(high[i], close[i-1]) - min(low[i], close[i-1])
vol_ma = pd.Series(ranges).rolling(window=ma_period, min_periods=1).mean().values

波动均值计算的是每日振幅(当日最高价与前日收盘价的最大值 减去 当日最低价与前日收盘价的最小值)的移动平均,反映市场的真实波动水平。

2. 趋势跟踪与 ATR 动态止损

策略在 SAR 的基础上,使用 vol_ma 作为动态边界:

  • 做多趋势:SAR 起点 = 最低价 - volma * volmult,SAR 向上追踪
  • 做空趋势:SAR 起点 = 最高价 + volma * volmult,SAR 向下追踪

加速因子(AF)随趋势强化而递增,实现趋势加速跟踪:

if high[i] > last_ep_high:      # 创出新高
    ep_high = high[i]
    af = min(last_af + af_step, af_max)  # AF 递增,上限 af_max
else:
    af = last_af                  # AF 保持不变
sar = last_sar + af * (ep_high - last_sar)  # SAR 向上推进

核心参数

参数默认值说明
af_step0.10加速因子步长,每次创新高/新低时增加的量
af_max0.15加速因子最大值,限制 SAR 最大推进速度
ma_period20波动均值计算周期(交易日)
vol_mult1.0波动倍数,控制 SAR 与价格的偏移量

做多/做空转换逻辑

策略维护一个 trend 状态变量(1.0 表示做多,-1.0 表示做空):

做多转做空(多头止损)

if trend == 1.0:
    if close[i] < last_sar:  # 收盘价跌破 SAR 线
        trend = -1.0         # 转为做空
        sar = high[i] + vol_ma[i] * vol_mult  # 做空起点
        af, ep_low = af_step, low[i]          # 重置 AF 和极值

做空转做多(空头止损)

else:  # trend == -1.0
    if close[i] > last_sar:  # 收盘价突破 SAR 线
        trend = 1.0          # 转为做多
        sar = low[i] - vol_ma[i] * vol_mult  # 做多起点
        af, ep_high = af_step, high[i]       # 重置 AF 和极值

买卖信号生成规则

信号基于 SAR 支撑/压力线的消失来识别:

买入信号 - 压力线消失

if res_line[i] > 0 and res_line[i+1] == 0:
    signals[i+1] = 1  # 买入信号
  • 前一日存在压力线(做空状态)
  • 当日压力线消失(转为做多)
  • 表示空头趋势结束,多头趋势开始

卖出信号 - 支撑线消失

elif sup_line[i] > 0 and sup_line[i+1] == 0:
    signals[i+1] = -1  # 卖出信号
  • 前一日存在支撑线(做多状态)
  • 当日支撑线消失(转为做空)
  • 表示多头趋势结束,空头趋势开始

交易记录

策略记录每笔交易的买入/卖出日期、价格和收益率:

active_trade = {'buy_date': dates[i+1], 'buy_price': close[i+1]}
# ... 卖出时:
active_trade.update({
    'sell_date': dates[i+1],
    'sell_price': close[i+1],
    'profit_rate': (close[i+1] - active_trade['buy_price']) / active_trade['buy_price']
})

绩效统计

策略自动计算以下绩效指标:

指标说明
总交易次数完成的买卖交易笔数
总收益率所有交易收益率之和
平均收益率单笔交易平均收益率
胜率盈利交易占比
单笔最高收益最佳单笔交易收益率
单笔最大亏损最差单笔交易收益率

策略特点

  1. 趋势跟踪:在趋势明确时快速跟随,在震荡市中减少假信号
  2. 动态止损:基于波动率动态调整止损线,适应不同市场环境
  3. 双向交易:支持做多和做空双向操作
  4. 参数可调:核心参数可针对不同品种和周期优化

相关文件清单

Python 实现

文件路径说明
黄金阶梯.pyE:\钱龙\py\量化策略\黄金阶梯.py基础版本实现
黄金阶梯终稿.pyE:\钱龙\py\量化策略\黄金阶梯终稿.py最终版(含绩效统计)
黄金阶梯终稿统计.pyE:\钱龙\py\量化策略\黄金阶梯终稿统计.py统计回测版本
黄金阶梯终稿统计元宝.pyE:\钱龙\py\量化策略\黄金阶梯终稿统计元宝.py元宝大模型生成版
黄金阶梯绘图版.pyE:\钱龙\py\量化策略\黄金阶梯绘图版.py可视化版本,绘制 SAR 线和信号

Dart 手机版

文件路径说明
手机黄金阶梯glodenladderutils.dartE:\钱龙\py\量化策略\手机黄金阶梯glodenladderutils.dart手机端 Dart 实现

依赖工具

文件路径说明
method_all.pyE:\钱龙\py\method_all.pyMySQL 查询、数据获取工具
tool.pyE:\钱龙\py\tool.py数据库连接等基础工具