Estrategia de trading con media móvil de tendencia


Fecha de creación: 2023-09-21 20:34:43 Última modificación: 2023-09-21 20:34:43
Copiar: 0 Número de Visitas: 672
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia utiliza una combinación de líneas medias rápidas y lentas para determinar la dirección de la tendencia, para capturar tendencias de líneas medias y largas para realizar operaciones de tendencia. Hacer más cuando se cruza la media lenta en la línea media rápida y hacer un hueco cuando se cruza la media lenta por debajo de la línea media rápida es una estrategia típica de seguimiento de tendencias.

Principio de estrategia

La estrategia se basa principalmente en la línea de avance para determinar la tendencia del mercado. En concreto, la estrategia utiliza una línea de avance rápida de 5 ciclos y una línea de avance lenta de 21 ciclos.

Cuando la línea de media rápida cruza la línea de media lenta, la estrategia hace un cambio de tendencia en el mercado, y la estrategia hará más en la siguiente apertura de la línea K. Cuando la línea de media rápida cruza la línea de media lenta, la estrategia hace un cambio de tendencia en el mercado, y la estrategia hará hueco en la siguiente apertura de la línea K.

Además, la estrategia también establece el parámetro de la barra de barras para filtrar falsas rupturas. El valor predeterminado de este parámetro es 2, es decir, la línea media rápida requiere 2 líneas K consecutivas sobre la línea media lenta para emitir más señales y poder filtrar falsas rupturas de manera efectiva.

Para las criptomonedas, la estrategia también incluye la lógica de juicio de extremo. La señal de negociación se emite solo cuando la línea media rápida y la línea media lenta se encuentran simultáneamente en la zona extrema. Esto también es para evitar más falsos brechas.

Las reglas de salida estratégica son simples y directas: cuando el precio dispara el punto de parada, se retira de la posición actual.

Ventajas estratégicas

  • El uso de un sistema de doble línea para rastrear las tendencias de manera efectiva
  • Las líneas medias rápidas tienen una longitud más corta para capturar los cambios de tendencia en tiempo real.
  • La longitud de la línea media lenta es más larga y permite determinar la dirección principal.
  • Los parámetros de las barras de la barra pueden filtrar algunas brechas falsas
  • El juicio de extremos puede evitar falsas rupturas ocasionales cerca de puntos clave
  • El uso de la pérdida móvil para controlar el riesgo

Riesgo estratégico

  • Las estrategias de doble línea son propensas a sufrir pérdidas en los puntos de cambio de tendencia
  • El deterioro móvil puede detenerse prematuramente
  • El filtro de los parámetros de las barras de la barra no es suficiente y puede perder el punto de compra
  • Los juicios de valor extremo pueden perder el punto de compra en ciertos casos.
  • Esta estrategia es más adecuada para mercados de fuerte tendencia que para mercados de balanceo de crisis.

El riesgo puede reducirse de la siguiente manera:

  • Optimización de los parámetros de las barras de acero para encontrar el equilibrio
  • Intentar filtrar otros indicadores, como el MACD
  • Ajuste el punto de parada para evitar el deterioro prematuro
  • Consideraciones para el mecanismo de reingreso

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros de línea media

Se pueden probar más combinaciones para encontrar los parámetros de la línea media más adecuados para el mercado actual. Por ejemplo, ajustar la línea rápida a 10 ciclos y la línea lenta a 50 ciclos.

  1. Añadir otros indicadores de juicio

Se pueden probar otros indicadores como MACD, KDJ, etc., para establecer condiciones más estrictas y evitar falsas brechas.

  1. Mecanismo de admisión optimizado

La entrada actual es demasiado simple y depende de la línea media, que se puede optimizar de la siguiente manera:

  • En la línea rápida, el MACDDIFF también usa 0 para entrar.
  • En la línea rápida, se puede ver si KDJ también tiene un garfio de oro para entrar.
  1. Optimización de los mecanismos de pérdidas

Se pueden probar otras formas de detener el deterioro, como el seguimiento de los estancamientos con el precio, para evitar que los estancamientos se activen demasiado pronto.

  1. Acompañamiento en el mecanismo de reinserción

Cuando la posición se detiene, se puede volver a entrar, lo que reduce la posibilidad de que se detenga fuera de la tendencia.

Resumir

Esta estrategia es una estrategia de seguimiento de tendencias básica, la idea central es simple y directa, utiliza la dirección de la tendencia de juicio de doble equilátero, y el stop loss móvil para controlar el riesgo. La ventaja es que es fácil de entender y implementar, se puede seguir la tendencia para obtener ganancias, y el riesgo también puede ser controlado. Pero al mismo tiempo, hay algunas deficiencias, la señal es inexacta en el mercado de liquidación, y el stop loss es fácil de desencadenar demasiado pronto.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
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")

src = close

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading
stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()