Strategie zur Umkehrung der Piercing Pin Bar

Schriftsteller:ChaoZhang, Datum: 2024-01-25 12:29:29
Tags:

img

Übersicht

Die Piercing Pin Bar Reversal Strategy ist eine Trend-Handelsstrategie, die auf kurzfristigen Preismustern basiert. Sie nutzt Pin-Bars als Signale, kombiniert mit gleitenden Durchschnitten, um die Trendrichtung zu bestimmen, um einen hochen Präzisions-Eintrag zu erzielen.

Grundsätze

Eintrittssignale

Das Einstiegssignal für diese Strategie ist das Durchdringen von Pinbars.

  1. Eine bestimmte kurzfristige Musterform bildet sich: Aufwärtssignale aus Aufwärts-Pin-Bars, Abwärtssignale aus Abwärts-Pin-Bars
  2. Die Pinbar durchdringt gleitende Durchschnitte: Bullish-Bars durchdringen abwärtstrendige MAs oder bearish-Bars durchdringen aufwärtstrendige MAs

Eine solche Kombination sorgt dafür, dass die meisten Geräusche ausfiltert und die Eingangsgenauigkeit erhöht wird.

Definition von Trend

Die Strategie verwendet drei MAs aus verschiedenen Perioden, um Trends zu definieren. Insbesondere wenn sich schnelle, mittlere und langsame MAs in eine Richtung ausrichten, wird sie als Trend definiert. Ansonsten gilt sie als Konsolidierung.

Bei langen Einträgen ist ein schneller MA > mittlerer MA > langsamer MA erforderlich, bei kurzen Einträgen ist ein schneller MA < mittlerer MA < langsamer MA erforderlich.

Stopp-Verlust-Mechanismus

Die Strategie verwendet einen einzigartigen Trailing Stop-Loss-Mechanismus. Nach dem Eintritt werden optimale Stop-Loss-Punkte basierend auf benutzerdefinierten Werten für Trailing-Punkte und Offset verfolgt. Dies ermöglicht es, den erfassten Gewinn zu maximieren und gleichzeitig das Risiko zu kontrollieren.

Analyse der Vorteile

Eintritt mit hoher Effizienz

Die Durchdringungssignale erlauben den Einstieg nur an Chancenpunkten mit hoher Wahrscheinlichkeit, wodurch übermäßige Lärmtrades vermieden werden.

Extrem hohe Gewinnspielerei

Der einzigartige Trailing-Stop ist das größte Highlight dieser Strategie. Er kontrolliert den Stop-Loss innerhalb eines kleinen Bereichs präzise pro Handel und gewährleistet gleichzeitig einen maximalen erfassten Gewinn.

Die Ergebnisse der Simulationen zeigen nach der Anwendung dieses Mechanismus eine wahnsinnige Rentabilität, mit einer Gesamtrendite von mehreren Paaren von mehr als 1000% und einem maximalen Profit pro Handel von mehr als 100 Mal dem ursprünglichen Risiko.

Risikoanalyse

Übergewichtsrisiko

Angesichts der fast "heiligen Gral"-ähnlichen Ergebnisse ist es sehr wahrscheinlich, dass es sich um eine überfüllte Simulation der Märkte handelt.

Außerdem kann es sein, dass die kurze zweijährige Testphase keine Veränderungen des strukturellen Marktes erfasst, die Auswirkungen auf die tatsächlichen Ergebnisse haben könnten.

Risiken für die Verzögerung

Überempfindliche Trailing Stop-Werte können zu übermäßigen unerwünschten Stop-Outs führen. Plötzliche Marktereignisse können auch Trailing Stop-Loss-Orders ungültig machen. Dies sind inhärente Risiken im Zusammenhang mit der Verwendung von Trailing Stops.

Optimierungsrichtlinien

Einstellung der Parameter für den Trailing Stop

Um es sowohl agil als auch zuverlässig zu machen, versuchen Sie, die Haltestellen zu entspannen, um Überempfindlichkeit zu vermeiden.

Die Erhöhung des Testzeitrahmens hilft auch bei der Prüfung der Parameterrobustheit.

Optimierung der MA-Perioden

Die aktuellen MA-Perioden sind wahrscheinlich nicht der optimale Parametersatz.

Beispielsweise durch Erhöhung der Differenz zwischen schnellen und mittleren MA-Perioden oder durch Änderung der Art und Weise, wie MA interagieren.

Schlussfolgerung

Die Strategie zur Umkehrung der Piercing Pin Bar erzielte durch hohe Effizienz und extreme Gewinnentnahme erstaunliche Rücktestergebnisse.

