
La estrategia de inversión de línea corta es una estrategia de negociación de tendencias basada en la forma de la línea corta. Utiliza la forma de la línea corta como señal, en combinación con el promedio móvil para determinar la dirección de la tendencia y lograr una entrada de alta ganancia.
La estrategia de entrada de la señal es una punción en forma de línea corta. En concreto, la señal se genera cuando se cumplen las dos condiciones siguientes:
Esta combinación de señales puede filtrar la mayor parte del ruido, lo que mejora la precisión de entrada.
La estrategia utiliza promedios móviles de tres períodos diferentes para juzgar la tendencia. Concretamente, la línea rápida, la línea media y la línea lenta se definen como tendencias cuando se alinean de manera isotérmica, y se definen como consolidaciones de otra manera.
En caso de entrada múltiple, se requiere la línea rápida > línea media > línea lenta; en caso de entrada en blanco, se requiere la línea rápida < línea media < línea lenta.
La estrategia utiliza un mecanismo de seguimiento de pérdidas único. Una vez abierta la posición, se rastreará el punto de parada óptimo según el número de puntos y la desviación establecidos por el usuario. Esto puede bloquear la máxima ganancia y controlar el riesgo.
Las señales de penetración de líneas cortas permiten que la estrategia abra posiciones solo en oportunidades de alta probabilidad, evitando el exceso de comercio de ruido. Al mismo tiempo, en combinación con el juicio de tendencias, se puede filtrar la mayoría de las operaciones de dirección no convencional. Esto garantiza la alta precisión de la estrategia.
El único mecanismo de seguimiento de las pérdidas es el punto fuerte de la estrategia. Se puede controlar con precisión cada parada de pérdidas en un pequeño rango, garantizando una alta tasa de éxito y una gran capacidad de ganancias, mientras se garantiza la máxima ganancia.
Los resultados de la simulación muestran que, después de usar este mecanismo, las parejas de varias monedas lograron un rendimiento total de más del 1000%, un máximo de ganancias de más de 100 veces, y las ganancias se dispararon a niveles nunca antes vistos.
Dado que los resultados de las pruebas están cerca de la copa sagrada, es probable que sea el resultado de una simulación excesiva del mercado. El mecanismo de suspensión de pérdidas en el disco duro puede no funcionar con la precisión de las pruebas y enfrentará una retirada.
Además, el período de prueba es de solo dos años, y los cambios en la estructura del mercado también pueden afectar el rendimiento del disco físico.
El exceso de sensibilidad de la trazabilidad de la parada puede causar demasiados disparos de parada. Además, los eventos inesperados en el mercado también pueden causar la invalidez de la parada. Estos son los riesgos que se enfrentan con el uso de la trazabilidad de la parada.
El seguimiento de los puntos de parada es clave para el estallido de ganancias de toda la estrategia. Para que sea sensible y fiable, se puede intentar una relajación adecuada del seguimiento de los puntos de parada para que sean menos sensibles.
El aumento de la ventana de tiempo de prueba también permite comprobar la estabilidad de los parámetros.
El ciclo de la media móvil actual no es la combinación óptima de parámetros. Se puede encontrar un mejor parámetro a través de pruebas de optimización para obtener mejores resultados.
Por ejemplo, aumentar el intervalo de periodicidad entre la línea rápida y la línea media, o ajustar el modo de cruce de tres líneas, etc.
La estrategia de inversión de la línea corta de penetración obtiene un sorprendente índice de prueba de simulación a través de una entrada de entrada eficiente y una parada súper potente. Sin embargo, debemos estar alertas para reconocer el riesgo de sobreajuste y estar preparados para controlar el riesgo.
La estrategia, si se ajustan los parámetros o se optimizan adecuadamente, puede generar ganancias significativas en el mercado real y convertirse en un sistema de tendencias potente. Su concepto único de seguimiento de los paros también nos ofrece una valiosa revelación que podría generar más estrategias innovadoras.
/*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)