双平滑随机指数布雷瑟策略

Author: ChaoZhang, Date: 2024-02-05 15:57:37
Tags:

双平滑随机指数布雷瑟策略

概述

双平滑随机指数布雷瑟策略(Double Smoothed Stochastic Bressert Strategy)是由William Blau设计的一种量化交易策略。它试图将移动平均方法与振荡器原理相结合。

该策略通过计算一系列双平滑随机指数来产生交易信号。具体来说,它首先计算价格的平滑随机指数,然后对该随机指数再次应用平滑平均,得到“双平滑随机指数”。当触发线穿越双平滑随机指数时,产生买入或卖出信号。

策略原理

  1. 计算价格的PDS周期平滑随机指数xPreCalc
  2. 对xPreCalc应用长度为EMAlen的指数移动平均,得到xDSS,即“双平滑随机指数”
  3. 计算触发线xTrigger,它是xDSS的另一个EMA均线
  4. 生成交易信号:
    • 当xTrigger低于xDSS且低于超卖线时,做多
    • 当xTrigger高于xDSS且高于超买线时,做空
  5. 绘制双平滑随机指数xDSS和触发线xTrigger的曲线

优势分析

该策略结合了移动平均线的趋势跟随能力和随机指数的超买超卖识别能力。主要优势如下:

  1. 双层平滑过滤假信号,提高稳定性
  2. 触发线生成交易信号,避免频繁交易
  3. 可自定义参数,适应不同市场环境
  4. 图形直观,易于掌握和验证策略

风险分析

双平滑随机指数布雷瑟策略也存在一些风险:

  1. 布雷瑟指标在低波动行情下存在较多的假信号
  2. 双重平滑可能导致信号滞后,错过价格转折点
  3. 参数的不当设置可能无法识别趋势中枢
  4. 交易博弈风险仍然存在

对策:

  1. 优化参数,提高识别准确率
  2. 结合其他指标过滤信号
  3. 增加仓位管理手段规避风险

优化方向

该策略还可以从以下几个方面进行优化:

  1. 调整双平滑指数的周期参数,优化平滑效果
  2. 添加止损机制,控制单笔损失
  3. 增加趋势判断指标,避免反向操作
  4. 结合仓位管理手段,让获利空间最大化

总结

双平滑随机指数布雷瑟策略融合了移动平均线和随机指数的优点,具有识别超买超卖点和跟随趋势的能力。通过双重平滑和触发线设定,可有效过滤噪声信号。但仍需注意参数优化与风险控制,方能在实盘中获得稳定收益。


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/04/2017
// Double Smoothed Stochastics (DSS) is designed by William Blaw. 
// It attempts to combine moving average methods with oscillator principles. 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="DSS Bressert (Double Smoothed Stochastic)", shorttitle="DSS Bressert")
PDS = input(10, minval=1)
EMAlen = input(9, minval=1)
TriggerLen = input(5, minval=1)
Overbought = input(80, minval=1)
Oversold = input(20, minval=1)
reverse = input(false, title="Trade reverse")
hline(Overbought, color=green, linestyle=line)
hline(Oversold, color=red, linestyle=line)
xPreCalc = ema(stoch(close, high, low, PDS), EMAlen)
xDSS = ema(stoch(xPreCalc, xPreCalc, xPreCalc, PDS), EMAlen)
//xDSS = stoch(xPreCalc, xPreCalc, xPreCalc, PDS)
xTrigger = ema(xDSS, TriggerLen)
pos = iff(xTrigger < xDSS and xTrigger < Oversold, -1,
	     iff(xTrigger > xDSS and xTrigger > Overbought, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xDSS, color=blue, title="DSS")
plot(xTrigger, color=red, title="Trigger")

更多内容