Estrategia de trading en red basada en un sistema de media móvil


Fecha de creación: 2024-01-03 17:18:22 Última modificación: 2024-01-03 17:18:22
Copiar: 0 Número de Visitas: 1029
1
Seguir
1621
Seguidores

Estrategia de trading en red basada en un sistema de media móvil

Descripción general

Esta estrategia utiliza la teoría de la línea media para construir un sistema de negociación de la grilla, para determinar la tendencia del mercado a través de una combinación de líneas medias JMA de diferentes parámetros, y para iniciar una negociación de la grilla en un punto de cambio de tendencia con el objetivo de obtener ganancias de la conversión de la tendencia de la línea media del mercado.

Principio de estrategia

  1. Utiliza una combinación de líneas de medias JMA de 1 a 20 ciclos diferentes para determinar la tendencia del mercado. Cuando las medias de corto período son más altas que las medias de largo período, se considera una tendencia alcista, y viceversa, una tendencia descendente.

  2. En el punto de cambio de tendencia, es decir, cuando la media corta cruza la media larga desde arriba hacia abajo o desde abajo hacia la media larga, abra la rejilla de operaciones. En la tendencia ascendente, construya gradualmente una sola carta; en la tendencia descendente, construya gradualmente varias cartas.

  3. Se puede elegir si se filtra por el color de la entidad de la línea K. Si está activado, solo se compra en la línea K roja y se vende en la línea K verde. De lo contrario, no se considera el color de la línea K y solo se negocia cuando la tendencia se invierte.

  4. El método de parada de pérdidas es el de seguimiento de la parada de pérdidas o la parada de vencimiento. La parada de vencimiento se refiere al cierre de todas las posiciones al final del ciclo de ejecución de la estrategia.

Análisis de las ventajas

  1. El uso de un sistema de medias líneas para juzgar la tendencia, puede ser eficaz para juzgar el punto de inflexión en el movimiento de la línea larga del mercado.

  2. El comercio de la rejilla permite obtener ganancias en el mercado de la conmoción cuando no hay una tendencia clara. Al mismo tiempo, se puede configurar un stop loss para controlar el riesgo.

  3. Los parámetros de la línea media de JMA son personalizables y se pueden optimizar para diferentes períodos, con gran flexibilidad.

  4. Se puede elegir si se filtra por el color de la entidad de la línea K, para evitar ser engañado por el falso avance.

Análisis de riesgos

  1. El riesgo de pérdidas es mayor en mercados con grandes movimientos y sin tendencias evidentes.

  2. El error de juicio del sistema de línea media puede llevar a una señal de negociación errónea.

  3. Si se activa el filtro de línea K, se corre el riesgo de perder algunas oportunidades comerciales.

  4. Si el espacio entre las rejillas es demasiado grande, no se puede obtener suficiente beneficio; si es demasiado pequeño, hay demasiadas posiciones y una gran presión de gastos.

Dirección de optimización

  1. Los parámetros de más combinaciones pueden ser probados para encontrar combinaciones de JMA más adecuadas para diferentes variedades.

  2. Se puede combinar con otros indicadores para filtrar, como el canal BOLL, KD, etc., para mejorar la calidad de la señal.

  3. Los parámetros que permiten optimizar la configuración de las transacciones de la red, como el espacio entre las redes, el número de almacenes construidos y otros.

  4. Se pueden considerar más tipos de paradas, como paradas de salto, paradas de seguimiento, etc.

Resumir

Esta estrategia se basa en la teoría de la línea media de JMA para determinar el cambio de tendencia y abrir una operación en la red en el punto de cambio. Se obtiene ganancias por la conversión de la tendencia de la línea larga en el mercado. Se puede obtener un mejor rendimiento de la estrategia mediante la optimización de los parámetros. En general, la estrategia es adecuada para la tenencia a medio o largo plazo y el seguimiento gradual de la tendencia para obtener ganancias.

Código Fuente de la Estrategia
/*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)