This strategy combines 123 reversal patterns and MACD indicators to generate stronger trade signals through filtering. 123 reversals capture short-term reversal opportunities while MACD provides mid-long term trend guidance. The combo signal can effectively discover high probability trade setups.
123 reversal strategy buys when the last two days were down days and today’s close is up, with Stochastic below threshold; sells when last two days were up days and today is down, with Stochastic above threshold.
MACD strategy goes long when fast MA is above slow MA, and short when fast MA is below slow MA.
Trades are taken only when both strategies agree, otherwise no action is taken. Trade direction can be switched.
Main advantages:
Combo signal effectively filters false breakouts, improving win rate.
123 captures short-term reversals, MACD judges mid-long term trend direction.
Stochastic with 123 avoids over-trading after trend reversal.
Two strategies share different tasks, mutually validating, avoiding over-optimization.
Easily switch between long/short, adaptable to various market environments.
Main risks:
Combo signal may be too conservative, missing good opportunities.
Reversals are susceptible to sudden events, prone to failure.
Lack of stop loss exposes strategy to large losses.
Double filtering may cause missing trend trades.
Lack of parameter optimization, default values may not fit all instruments.
Improvements:
Test different parameter combinations to find optimal values.
Add stop loss to control loss per trade.
Incorporate more filter indicators to improve signal quality.
Introduce machine learning models for automatic parameter optimization.
Test across more trading instruments to evaluate robustness.
Switch parameter sets based on market conditions.
Overall, combining dual signals avoids over-optimization compared to single strategies. With additions like more filters, stop losses and so on, it can become a robust and practical quantitative trading strategy.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-14 02:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/07/2020 // 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 is one of the techniques described by William Blau in his book // "Momentum, Direction and Divergence" (1995). If you like to learn more, // we advise you to read this book. His book focuses on three key aspects // of trading: momentum, direction and divergence. Blau, who was an electrical // engineer before becoming a trader, thoroughly examines the relationship // between price and momentum in step-by-step examples. From this grounding, // he then looks at the deficiencies in other oscillators and introduces some // innovative techniques, including a fresh twist on Stochastics. On directional // issues, he analyzes the intricacies of ADX and offers a unique approach to help // define trending and non-trending periods. // Blau`s indicator is like usual MACD, but it plots opposite of meaningof // stndard MACD indicator. // // 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 fADX(Len) => up = change(high) down = -change(low) trur = rma(tr, Len) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur) sum = plus + minus 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len) EMACD(r,SmthLen,LengthMACD) => pos = 0 source = close fastMA = ema(source, r) slowMA = ema(source, LengthMACD) xmacd = fastMA - slowMA xMA_MACD = ema(xmacd, SmthLen) pos := iff(xmacd < xMA_MACD, -1, iff(xmacd > xMA_MACD, 1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Ergodic MACD", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- r = input(14, minval=1) LengthMACD = input(21, minval=1) SmthLen = input(5, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posEMACD = EMACD(r,SmthLen,LengthMACD) pos = iff(posReversal123 == 1 and posEMACD == 1 , 1, iff(posReversal123 == -1 and posEMACD == -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 )