The Dual Smoothed Stochastic Bressert strategy is designed by William Blau. It attempts to combine moving average methods with oscillator principles.
The strategy generates trading signals by calculating a series of dual smoothed stochastic indices. Specifically, it first calculates the smoothed stochastic index of prices, and then applies a smooth average to this stochastic index again to obtain the “dual smoothed stochastic index”. When the trigger line crosses the dual smoothed stochastic index, buy or sell signals are generated.
The strategy combines the trend following capability of moving averages and the overbought/oversold identification capability of stochastic indices. The main advantages are:
The Dual Smoothed Stochastic Bressert Strategy also has some risks:
Countermeasures:
The strategy can also be optimized in the following aspects:
The Dual Smoothed Stochastic Bressert Strategy combines the advantages of moving averages and stochastic indices for identifying overbought/oversold points and following trends. Setting up dual smoothing and trigger lines can effectively filter out noisy signals. However, parameter optimization and risk control are still needed to obtain steady gains in live trading.
/*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")template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6