Keltner Channel Pullback Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-27 14:49:39
Tags:

img

Übersicht

Diese Strategie entwirft eine Pullback-Handelsstrategie, die auf dem Keltner-Kanal-Indikator basiert. Sie beurteilt den Zeitpunkt potenzieller Preisumkehrungen, indem sie den Preis mit den oberen und unteren Schienen des Keltner-Kanals vergleicht und geeignete Long- und Short-Positionen annimmt.

Strategieprinzip

Diese Strategie verwendet den Keltner Channel-Indikator, um Preistrends zu beurteilen. Der Keltner Channel besteht aus einem gleitenden Durchschnitt und einem durchschnittlichen wahren Bereich (ATR). Der obere Schiene entspricht dem gleitenden Durchschnitt plus N mal ATR; der untere Schiene entspricht dem gleitenden Durchschnitt minus N mal ATR. Wenn der Preis durch die untere Schiene des Kanals von unten nach oben bricht, wird davon ausgegangen, dass die bullische Kraft erhöht wird und Long-Positionen aufgenommen werden können; wenn der Preis durch die obere Schiene von oben nach unten bricht, wird davon ausgegangen, dass die bärische Kraft erhöht wird und Short-Positionen aufgenommen werden können.

Darüber hinaus ist die Grundlage für die Strategie, um Pullback-Möglichkeiten zu beurteilen, dass der Preis die Kanalgrenze wieder berührt oder durchbricht. Zum Beispiel, nachdem der Preis steigt, um die untere Schiene zu durchbrechen, wenn er wieder fällt, um die untere Schiene zu berühren, ohne die obere Schiene zu berühren, ist es eine Gelegenheit, einen langen Pullback zu nehmen. Die Strategie wird zu diesem Zeitpunkt lange Positionen eröffnen.

Analyse der Vorteile

Es handelt sich um eine Handelsstrategie, die die Pullback-Eigenschaften der Preise nutzt.

  1. Die Verwendung des Keltner-Kanals zur Beurteilung der Kursentwicklung kann das Rauschen effektiv filtern.
  2. Die Einführung einer Rückzugstrategie kann den Markt vor Umkehrungen erreichen und größere Trends erfassen.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Auf langfristigen Einwegmärkten kann es weniger Rückzugsmöglichkeiten geben, die keinen Gewinn erzielen können.
  2. Eine ungenaue Beurteilung von Rückzugssignalen kann zu Verlusten führen.

Gegenmaßnahmen:

  1. Optimierung der Parameter zur Anpassung der Kanalbreite an die Marktbedingungen.
  2. Erhöhen Sie das Positionsmanagement, um Einzelverluste zu reduzieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Durchbruchfilterung auf der Grundlage des Handelsvolumens, um falsche Durchbrüche zu vermeiden.
  2. Anpassung der Positionsgröße anhand der Volatilität.
  3. Aktualisieren Sie Stop-Loss-Methoden mit beweglichen Stops, um mehr Gewinne zu erzielen.

Zusammenfassung

Diese Strategie integriert Trendbeurteilung und Pullback-Handelsmethoden und hat einzigartige Vorteile bei der Erfassung von Umkehrtrends.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")

Mehr