This strategy combines the 123 reversal pattern and RSI momentum strategies to filter signals for high-probability entries at trend reversal points.
This strategy is from the book “How I Tripled My Money in the Futures Market” by Ulf Jensen, Page 183. It identifies potential trend reversals during consolidations.
Specifically, it goes long when the close is higher than the previous close for 2 consecutive days and the 9-period Slow K line is below 50; it goes short when the close is lower than the previous close for 2 consecutive days and the 9-period Fast K line is above 50.
So essentially it uses the stochastic indicator’s golden cross and death cross to determine potential reversals.
This strategy uses the ROC function to calculate price rate of change, and constructs a RSI indicator based on the price rate of change to determine momentum trends.
It goes long when RSI is below the buy zone, indicating accelerating upside momentum; it goes short when RSI is above the sell zone, indicating accelerating downside momentum.
Possible ways to reduce risks:
This strategy improves entry accuracy at trend reversals by requiring two confirming reversal signals. 123 pattern identifies reversals and RSI momentum verifies validity. Easy to optimize parameters for different products and preferences. But beware of missing entries from dual signal accumulation. Overall an effective framework for identifying reversal trends.
/*backtest start: 2023-08-26 00:00:00 end: 2023-09-25 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 17/06/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 is the new-age indicator which is version of RSI calculated upon // the Rate-of-change indicator. // The name "Relative Strength Index" is slightly misleading as the RSI // does not compare the relative strength of two securities, but rather // the internal strength of a single security. A more appropriate name // might be "Internal Strength Index." Relative strength charts that compare // two market indices, which are often referred to as Comparative Relative Strength. // And in its turn, the Rate-of-Change ("ROC") indicator displays the difference // between the current price and the price x-time periods ago. The difference can // be displayed in either points or as a percentage. The Momentum indicator displays // the same information, but expresses it as a ratio. // // 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 RSI_ROC(RSILength,ROCLength,BuyZone,SellZone) => pos = 0.0 xPrice = close nRes = rsi(roc(xPrice,ROCLength),RSILength) pos := iff(nRes < BuyZone, -1, iff(nRes > SellZone, 1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & RSI based on ROC", 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, "---- RSI based on ROC ----") RSILength = input(20, minval=1) ROCLength = input(20, minval=1) BuyZone = input(30, minval=1) SellZone = input(70, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posRSI_ROC = RSI_ROC(RSILength,ROCLength,BuyZone,SellZone) pos = iff(posReversal123 == 1 and posRSI_ROC == 1 , 1, iff(posReversal123 == -1 and posRSI_ROC == -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 )