Cette stratégie est un système de trading basé sur l'oscillateur de dynamique de Chande (CMO). Il cherche des opportunités d'achat dans les régions survendues et de vente dans les régions surachetées, tout en incorporant des limites de temps de détention de position pour la gestion des risques.
Le noyau de la stratégie utilise l'indicateur CMO pour mesurer la dynamique du marché. CMO génère un oscillateur allant de -100 à 100 en calculant le rapport de la différence entre les mouvements ascendants et descendants à leur somme. Le système génère un signal long lorsque CMO tombe en dessous de -50, indiquant une condition de survente du marché. Les positions sont fermées lorsque CMO dépasse 50 ou lorsque la période de détention dépasse 5 cycles. Cette conception capte les opportunités de rebond des prix tout en mettant en œuvre des mesures de prise de profit et de stop-loss en temps opportun.
Cette tendance basée sur l'élan suivant la stratégie capture les opportunités de surachat et de survente du marché en utilisant l'indicateur CMO. La conception de la stratégie est rationnelle, avec des règles de trading claires et des mécanismes de contrôle des risques. Bien qu'il existe des risques inhérents, l'optimisation peut encore améliorer la stabilité et la rentabilité de la stratégie. La stratégie est particulièrement adaptée aux marchés très volatils et peut obtenir de bons rendements pendant les phases de tendance claires.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Momentum Oscillator Strategy", overlay=false) // Input for the CMO period cmoPeriod = input.int(9, minval=1, title="CMO Period") // Calculate price changes priceChange = ta.change(close) // Separate positive and negative changes up = priceChange > 0 ? priceChange : 0 down = priceChange < 0 ? -priceChange : 0 // Calculate the sum of ups and downs using a rolling window sumUp = ta.sma(up, cmoPeriod) * cmoPeriod sumDown = ta.sma(down, cmoPeriod) * cmoPeriod // Calculate the Chande Momentum Oscillator (CMO) cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown) // Define the entry and exit conditions buyCondition = cmo < -50 sellCondition1 = cmo > 50 sellCondition2 = ta.barssince(buyCondition) >= 5 // Track if we are in a long position var bool inTrade = false if (buyCondition and not inTrade) strategy.entry("Long", strategy.long) inTrade := true if (sellCondition1 or sellCondition2) strategy.close("Long") inTrade := false // Plot the Chande Momentum Oscillator plot(cmo, title="Chande Momentum Oscillator", color=color.blue) hline(-50, "Buy Threshold", color=color.green) hline(50, "Sell Threshold", color=color.red)