Персинг-пин-бар (англ. Piercing Pin Bar Reversal Strategy) - это стратегия торговли трендом, основанная на краткосрочных ценовых моделях.
Входный сигнал для этой стратегии - пробивание штифтовых стволов.
Такая комбинация обеспечивает фильтрацию большинства шума и повышает точность ввода.
Стратегия использует три МА разных периодов для определения тенденций. В частности, когда быстрые, средние и медленные МА выстраиваются в одном направлении, это определяется как тенденция. В противном случае это считается консолидацией.
Для длинных записей требуется быстрая MA > средняя MA > медленная MA. Для коротких записей требуется быстрая MA < средняя MA < медленная MA.
Стратегия использует уникальный механизм отслеживания стоп-лосса. После входа оптимальные точки отслеживания стоп-лосса отслеживаются на основе определенных пользователем значений для отслеживания точек и смещения. Это позволяет максимизировать полученную прибыль при одновременном контроле риска.
Пробивающие сигналы позволяют входить только в точки возможности с высокой вероятностью, избегая чрезмерно шумных сделок. Сочетание с фильтрами тренда дополнительно избегает большинства операций с контртендом. Это обеспечивает высокую точность для стратегии.
Уникальная остановка остановки является самой большой особенностью этой стратегии. Она точно контролирует остановку потери в пределах небольшого диапазона на основе каждой сделки, обеспечивая при этом максимальную полученную прибыль.
Результаты моделирования показывают безумную прибыльность после применения этого механизма, с общей доходностью, превышающей 1000% для нескольких пар, и максимальной прибылью на сделку более чем в 100 раз превышающей начальный риск.
Учитывая результаты, похожие на "святой Грааль", весьма вероятно, что это перегруженная симуляция рынков.
Кроме того, короткий двухлетний испытательный период может не охватывать структурные изменения рыночного режима, которые могут повлиять на реальные результаты.
Слишком чувствительные значения остановки задержки могут привести к чрезмерным нежелательным остановкам. Внезапные события на рынке также могут недействительными сделать ордера задержки.
Чтобы сделать его и гибким, и надежным, попробуйте расслабиться, чтобы избежать чрезмерной чувствительности.
Увеличение срока испытаний также помогает проверить надежность параметров.
Стратегия перехода на пирсинговые штифты достигла удивительных результатов обратных испытаний благодаря высокой эффективности входа и чрезвычайной прибыли.
При правильной настройке параметров или оптимизации эта стратегия может принести значительную прибыль в живой торговле, став мощной системой, следующей за трендом.
/*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)