Стратегия переворота штифта пирсинга

Автор:Чао Чжан, Дата: 2024-01-25 12:29:29
Тэги:

img

Обзор

Персинг-пин-бар (англ. Piercing Pin Bar Reversal Strategy) - это стратегия торговли трендом, основанная на краткосрочных ценовых моделях.

Принципы

Сигналы въезда

Входный сигнал для этой стратегии - пробивание штифтовых стволов.

  1. Формируется определенная краткосрочная закономерность: бычьи сигналы от бычьих штрихов, медвежие сигналы от медвежих штрихов
  2. Пин-бар проникает через скользящие средние значения: бычьи, проникающие вниз, или медвежие, проникающие вверх.

Такая комбинация обеспечивает фильтрацию большинства шума и повышает точность ввода.

Определение тенденции

Стратегия использует три МА разных периодов для определения тенденций. В частности, когда быстрые, средние и медленные МА выстраиваются в одном направлении, это определяется как тенденция. В противном случае это считается консолидацией.

Для длинных записей требуется быстрая MA > средняя MA > медленная MA. Для коротких записей требуется быстрая MA < средняя MA < медленная MA.

Механизм остановки потерь

Стратегия использует уникальный механизм отслеживания стоп-лосса. После входа оптимальные точки отслеживания стоп-лосса отслеживаются на основе определенных пользователем значений для отслеживания точек и смещения. Это позволяет максимизировать полученную прибыль при одновременном контроле риска.

Анализ преимуществ

Высокоэффективный вход

Пробивающие сигналы позволяют входить только в точки возможности с высокой вероятностью, избегая чрезмерно шумных сделок. Сочетание с фильтрами тренда дополнительно избегает большинства операций с контртендом. Это обеспечивает высокую точность для стратегии.

Чрезвычайно сильное извлечение прибыли

Уникальная остановка остановки является самой большой особенностью этой стратегии. Она точно контролирует остановку потери в пределах небольшого диапазона на основе каждой сделки, обеспечивая при этом максимальную полученную прибыль.

Результаты моделирования показывают безумную прибыльность после применения этого механизма, с общей доходностью, превышающей 1000% для нескольких пар, и максимальной прибылью на сделку более чем в 100 раз превышающей начальный риск.

Анализ рисков

Риск чрезмерной физической подготовки

Учитывая результаты, похожие на "святой Грааль", весьма вероятно, что это перегруженная симуляция рынков.

Кроме того, короткий двухлетний испытательный период может не охватывать структурные изменения рыночного режима, которые могут повлиять на реальные результаты.

Риски отставания

Слишком чувствительные значения остановки задержки могут привести к чрезмерным нежелательным остановкам. Внезапные события на рынке также могут недействительными сделать ордера задержки.

Руководство по оптимизации

Регулировать параметры остановки слежения

Чтобы сделать его и гибким, и надежным, попробуйте расслабиться, чтобы избежать чрезмерной чувствительности.

Увеличение срока испытаний также помогает проверить надежность параметров.

Оптимизировать периоды MA

Заключение

Стратегия перехода на пирсинговые штифты достигла удивительных результатов обратных испытаний благодаря высокой эффективности входа и чрезвычайной прибыли.

При правильной настройке параметров или оптимизации эта стратегия может принести значительную прибыль в живой торговле, став мощной системой, следующей за трендом.


/*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)









Больше