
La stratégie est un système d’adaptation qui combine le suivi de la tendance et la négociation intermédiaire pour juger de l’état du marché à travers l’indice de volatilité (CI) et adopter une logique de négociation correspondante en fonction des différentes conditions du marché. Dans les marchés tendance, la stratégie utilise les signaux de survente et de survente EMA et RSI; dans les marchés intermédiaires, la stratégie est principalement basée sur les extrêmes de l’indicateur RSI. La stratégie comprend également un système de stop-loss pour contrôler les risques et bloquer les bénéfices.
Le cœur de la stratégie est de diviser le marché en deux états, le marché tendance (CI<38.2) et le marché intermédiaire (CI>61.8) à l’aide de l’indice de fluctuation (CI). Dans le marché tendance, le bullish est ouvert lorsque l’EMA rapide (cycles 9) traverse l’EMA lente (cycles 21) et que le RSI est inférieur à 70 et le bullish est ouvert lorsque l’EMA lente traverse l’EMA rapide et que le RSI est supérieur à 30. Dans le marché intermédiaire, le bullish est ouvert lorsque le RSI est inférieur à 30 et supérieur à 70.
La stratégie a été conçue en combinant plusieurs indicateurs techniques pour construire un système de négociation auto-adaptatif, capable de maintenir une performance stable dans différents environnements de marché. Le principal avantage de la stratégie réside dans son adaptabilité au marché et son mécanisme de gestion des risques, mais il faut également prêter attention à l’optimisation des paramètres et à la dépendance des conditions de marché.
/*backtest
start: 2024-12-19 00:00:00
end: 2024-12-26 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nopology
//@version=6
strategy("CI, EMA, RSI", overlay=false)
// Input parameters
lengthCI = input(14, title="CI Length")
lengthRSI = input(14, title="RSI Length")
fastLength = input(9, title="Fast EMA Length")
slowLength = input(21, title="Slow EMA Length")
// Calculate CI
atr = ta.atr(lengthCI)
highLowRange = math.log10(math.max(high[lengthCI], high) - math.min(low[lengthCI], low))
sumATR = math.sum(atr, lengthCI)
ci = 100 * (math.log10(sumATR / highLowRange) / math.log10(lengthCI))
// Calculate RSI
rsi = ta.rsi(close, lengthRSI)
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Define conditions
trendingMarket = ci < 38.2
rangingMarket = ci > 61.8
bullishSignal = ta.crossover(fastEMA, slowEMA) and rsi < 70
bearishSignal = ta.crossover(slowEMA, fastEMA) and rsi > 30
// Plot indicators for visualization
plot(ci, title="Choppiness Index", color=color.purple, linewidth=2)
plot(fastEMA, title="Fast EMA", color=color.blue)
plot(slowEMA, title="Slow EMA", color=color.red)
// Strategy Execution
if (trendingMarket)
if (bullishSignal)
strategy.entry("Long", strategy.long)
if (bearishSignal)
strategy.entry("Short", strategy.short)
else if (rangingMarket)
if (rsi < 30)
strategy.entry("Long", strategy.long)
if (rsi > 70)
strategy.entry("Short", strategy.short)
// Close positions when conditions no longer met or reverse
if (trendingMarket and not bullishSignal)
strategy.close("Long")
if (trendingMarket and not bearishSignal)
strategy.close("Short")
if (rangingMarket and rsi > 40)
strategy.close("Long")
if (rangingMarket and rsi < 60)
strategy.close("Short")
// Optional: Add stop loss and take profit
stopLossPerc = input.float(2, title="Stop Loss (%)", minval=0.1, step=0.1) / 100
takeProfitPerc = input.float(4, title="Take Profit (%)", minval=0.1, step=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close*(1-stopLossPerc), limit=close*(1+takeProfitPerc))
strategy.exit("Exit Short", "Short", stop=close*(1+stopLossPerc), limit=close*(1-takeProfitPerc))