Stratégie de prise de bénéfices par canal Keltner

Auteur:ChaoZhang est là., Date: 15 septembre 2023 à 14 h 41 min 46 s
Les étiquettes:

Ceci est un article optimisé pour le référencement sur la stratégie Keltner Channel Stop Loss Take Profit:

Vue d'ensemble de la stratégie

La stratégie Keltner Channel Stop Loss Take Profit optimise les décisions de trading basées sur l'analyse Keltner Channel en incorporant des règles de stop loss et de take profit. Elle surveille la relation de prix avec les bandes supérieures et inférieures du canal, entre dans des trades longs ou courts sur les ruptures et équilibre le risque et la récompense en fonction des niveaux optimaux de stop loss et de take profit.

La logique de la stratégie

  1. Calculer les bandes médiane, supérieure et inférieure du canal de Keltner.

  2. Considérez les opportunités longues lorsque le prix touche la bande supérieure et les opportunités courtes lorsque le prix touche la bande inférieure.

  3. Entrez des positions longues sur les écarts de bande supérieure et des positions courtes sur les écarts de bande inférieure.

  4. Fixer un objectif de prise de profit à un certain pourcentage au-dessus du prix d'entrée et un objectif de stop loss à un certain pourcentage au-dessous du prix d'entrée.

L'avantage de cette stratégie est l'introduction de règles de stop loss et de prise de profit pour réduire les pertes à temps lorsque la tendance va mal, et prendre des bénéfices avant la fin de la vague.

Les paramètres peuvent être optimisés pour différents actifs afin d'obtenir le meilleur équilibre risque-rendement.

Les avantages de la stratégie

  • Le canal Keltner détermine la direction de la tendance

  • Arrêter la perte et prendre profit optimise la récompense

  • L'entrée et la sortie lisses empêchent les fausses ruptures

  • Paramètres flexibles pour les ajustements

  • Combinable avec d'autres indicateurs

Alertes au risque

  • Les ratios stop-loss et take profit doivent être augmentés

  • Certains risques de stop loss demeurent

  • Les canaux peuvent être brisés avec des pertes.

  • Les petites pertes de stop provoquent des arrêts fréquents

Conclusion

La stratégie Keltner Stop Loss Take Profit Optimise le trading traditionnel en contrôlant les risques tout en suivant la tendance.


/*backtest
start: 2023-08-15 00:00:00
end: 2023-08-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Optimized Keltner Channels Strategy for BTC", overlay=true)
length = input(9, minval=1)
mult = input(1.0, "Multiplier")
src = input(close, title="Source")
exp = input(true, "Use Exponential MA")
BandsStyle = input("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
atrlength = input(18, "ATR Length")
sl = input(defval=22, minval=0, title="Stop Loss (%)")
tp = input(defval=21, minval=0, title="Take Profit (%)")

esma(source, length)=>
	s = sma(source, length)
	e = ema(source, length)
	exp ? e : s
ma = esma(src, length)
rangema = BandsStyle == "True Range" ? rma(tr(true), length) : BandsStyle == "Average True Range" ? atr(atrlength) : rma(high - low, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
c = color.blue
u = plot(upper, color=color.green, title="Upper")
plot(ma, color=#0094FF, title="Basis")
l = plot(lower, color=color.red, title="Lower")
fill(u, l, color=#0094FF, transp=95, title="Background")
crossUpper = crossover(src, upper)
crossLower = crossunder(src, lower)
bprice = 0.0
bprice := crossUpper ? close+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? close-syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (src < ma or high >= bprice )
cancelScond = crossScond and (src > ma or low <= sprice )
if (cancelBcond)
	strategy.cancel("KltChLE")
if (crossUpper)
	strategy.entry("KltChLE", strategy.long, stop=bprice, comment="Long")
if (cancelScond)
	strategy.cancel("KltChSE")
if (crossLower)
	strategy.entry("KltChSE", strategy.short, stop=sprice, comment="Short")

strategy.exit("long exit", "KltChLE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)
strategy.exit("Short exit", "KltChSE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)

plot(bprice, color=color.green)
plot(sprice, color=color.red)

Plus de