La stratégie s'appelle
L'indicateur de base de cette stratégie est le CMO. Le CMO est étroitement lié à d'autres indicateurs de dynamique comme le RSI, mais a également sa particularité. Le CMO mesure directement la dynamique des changements de prix. Son calcul est basé sur des données brutes non lissées, reflétant donc des changements de prix à court terme extrêmes. La valeur du CMO varie de +100 à -100, ce qui permet de comparer la force absolue de la dynamique entre les titres.
La stratégie calcule d'abord le changement de prix d'un jour abs ((close - close[1]) en tant que dynamique d'origine xMom. Ensuite, elle calcule la SMA de xMom sur les jours de longueur, indiquée comme xSMA_mom. Après cela, elle calcule la variation de prix sur les jours de longueur xMomLength, à savoir close - close[Length]. Enfin, CMO est calculé comme xMomLength divisé par xSMA_mom puis multiplié par 100. Cette CMO est lissée par un WMA (paramètre LengthWMA) pour dériver xWMACMO. Le signal de trading est d'aller long (short) lorsque CMO traverse au-dessus (en dessous) de sa WMA.
Le plus grand avantage de cette stratégie est de capturer les caractéristiques de l'élan dans les tendances des prix. La conception limitée de CMO reflète plus directement les changements d'élan. Par rapport à SMA, WMA aplatit mieux le bruit à court terme.
Le plus grand risque de cette stratégie est la fréquence de négociation élevée entraînant une augmentation des coûts de glissement. Les paramètres de la CMO et de la WMA sont à court terme, ce qui peut provoquer des sauts de marée inutiles excessifs.
Nous pouvons envisager l'introduction d'une optimisation adaptative des paramètres CMO et WMA, leur permettant de s'ajuster dynamiquement. L'ajout de conditions de filtre pour réduire les transactions inutiles est une autre option.
La stratégie peut être améliorée par les aspects suivants:
ajouter un mécanisme de paramètres adaptatif pour l'OCM afin de trouver des paramètres optimaux pour différents régimes de volatilité;
Ajouter un mécanisme de paramètre WMA adaptatif afin que l'effet de lissage change en conséquence;
Ajoutez des conditions de filtre telles que l'indice de volatilité pour contrôler les coups de fouet inutiles;
Envisager une combinaison avec d'autres indicateurs pour améliorer la stabilité;
Optimiser le mécanisme de stop-loss. Définir une ligne de stop-loss dynamique pour contrôler activement la perte d'un seul round.
La stratégie réalise un suivi de tendance simple et efficace basé sur CMO et WMA. Son avantage réside dans la capture claire des caractéristiques de l'élan des prix. Mais elle présente également une certaine faiblesse dans la capacité de rétention des bénéfices après l'ouverture de positions. Le réglage des paramètres et la combinaison peuvent grandement améliorer la stabilité. Dans l'ensemble, cette stratégie a beaucoup de place et de valeur pour l'amélioration.
/*backtest start: 2022-11-21 00:00:00 end: 2023-11-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 13/02/2017 // 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. //////////////////////////////////////////////////////////// strategy(title="CMO & WMA", shorttitle="CMO & WMA") Length = input(9, minval=1) LengthWMA = input(9, minval=1) reverse = input(false, title="Trade reverse") hline(0, color=gray, linestyle=line) 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))) 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) barcolor(possig == -1 ? red: possig == 1 ? green : blue) plot(nRes, color=blue, title="CMO") plot(xWMACMO, color=red, title="WMA")