
Esta estrategia combina los indicadores de EMA del marco temporal múltiple con el juicio de la forma de la línea K para lograr una captura de señal de línea larga y una salida de pérdida más sensible.
La estrategia se basa en los siguientes indicadores:
EMA mediana: utiliza 13 ciclos, 21 ciclos 2 grupos de EMA, para determinar si el precio se rompe y forma una señal de negociación.
Forma de la línea K: determina la dirección de la entidad de la línea K, se utiliza en combinación con el indicador EMA, se filtra la falsa ruptura.
Resistencia de soporte: Construido con el punto más alto de 10 ciclos más recientes, se juzga que la ruptura mejora la fiabilidad de la señal a través de la zona.
Aumentar el punto: 120 períodos de cierre de cerrar el precio sobre el precio de apertura de abrir el juicio como un punto de aumento, como un juicio auxiliar.
Las reglas de generación de señales de transacción son:
Señales múltiples: el EMA rápido se rompe hacia arriba con el EMA lento, y para la línea K de la línea izquierda, se cierra la bodega vacía.
Señales de cabeza vacía: el EMA rápido cae por encima del EMA lento, y para la línea K de la línea negativa, se elimina el exceso de posiciones.
Expulsión de pérdidas: cuando se emite la señal de contragolpe, se retira de la posición actual.
El riesgo se puede mitigar evitando la optimización excesiva, seleccionando cuidadosamente los parámetros y controlando estrictamente el tamaño de la posición.
Esta estrategia integra el indicador de EMA del marco temporal múltiple con el juicio de la entidad de la línea K, lo que permite un juicio de tendencias más confiable. Al mismo tiempo, combina la resistencia de soporte con la situación de tiempo para ayudar a garantizar la calidad de la señal.
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)
open_long = 0
close_position = 0
last_long=close
last_short=close
//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false
//-----------------Support and Resistance
RST = input(title='Support / Resistance length:', defval=10)
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
//--------------------Trend colour ema------------------------------------------------//
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1
if (long_signal == 1)
strategy.entry("Long Open", strategy.long)
if (short_signal == -1)
strategy.close("Long Open")
if (long_signal[1] == 1 and short_signal[1] == 1)
open_long := 1
close_position := 0
if (short_signal[1] == -1 and long_signal[1] == -1)
open_long := 0
close_position := 1
plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)
///////////////////////////////////////////////////////////////////////////////////////////