Stratégie de négociation de l'oscillateur de l'OCM

Auteur:ChaoZhang est là., Date: le 19 septembre 2023
Les étiquettes:

Résumé

Cette stratégie utilise l'oscillateur de momentum de Chande (CMO) pour déterminer les niveaux de surachat et de survente pour les signaux de trading.

La logique de la stratégie

La logique clé est la suivante:

  1. Calcul des valeurs absolues de l'OCM sur trois périodes différentes
  2. Prendre la moyenne des valeurs absolues de l'OCM pour trois périodes
  3. Résultats de l'évaluation de la valeur moyenne
  4. Départ à long terme lorsque la valeur moyenne tombe en dessous du seuil inférieur
  5. Fermeture des positions lorsque l'OCM revient à la fourchette normale

L'OMC reflète l'élan des changements de prix. Les valeurs absolues élevées représentent la divergence de prix entrant dans les zones de surachat / survente. La stratégie utilise cette caractéristique de l'OMC, en utilisant une moyenne multipériodique pour lisser la courbe pour identifier les extrêmes.

Les avantages

  • Utilise l'OCM pour identifier les régions surachetées/survendues
  • La moyenne multipériodique assure la fluidité de la courbe et évite les faux signaux
  • Une base théorique solide pour la détection de la surachat/survente
  • Des seuils de paramètres personnalisables à adapter
  • Mise en œuvre simple de la réversion moyenne

Risques et atténuations

  • Potentiel de faux signaux de l'OCM
  • Requiert une optimisation continue du seuil
  • Des extrêmes soutenus pendant les tendances peuvent entraîner des pertes

Les mesures d'atténuation

  1. Ajout d'un filtre de tendance pour éviter les transactions contre-tendance
  2. Optimisation des paramètres pour une meilleure sensibilité de l'OMC
  3. Utilisation des arrêts pour limiter les pertes

Des possibilités d'amélioration

La stratégie peut être renforcée par:

  1. Confirmation du volume pour éviter les fausses ruptures
  2. Incorporation des arrêts de trailing pour une meilleure gestion des risques
  3. Optimisation automatique des paramètres par apprentissage automatique
  4. Taille des positions basée sur la volatilité
  5. Combinaison avec d'autres stratégies pour diversifier et améliorer les rendements

Conclusion

Cette stratégie utilise CMO pour identifier les surachats / survente pour la négociation de la réversion moyenne. La moyenne à plusieurs périodes aide à éviter les faux signaux. CMO lui-même a une base théorique solide pour mesurer la divergence. Des améliorations grâce à de meilleurs paramètres, arrêts et filtres peuvent en faire une stratégie de trading d'oscillateur stable.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -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="CMOabsav")

Plus de