Estrategia de negociación en red basada en el sistema de medias móviles

El autor:¿ Qué pasa?, Fecha: 2024-01-03 17:18:22
Las etiquetas:

img

Resumen general

Esta estrategia utiliza la teoría de promedios móviles para construir un sistema de negociación en red al juzgar la tendencia del mercado a través de múltiples conjuntos de promedios móviles JMA con diferentes parámetros.

Estrategia lógica

  1. Para determinar la tendencia del mercado, utilizar una combinación de medias móviles JMA de 1 a 20 períodos.

  2. Las operaciones de cuadrícula se abren en los puntos de inversión de tendencia, cuando el MA corto cruza por debajo o por encima del MA largo.

  3. Una opción para filtrar en función del color del candelabro: solo compre con velas rojas y venda con velas verdes, de lo contrario, ignore el color y negocie solo en la inversión de tendencia.

  4. Las salidas son un seguimiento de la parada de pérdida o una salida basada en el tiempo cuando termina la duración de la estrategia.

Análisis de ventajas

  1. El uso del sistema MA para determinar las tendencias puede identificar eficazmente las inversiones de tendencia a largo plazo.

  2. El comercio en red puede capturar ganancias de mercados de rango sin tendencias claras, con stop loss para controlar los riesgos.

  3. Parámetros JMA personalizables, se pueden optimizar para diferentes períodos, alta flexibilidad.

  4. El filtro de vela evita ser engañado por falsos brotes.

Análisis de riesgos

  1. Los mercados de fiebre alta sin tendencias claras tienen mayores riesgos de stop loss.

  2. Los errores de juicio del sistema MA pueden dar lugar a señales comerciales incorrectas.

  3. El filtro de velas corre el riesgo de perder algunas oportunidades comerciales.

  4. Si el espacio entre las redes es demasiado amplio, los beneficios son insuficientes; demasiado estrecho puede resultar en demasiadas posiciones y altos costos.

Direcciones de optimización

  1. Prueba más combinaciones de parámetros para encontrar combinaciones óptimas de JMA MA para diferentes productos.

  2. Incorporar otros filtros como bandas BOLL, KD, etc. para mejorar la calidad de la señal.

  3. Optimizar las configuraciones de la red, como el espaciamiento de la red, los lotes de entrada, etc.

  4. Considere más métodos de stop loss como basados en brechas, trailing stops, etc.

Conclusión

Esta estrategia juzga las reversiones utilizando la teoría JMA y abre operaciones de red en puntos de inflexión para capturar ganancias de cambios de tendencia a largo plazo.


/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's Fishnet Strategy", shorttitle = "Fishnet str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
usecf = input(false, defval = false, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//JMA
jmax(src, len) =>
    beta = 0.45*(len-1)/(0.45*(len-1)+2)
    alpha = pow(beta, 3)
    L0=0.0, L1=0.0, L2=0.0, L3=0.0, L4=0.0
    L0 := (1-alpha)*src + alpha*nz(L0[1])
    L1 := (src - L0[0])*(1-beta) + beta*nz(L1[1])
    L2 := L0[0] + L1[0]
    L3 := (L2[0] - nz(L4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(L3[1])
    L4 := nz(L4[1]) + L3[0]
	L4

ma01 = jmax(close, 10)
ma02 = jmax(close, 20)
ma03 = jmax(close, 30)
ma04 = jmax(close, 40)
ma05 = jmax(close, 50)
ma06 = jmax(close, 60)
ma07 = jmax(close, 70)
ma08 = jmax(close, 80)
ma09 = jmax(close, 90)
ma10 = jmax(close, 100)
ma11 = jmax(close, 110)
ma12 = jmax(close, 120)
ma13 = jmax(close, 130)
ma14 = jmax(close, 140)
ma15 = jmax(close, 150)
ma16 = jmax(close, 160)
ma17 = jmax(close, 170)
ma18 = jmax(close, 180)
ma19 = jmax(close, 190)
ma20 = jmax(close, 200)

trend = 0
trend := ma01 > ma20 ? 1 : ma01 < ma20 ? -1 : trend[1]
col = trend == 1 ? #00FF7F : #DC143C

plot(ma01, transp = 0, color = col)
plot(ma02, transp = 0, color = col)
plot(ma03, transp = 0, color = col)
plot(ma04, transp = 0, color = col)
plot(ma05, transp = 0, color = col)
plot(ma06, transp = 0, color = col)
plot(ma07, transp = 0, color = col)
plot(ma08, transp = 0, color = col)
plot(ma09, transp = 0, color = col)
plot(ma10, transp = 0, color = col)
plot(ma11, transp = 0, color = col)
plot(ma12, transp = 0, color = col)
plot(ma13, transp = 0, color = col)
plot(ma14, transp = 0, color = col)
plot(ma15, transp = 0, color = col)
plot(ma16, transp = 0, color = col)
plot(ma17, transp = 0, color = col)
plot(ma18, transp = 0, color = col)
plot(ma19, transp = 0, color = col)
plot(ma20, transp = 0, color = col)

//Trading
lot = 0.0
lot := strategy.equity / close * capital / 100

if trend == 1 and (close < open or usecf == false)
    strategy.entry("Long", strategy.long, needlong ? lot : na)

if trend == -1 and (close > open or usecf == false)
    strategy.entry("Short", strategy.short, needshort ? lot : na)
    

Más.