This strategy combines a trend reversal strategy with a statistical volatility strategy to generate stronger trading signals.
The strategy consists of two parts:
Trend reversal strategy
Statistical volatility strategy
The strategy generates a trade signal only when both strategies agree on the direction (both long or both short). Otherwise, no trade.
The combo strategy improves signal reliability by combining two different types of strategies:
The 123 pattern accurately captures trend reversal points and avoids being misled by one-off price spikes.
The statistical volatility focuses on high-volatility, high-opportunity periods based on market movement over the past month.
By verifying each other, the two strategies combined catch key market turning points more precisely and generate more accurate trading signals.
123 patterns cannot fully avoid the risk of false breakouts. Erratic whipsaws may cause bad signals.
Statistical volatility only considers historical data and cannot predict future volatility shifts. Sudden volatility expansion or contraction can lead to bad signals.
Both strategies rely heavily on parameter tuning. Poor parameter settings may degrade signal quality significantly.
Although more reliable overall, the combo approach may miss some strong signals from individual strategies.
Incorporate more indicators like Bollinger Bands, KDJ to form a voting mechanism.
Add machine learning algorithms to determine trend reversal probabilities using more historical data.
Set signal strength thresholds to filter out noise.
Optimize parameters for different products and timeframes.
Add stop loss mechanisms to control risk of the combined strategy.
The strategy improves signal quality by combining trend reversal and statistical volatility strategies, providing more accurate trade signals around market turning points. But misinterpretation risks and parameter optimization issues remain. Further enhancements like more indicators and machine learning can lead to even more robust and reliable trading signals.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 31/07/2021 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // This indicator used to calculate the statistical volatility, sometime // called historical volatility, based on the Extreme Value Method. // Please use this link to get more information about Volatility. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos SV(Length,TopBand,LowBand) => pos = 0.0 xMaxC = highest(close, Length) xMaxH = highest(high, Length) xMinC = lowest(close, Length) xMinL = lowest(low, Length) SqrTime = sqrt(253 / Length) Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5 nRes = iff(Vol < 0, 0, iff(Vol > 2.99, 2.99, Vol)) pos := iff(nRes > TopBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Statistical Volatility", shorttitle="Combo", overlay = true) line1 = input(true, "---- 123 Reversal ----") Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- line2 = input(true, "---- Statistical Volatility ----") LengthSV = input(30, minval=1) TopBand = input(0.005, step=0.001) LowBand = input(0.0016, step=0.001) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posSV = SV(LengthSV,TopBand,LowBand) pos = iff(posReversal123 == 1 and posSV == 1 , 1, iff(posReversal123 == -1 and posSV == -1, -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) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6