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.
Das Einstiegssignal für diese Strategie ist das Durchdringen von Pinbars.
Eine solche Kombination sorgt dafür, dass die meisten Geräusche ausfiltert und die Eingangsgenauigkeit erhöht wird.
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.
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.
Die Durchdringungssignale erlauben den Einstieg nur an Chancenpunkten mit hoher Wahrscheinlichkeit, wodurch übermäßige Lärmtrades vermieden werden.
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.
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.
Ü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.
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.
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.
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)