Dual Reversion CMO Quantum Strategy

Author: ChaoZhang, Date: 2024-01-04 14:35:23



This strategy is a dual reversion strategy, combining the 123 Reversion indicator and CMOWMA quantum indicator to achieve double confirmation of price reversal signals with red and green K-line visual effects.

Strategy Principle

The strategy consists of two parts:

  1. 123 Reversion Indicator

    • Use the closing price vs previous closing price to determine price up or down
    • Use Stochastic indicator’s fast line and slow line crossovers to confirm reversal signals
    • Generate long or short signals when conditions are met
  2. CMOWMA Quantum Indicator

    • Use CMO indicator to measure price momentum
    • Apply WMA weighted moving average to CMO indicator
    • See long (short) when CMO is above (below) its WMA

Enter positions when both parts give signals in the same direction.

Advantages of the Strategy

  1. Dual confirmation mechanism can filter false breaks and reduce unnecessary positions
  2. Red and green K-line coloring generates visual effects for easily judging market conditions
  3. Combination of reversal and momentum indicators provides overall stability
  4. Simple parameter settings make it suitable for various products and easy to implement

Risks of the Strategy

  1. Prices may reverse again after initial reversal, with risk of whipsaws
  2. Frequent position switching generates excessive trading fees
  3. Improper parameter settings may cause too many or too few signals
  4. CMO parameters need adjustment based on product characteristics

Risks can be reduced by relaxing reversal conditions, increasing holding period, optimizing parameter combinations etc.

Optimization Directions

  1. Test impacts of different Stochastic parameters
  2. Replace/add confirmations with other indicators like MACD, KDJ etc.
  3. Test optimizations of different CMO and WMA lengths
  4. Try adding stop loss/profit taking at certain levels
  5. Set filters to control frequency of new positions


The strategy is robust overall with simple parameters, easy to implement, combining price reversal and momentum indicators to form an effective dual-signal filtering mechanism to eliminate false signals. K-line coloring provides intuitive visuals. Further performance improvements can come from parameter optimization and risk control.

start: 2023-12-04 00:00:00
end: 2024-01-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

//  Copyright by HPotter v1.0 19/08/2019
// 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 plots Chandre Momentum Oscillator and its WMA on the 
//    same chart. This indicator plots the absolute value of CMO.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder?s RSI, yet it differs 
//    in several ways:
//    - It uses data for both up days and down days in the numerator, thereby 
//        directly measuring momentum;
//    - The calculations are applied on unsmoothed data. Therefore, short-term 
//        extreme movements in price are not hidden. Once calculated, smoothing 
//        can be applied to the CMO, if desired;
//    - The scale is bounded between +100 and -100, thereby allowing you to clearly 
//        see changes in net momentum using the 0 level. The bounded scale also allows 
//        you to conveniently compare values across different securities.
// - 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))) 

CMOWMA(Length, LengthWMA) =>
    pos = 0
    xMom = abs(close - close[1])
    xSMA_mom = sma(xMom, Length)
    xMomLength = close - close[Length]
    nRes = 100 * (xMomLength / (xSMA_mom * Length))
    xWMACMO = wma(nRes, LengthWMA)
    pos := iff(nRes > xWMACMO, 1,
    	   iff(nRes <= xWMACMO, -1, nz(pos[1], 0))) 

strategy(title="Combo Backtest 123 Reversal & CMO & WMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthCMO = input(14, minval=1)
LengthWMA = input(13, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOWMA = CMOWMA(LengthCMO, LengthWMA)
pos = iff(posReversal123 == 1 and posCMOWMA == 1 , 1,
	   iff(posReversal123 == -1 and posCMOWMA == -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) 
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )