El autor:¿ Qué pasa?, Fecha: 2024-01-25 12:29:29
Las etiquetas:

img

Resumen general

La Estrategia de Inversión de Barras de Pin de Perforación es una estrategia de trading de tendencia basada en patrones de precios a corto plazo. Utiliza barras de pin como señales, combinadas con promedios móviles para determinar la dirección de la tendencia, para lograr una entrada de alta precisión. También utiliza un mecanismo único de trailing stop para lograr una rentabilidad extremadamente alta.

Principios

Señales de entrada

La señal de entrada para esta estrategia es perforar barras de alfiler.

  1. Se forma un patrón particular a corto plazo: señales alcistas de barras alcistas, señales bajistas de barras bajistas
  2. La barra de la perilla atraviesa las medias móviles: barras alcistas que atraviesan las MAs con tendencia a la baja, o barras bajistas que atraviesan las MAs con tendencia a la alza

Dicha combinación asegura el filtrado de la mayor parte del ruido y aumenta la precisión de entrada.

Definición de tendencia

La estrategia utiliza tres MAs de diferentes períodos para definir tendencias. Específicamente, cuando los MAs rápidos, medios y lentos se alinean en una dirección, se define como una tendencia. De lo contrario, se considera como consolidación.

Para las entradas largas, se requiere un MA rápido > medio MA > lento MA. Para las entradas cortas, se requiere un MA rápido < medio MA < lento MA.

Mecanismo para detener la pérdida

La estrategia utiliza un mecanismo único de stop loss de trailing. Después de la entrada, los puntos óptimos de stop loss se rastrean en función de los valores definidos por el usuario para los puntos de trailing y offset. Esto permite maximizar el beneficio capturado mientras se controla el riesgo.

Análisis de ventajas

Entrada de alta eficiencia

Las señales de penetración permiten la entrada solo en puntos de oportunidad de alta probabilidad, evitando operaciones excesivamente ruidosas. La combinación con filtros de tendencia evita aún más la mayoría de las operaciones de contratrend. Esto garantiza una alta precisión para la estrategia.

Obtención de ganancias extremadamente fuertes

El único stop de seguimiento es el punto más destacado de esta estrategia. controla con precisión el stop loss dentro de un pequeño rango por operación, al tiempo que garantiza el máximo beneficio capturado.

Los resultados de la simulación muestran una rentabilidad insana después de aplicar este mecanismo, con un rendimiento total superior al 1000% para múltiples pares, y un beneficio máximo por operación de más de 100 veces el riesgo inicial.

Análisis de riesgos

Riesgo de sobreajuste

Dados los resultados casi "santo grial", es muy probable que se trate de una simulación sobreajustada de los mercados.

Además, es posible que el corto período de prueba de dos años no capte los cambios estructurales del régimen del mercado que podrían afectar a los resultados reales.

Riesgos de dejar atrás

Los valores excesivamente sensibles de las paradas de seguimiento pueden causar paradas no deseadas excesivas. Los eventos repentinos del mercado también pueden invalidar las órdenes de paradas de pérdida de seguimiento. Estos son riesgos intrínsecos asociados con el uso de paradas de seguimiento.

Direcciones de optimización

Ajustar los parámetros de parada de seguimiento

Para que sea ágil y confiable, trata de relajar los puntos de arrastre para evitar la sobre-sensibilidad.

Aumentar el plazo de prueba también ayuda a examinar la robustez de los parámetros.

Optimización de los períodos de evaluación

Los períodos actuales de MA probablemente no sean el conjunto óptimo de parámetros.

Por ejemplo, aumentando la diferencia entre los períodos de admisión rápida y media, o modificando la forma en que las admisiones medias interactúan.

Conclusión

La estrategia de reversión de las barras perforadoras logró resultados sorprendentes en las pruebas de retroceso a través de una entrada de alta eficiencia y una extracción de ganancias extremas.

Con el ajuste o la optimización adecuada de los parámetros, esta estrategia puede ser capaz de generar ganancias considerables en el comercio en vivo, convirtiéndose en un poderoso sistema de seguimiento de tendencias.


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









Más.