Mit der richtigen Parameter-Tuning oder Optimierung kann diese Strategie in der Lage sein, beträchtliche Gewinne im Live-Handel zu erzielen und zu einem leistungsstarken Trend-Folge-System zu werden.


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

//@version=4
//Time Frame: H1
strategy("Pin Bar Magic v1", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=3,confirm=false)
atr_mult = input(title="Stop Loss (x*ATR, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=0.5,confirm=false)
slPoints = input(title="Stop Loss Trail Points (Pips)",type=input.integer,minval=1,maxval=1000,step=1,defval=1,confirm=false)
slOffset = input(title="Stop Loss Trail Offset (Pips)",type=input.integer,minval=1,maxval=1000,step=1,defval=1,confirm=false)
sma_slow = input(title="Slow SMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=50,confirm=false)
ema_medm = input(title="Medm EMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=18,confirm=false)
ema_fast = input(title="Fast EMA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=6,confirm=false)
atr_valu = input(title="ATR (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
ent_canc = input(title="Cancel Entry After X Bars (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=3,confirm=false)

// Create Indicators
slowSMA = sma(close, sma_slow)
medmEMA = ema(close, ema_medm)
fastEMA = ema(close, ema_fast)
bullishPinBar = ((close > open) and ((open - low) > 0.66 * (high - low))) or ((close < open) and ((close - low) > 0.66 * (high - low)))
bearishPinBar = ((close > open) and ((high - close) > 0.66 * (high - low))) or ((close < open) and ((high - open) > 0.66 * (high - low)))
atr = atr(atr_valu)

// Specify Trend Conditions
fanUpTrend = (fastEMA > medmEMA) and (medmEMA > slowSMA)
fanDnTrend = (fastEMA < medmEMA) and (medmEMA < slowSMA)

// Specify Piercing Conditions
bullPierce = ((low < fastEMA) and (open > fastEMA) and (close > fastEMA)) or ((low < medmEMA) and (open > medmEMA) and (close > medmEMA)) or ((low < slowSMA) and (open > slowSMA) and (close > slowSMA))
bearPierce = ((high > fastEMA) and (open < fastEMA) and (close < fastEMA)) or ((high > medmEMA) and (open < medmEMA) and (close < medmEMA)) or ((high > slowSMA) and (open < slowSMA) and (close < slowSMA))
    
// Specify Entry Conditions
longEntry = fanUpTrend and bullishPinBar and bullPierce
shortEntry = fanDnTrend and bearishPinBar and bearPierce

// Long Entry Function
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = low[1] - atr[1] * atr_mult
    entryPrice = high[1]
    units = risk / (entryPrice - stopLoss)
    strategy.entry("long", strategy.long, units, stop=entryPrice)
    strategy.exit("exit long", from_entry="long", trail_points=slPoints, trail_offset=slOffset)
    
// Short Entry Function
entershort() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = high[1] + atr[1] * atr_mult
    entryPrice = low[1]
    units = risk / (stopLoss - entryPrice)
    strategy.entry("short", strategy.short, units, stop=entryPrice)
    strategy.exit("exit short", from_entry="short", trail_points=slPoints, trail_offset=slOffset)
    
// Execute Long Entry
if (longEntry)
    enterlong()

// Execute Short Entry
if (shortEntry)
    entershort() 
    
// Cancel the Entry if Bar Time is Exceeded
strategy.cancel("long", barssince(longEntry) > ent_canc)
strategy.cancel("short", barssince(shortEntry) > ent_canc)

// Force Close During Certain Conditions
strategy.close_all(when = hour==16 and dayofweek==dayofweek.friday, comment = "exit all, market-closed")
strategy.close_all(when = crossunder(fastEMA, medmEMA), comment = "exit long, re-cross")
strategy.close_all(when = crossover(fastEMA, medmEMA), comment = "exit short, re-cross")

// Plot Moving Averages to Chart
plot(fastEMA, color=color.red)
plot(medmEMA, color=color.blue)
plot(slowSMA, color=color.green)

// Plot Pin Bars to Chart
plotshape(bullishPinBar, text='Bull PB', style=shape.labeldown, location=location.abovebar, color=color.green, textcolor=color.white, transp=0)
plotshape(bearishPinBar, text='Bear PB', style=shape.labelup, location=location.belowbar, color=color.red, textcolor=color.white, transp=0)

// Plot Days of Week
plotshape(hour==0 and dayofweek==dayofweek.monday, text='Monday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.tuesday, text='Tuesday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.wednesday, text='Wednesday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.thursday, text='Thursday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==0 and dayofweek==dayofweek.friday, text='Friday', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)
plotshape(hour==16 and dayofweek==dayofweek.friday, text='Market Closed', style=shape.labeldown, location=location.abovebar, color=color.black, textcolor=color.white, transp=0)









Mehr