Stratégie quantique de l'OCM en double réversion

Auteur:ChaoZhang est là., Date: 2024-01-04 14h35 et 23h
Les étiquettes:

img

Résumé

Cette stratégie est une double stratégie de renversement, combinant l'indicateur 123 Reversion et l'indicateur quantique CMOWMA pour obtenir une double confirmation des signaux de renversement des prix avec des effets visuels de ligne K rouge et verte.

Principe de stratégie

La stratégie se compose de deux parties:

  1. 123 Indicateur d'inversion

    • Utiliser le prix de clôture par rapport au prix de clôture précédent pour déterminer le prix à la hausse ou à la baisse
    • Utiliser les croisements de ligne rapide et de ligne lente de l'indicateur stochastique pour confirmer les signaux d'inversion
    • Générer des signaux longs ou courts lorsque les conditions sont réunies
  2. Indicateur quantique CMOWMA

    • Utiliser l'indicateur de l'OCM pour mesurer la dynamique des prix
    • Appliquer la moyenne mobile pondérée par l'AMM à l'indicateur de l'OCM
    • Voir long (court) lorsque l'OMC est au-dessus (en dessous) de sa WMA

Entrez en position lorsque les deux parties donnent des signaux dans la même direction.

Les avantages de la stratégie

  1. Le mécanisme de double confirmation peut filtrer les fausses ruptures et réduire les positions inutiles
  2. La couleur rouge et verte K-line génère des effets visuels pour juger facilement les conditions du marché
  3. La combinaison des indicateurs d'inversion et de dynamique assure une stabilité globale
  4. Des paramètres simples le rendent adapté à divers produits et facile à mettre en œuvre

Risques liés à la stratégie

  1. Les prix peuvent revenir à l'inverse après le premier renversement, avec risque de revers
  2. Le changement fréquent de position entraîne des frais de négociation excessifs
  3. Des paramètres mal réglés peuvent provoquer trop ou trop peu de signaux.
  4. Les paramètres de l'OCM doivent être ajustés en fonction des caractéristiques du produit

Les risques peuvent être réduits en assouplissant les conditions d'inversion, en augmentant la durée de conservation, en optimisant les combinaisons de paramètres, etc.

Directions d'optimisation

  1. Effets des essais de différents paramètres stochastiques
  2. Remplacer/ajouter des confirmations par d'autres indicateurs tels que MACD, KDJ, etc.
  3. Optimisations des essais de différentes longueurs de MMO et de MMA
  4. Essayez d'ajouter un stop-loss / profit à certains niveaux
  5. Mettre en place des filtres pour contrôler la fréquence des nouvelles positions

Résumé

La stratégie est solide dans l'ensemble avec des paramètres simples, facile à mettre en œuvre, combinant l'inversion des prix et des indicateurs de momentum pour former un mécanisme de filtrage efficace à double signal pour éliminer les faux signaux.


/*backtest
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"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  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.
//
// 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

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))) 
    pos

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) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Plus de