Stratégie de sortie du lustre

Auteur:ChaoZhang est là., Date: le 05 janvier 2024
Les étiquettes:

img

Résumé

Cette stratégie utilise l'indicateur Chandelier Exit pour déterminer la direction et l'élan des écarts de prix et générer des signaux d'achat et de vente.

La logique de la stratégie

Cette stratégie est basée sur l'indicateur Chandelier Exit qui définit des lignes de stop-loss basées sur le plus haut, le plus bas et la plage moyenne vraie. Plus précisément, il calcule un ATR de 22 jours et le multiplie par un coefficient (défaut 3) pour dériver des valeurs pour les lignes de stop longues et courtes.

La stratégie n'effectue que des opérations d'achat. Elle déclenche une entrée longue lorsque le prix dépasse la ligne d'arrêt longue précédente et crée un signal de sortie lorsque le prix tombe en dessous de la ligne d'arrêt courte, fermant la position longue.

Analyse des avantages

  • Utilise des lignes de stop loss dynamiques de Chandelier Exit pour contrôler efficacement les risques
  • Combine les écarts de prix pour capturer les mouvements de tendance
  • Mettre en œuvre une stratégie qui évite les reverses à la hausse/à la baisse en achetant uniquement
  • Les conditions d'alerte déclenchent des notifications pour surveiller l'état de la stratégie

Analyse des risques

  • La sortie de Chandelier est sensible à l' expansion de la volatilité qui peut provoquer de faux signaux.
  • Aucun stop loss en place après achat pour limiter les pertes
  • Aucun mécanisme de prise de profit pour verrouiller les gains

Réduction des risques:

  1. Ajouter un filtre avec d'autres indicateurs pour éviter les faux signaux
  2. Mettre en œuvre un stop loss pour limiter les pertes maximales
  3. Incorporer des arrêts de profit de suivi, tels que l'ajustement dynamique de la ligne de vente ou des sorties partielles

Des possibilités d'amélioration

  1. Testez différents ensembles de paramètres pour optimiser les entrées et les sorties
  2. Ajouter des filtres d'indicateur pour confirmer les signaux et éviter les faux signaux
  3. Envisager d'autoriser à la fois les opérations d'achat et de vente
  4. Mettre en place des mécanismes de stop loss et de prise de bénéfices

Conclusion

Cette stratégie identifie les opportunités d'inversion en utilisant les lignes d'arrêt dynamiques de l'indicateur de sortie de l'échandelier. Elle achète sur les ruptures à la hausse de la ligne d'arrêt longue et vend lorsque les prix tombent en dessous de la ligne d'arrêt courte, en mettant en œuvre une stratégie unilatérale simple qui évite les inversions à la hausse / à la baisse. Elle contrôle efficacement le risque mais manque de dispositions de stop loss et de profit. Les opportunités d'optimisation comprennent l'ajout de filtres et de mécanismes de prise de stop loss / profit pour rendre la stratégie plus robuste.


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit Strategy", overlay=true)

length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))

changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')

// Define initial capital
initial_capital =25

// Trigger buy order and close buy order on sell signal
if buySignal
    strategy.entry("Buy", strategy.long, qty = initial_capital / close)

if sellSignal
    strategy.close("Buy")


Plus de