
Cette stratégie est une stratégie de négociation de choc de courte ligne qui combine l’indicateur de moyenne EMA et l’indicateur CCI pour identifier les tendances de courte ligne et les conditions de survente et de survente du marché afin de saisir les opportunités de fluctuation des prix de courte ligne.
La stratégie utilise principalement les trois lignes moyennes de l’EMA des 10e, 21e et 50e jours, ainsi que l’indicateur CCI, pour juger du moment d’entrée et de sortie.
La logique est la suivante: Lorsque la moyenne courte (EMA de 10 jours) traverse la moyenne à court terme (EMA de 21 jours) et que la moyenne courte est supérieure à la moyenne à long terme (EMA de 50 jours), et que l’indicateur CCI est supérieur à 0, considérez-le comme un signal à plusieurs têtes. Lorsque la moyenne courte traverse la moyenne à court terme (EMA de 10 jours) et que la moyenne courte est inférieure à la moyenne à long terme, et que l’indicateur CCI est inférieur à 0, considérez-le comme un signal à vide.
La logique d’une position à zéro est une position à zéro lorsque la moyenne à court terme recouvre la moyenne à moyen terme.
La combinaison d’un système de courbe uniforme et d’un indicateur CCI permet d’identifier efficacement la direction de la tendance des fluctuations des prix des courbes courtes et le surachat et la survente.
Les entrées et exists sont jugées à l’aide de la fourche de fer et de la fourche de mort, ce qui est simple et pratique.
Les paramètres et les cycles de l’indicateur CCI sont raisonnables et permettent d’éliminer certains faux signaux.
L’utilisation d’une ligne moyenne à plusieurs périodes permet d’obtenir de meilleures opportunités d’opérations dans une ville agitée.
Les courts-circuits sont très volatils et les pertes continues peuvent être plus importantes.
Une mauvaise configuration des paramètres de l’indicateur CCI peut augmenter le nombre de faux signaux.
La stratégie peut entraîner plusieurs petites pertes pendant le cycle de liquidation.
Il convient uniquement aux traders qui utilisent fréquemment les lignes courtes, mais pas aux traders qui détiennent des lignes longues.
Les mesures de réponse au risque correspondantes comprennent: optimisation des paramètres CCI, ajustement de la position de stop-loss, augmentation des conditions FILTER, etc.
Il est possible de tester des combinaisons de lignes moyennes EMA de différentes longueurs et d’optimiser les paramètres.
D’autres indicateurs ou conditions de filtre peuvent être ajoutés pour filtrer certains faux signaux. Par exemple, MACD, KDJ, etc.
Les pertes individuelles peuvent être contrôlées par un suivi dynamique des pertes.
Il est possible de combiner des indicateurs de tendance à des périodes plus élevées pour éviter les opérations de revers.
Cette stratégie est globalement une stratégie de choc typique de la courte ligne, qui utilise la fourche dorée de l’indicateur de la parité combinée à l’état de survente et de survente de l’indicateur CCI pour capturer les occasions de revirement à court terme des prix. La stratégie convient aux transactions fréquentes de la courte ligne, mais nécessite une certaine pression de stop-loss. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées par 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")