Estrategia de negociación basada en la combinación de la EMA de intervalo de tiempo múltiple y el patrón de línea K

El autor:¿ Qué pasa?, Fecha: 2024-02-21 15:00:06
Las etiquetas:

img

Resumen general

Esta estrategia integra múltiples indicadores de EMA de marcos de tiempo y juicios de patrones de línea K para lograr captura de señales a largo plazo y salidas de stop-loss relativamente sensibles.

Principio de la estrategia

La estrategia se basa principalmente en los siguientes indicadores de evaluación:

  1. EMA: utiliza 2 series de 13 y 21 ciclos de EMA para determinar la señal de negociación cuando el precio se rompe.

  2. Patrón de línea K: juzga la dirección de la entidad de línea K y la utiliza con el indicador EMA para filtrar los avances falsos.

  3. Resistencia de soporte: construida por los puntos más altos en los últimos 10 ciclos para determinar si el avance pasa por esta área para mejorar la fiabilidad de la señal.

  4. Ascenso en la división del tiempo: 120 ciclo de cierre está arriba abierto para juzgar como ascenso en la división del tiempo, como un juicio auxiliar.

Las reglas para generar señales comerciales son:

  1. Señal alcista: la EMA rápida rompe la EMA lenta hacia arriba con una línea Yang K-line, cierra la posición corta y abre la larga.

  2. Una señal bajista: la EMA rápida se rompe a través de la EMA lenta con una línea Yin-línea K, posición larga plana.

  3. Salida de pérdida de parada: Salida de pérdida de parada en la posición actual cuando aparece la señal de marcha atrás.

Ventajas

  1. Los indicadores EMA de marcos de tiempo múltiples juzgan la tendencia de manera más confiable y evitan falsos avances.
  2. Combinado con la dirección de la entidad de la línea K para filtrar para identificar tendencias con mayor precisión.
  3. Aumentar los juicios de división de tiempo y apoyar los juicios de resistencia para garantizar la calidad de la señal.
  4. Utilice señales invertidas como stop loss para reducir el riesgo de pérdida.

Los riesgos

  1. El riesgo de que los avances no válidos resulten en pérdidas: los juicios de la EMA y de las entidades de línea K sobre los marcos de tiempo múltiples aún no pueden evitar por completo el impacto de los avances no válidos en la estrategia.
  2. Riesgo de selección de parámetros inadecuada: la configuración inadecuada de los ciclos de EMA y los ciclos de juicio de la línea K conducirán a una disminución de la calidad de la señal.
  3. El riesgo de fallo en la resistencia de soporte es común, esto también conducirá a la falta de impulso cuando se generan señales.
  4. Riesgo de fallo de la división temporal: la situación de la división temporal cambia y no se puede confiar completamente en ella para el juicio.

Los riesgos anteriores pueden mitigarse mediante métodos como evitar la optimización excesiva, la selección cuidadosa de parámetros, el control estricto del tamaño de la posición.

Direcciones de optimización

  1. Introducir modelos de aprendizaje automático para ayudar al juicio. Entrenar modelos de clasificación para juzgar las direcciones de las entidades de la línea K para una mayor precisión.
  2. Aumentar el mecanismo de stop loss adaptativo como las paradas de trailing o las paradas basadas en la volatilidad.
  3. Combine el análisis sentimental e introduzca ciertos juicios de opinión de los medios para evitar el impacto de las noticias negativas.
  4. Añadir el módulo de gestión de posiciones de tamaño.

Conclusión

La estrategia integra múltiples juicios de la entidad del marco de tiempo EMA y la línea K para juicios de tendencia relativamente confiables. Los juicios auxiliares que utilizan resistencia de soporte y división de tiempo aseguran la calidad de la señal. El uso de señales inversas para stop loss puede controlar eficazmente la pérdida de stop single. Las optimizaciones futuras se pueden hacer mediante la introducción de modelos de aprendizaje automático, paradas adaptativas, análisis sentimental y módulos de gestión de tamaño de posición para hacer la estrategia más robusta.


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

///////////////////////////////////////////////////////////////////////////////////////////

Más.