Il s'agit d'une stratégie de négociation d'oscillation à court terme qui combine l'indicateur EMA et l'indicateur CCI pour identifier les tendances à court terme et les niveaux de surachat/survente sur le marché, afin de saisir les opportunités découlant des fluctuations de prix à court terme.
La stratégie utilise principalement les lignes EMA à 10 jours, à 21 jours et à 50 jours et l'indicateur CCI pour déterminer les délais d'entrée et de sortie.
La logique spécifique est la suivante: Lorsque la moyenne mobile à court terme (EMA à 10 jours) dépasse la moyenne mobile à moyen terme (EMA à 21 jours) et que la moyenne mobile à court terme est supérieure à la moyenne mobile à long terme (EMA à 50 jours) et que l'indicateur CCI est supérieur à 0, elle est considérée comme un signal haussier pour aller long. Lorsque la moyenne mobile à court terme dépasse la moyenne mobile à moyen terme et que la moyenne mobile à court terme est inférieure à la moyenne mobile à long terme et que l'indicateur CCI est inférieur à 0, elle est considérée comme un signal baissier pour aller court.
La logique de sortie consiste à fermer la position lorsque la moyenne mobile à court terme franchit la moyenne mobile à moyen terme.
La combinaison du système de moyenne mobile et de l'indicateur CCI permet d'identifier efficacement les tendances des prix à court terme et les niveaux de surachat/survente.
L'utilisation de croisements de moyennes mobiles pour déterminer les entrées et les sorties est simple et pratique.
Les paramètres CCI et les réglages de cycle sont plus raisonnables pour filtrer certains faux signaux.
L'adoption de plusieurs délais de moyennes mobiles peut permettre d'obtenir de meilleures opportunités de négociation sur les marchés oscillants.
Les grandes fluctuations des opérations à court terme peuvent entraîner un stop loss consécutif.
Les paramètres CCI ne sont pas réglés correctement et peuvent accroître les faux signaux.
Au cours des périodes d'intervalle et de consolidation, cette stratégie peut entraîner plusieurs petites pertes.
Convient uniquement pour les traders fréquents à court terme, pas pour la détention à long terme.
Les mesures d'atténuation des risques correspondantes comprennent: l'optimisation des paramètres CCI, l'ajustement de la position de stop loss, l'ajout de conditions FILTER, etc.
Différentes combinaisons de longueurs EMA peuvent être testées pour optimiser les paramètres.
D'autres indicateurs ou conditions de filtrage peuvent être ajoutés pour filtrer certains faux signaux, tels que MACD, KDJ, etc.
Utilisez un stop-loss dynamique pour contrôler une seule perte.
La combinaison d'indicateurs de tendance à plus long terme permet d'éviter de négocier contre la tendance.
Dans l'ensemble, il s'agit d'une stratégie d'oscillation à court terme typique qui utilise le croisement des lignes moyennes mobiles combinées avec le statut de surachat / survente de l'indicateur CCI pour capturer les opportunités d'inversion à court terme. Cette stratégie convient aux transactions à court terme fréquentes, mais doit résister à une certaine pression de stop loss. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées grâce à l'optimisation des paramètres et à l'ajout de conditions de filtre.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true) strategy("Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true) exponential = input(true, title="Exponential MA") // the risk management inputs inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na src = close ma10 = exponential ? ema(src, 10) : sma(src, 10) ma21 = exponential ? ema(src, 21) : sma(src, 21) ma50 = exponential ? ema(src, 50) : sma(src, 50) xCCI = cci(close, 200) //buy_cond = cross(ma21, ma50) and ma10 > ma21 and (xCCI > 0) //sell_cond = cross(ma21, ma50) and ma10 < ma21 and (xCCI < 0) buy_cond = ma10 > ma21 and ma10 > ma50 and xCCI > 0 sell_cond = ma10 < ma21 and ma10 < ma50 and xCCI < 0 // === STRATEGY - LONG POSITION EXECUTION === enterLong() => buy_cond exitLong() => ma10 < ma21 strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in strategy.close(id = "Long", when = exitLong()) // ...and when to get out // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => sell_cond exitShort() => ma10 > ma21 strategy.entry(id = "Short", long = false, when = enterShort()) strategy.close(id = "Short", when = exitShort()) // === STRATEGY RISK MANAGEMENT EXECUTION === // finally, make use of all the earlier values we got prepped //strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) //strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) //longCondition = buy_cond //if(longCondition) // strategy.entry("Long", strategy.long) // strategy.exit("Close Long", "Long", when = exitLong()) //shortCondition = sell_cond //if(shortCondition) // strategy.entry("Short", strategy.short) // strategy.exit("Close Short", "Short", when = exitShort()) //plotshape(buy_cond, style=shape.flag, color=green, size=size.normal) //plotshape(sell_cond, style=shape.flag, color=red, size=size.normal) c1 = buy_cond==1 ? lime : sell_cond==1 ? red : #a3a3a3 // color plot( ma10, color=red, style=line, title="10", linewidth=1) plot( ma21, color=orange, style=line, title="21", linewidth=1) plot( ma50, color=c1, style=line, title="50", linewidth=3) //alertcondition(buy_cond, title = "Buy Condition", message = "Buy Condition Alert") //alertcondition(sell_cond, title = "Sell Condition", message = "Sell Condition Alert")