Estrategia de seguimiento de tendencias con tres promedios móviles


Fecha de creación: 2024-02-02 17:30:09 Última modificación: 2024-02-02 17:30:09
Copiar: 1 Número de Visitas: 567
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias con tres promedios móviles

Descripción general

Esta estrategia, llamada el rayo de luz colorado, es una estrategia de seguimiento de tendencias basada en tres medias móviles. Determina la tendencia de los precios calculando el cruce de la línea rápida, la línea media y la línea lenta y establece el precio objetivo y el precio de parada con el valor de ATR.

Principio de estrategia

La estrategia utiliza las siguientes tres medias móviles:

  1. Las medias móviles ponderadas de 13 días, usadas para determinar tendencias a corto plazo
  2. Promedio móvil de 55 días para determinar tendencias a medio plazo
  3. Un promedio móvil simple de 110 días para determinar tendencias a largo plazo

Cuando la línea rápida atraviesa la línea media y la línea media atraviesa la línea lenta, se juzga como una tendencia múltiple; cuando la línea rápida atraviesa la línea media y la línea media atraviesa la línea lenta, se juzga como una tendencia en blanco.

La estrategia también incluye varias condiciones adicionales para filtrar algunas transacciones de ruido:

  1. Los primeros cinco puntos bajos de la línea K están por encima de la línea media.
  2. Las dos primeras líneas K tienen puntos bajos y bajan de la línea media.
  3. El precio de cierre de la primera línea K está por encima de la línea media.

Cuando cumple con estas condiciones, se emite una señal de hacer más o hacer menos. Cada vez que se mantiene una posición, solo se puede abrir una posición después de cerrar la posición o detener la pérdida.

El precio objetivo y el precio de parada se establecen en base a un determinado múltiplo de los valores ATR.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de tres combinaciones de medias móviles para juzgar tendencias evita la probabilidad de error en un solo indicador.
  2. La configuración de múltiples condiciones auxiliares para filtrar el intercambio de ruido puede mejorar la calidad de la señal.
  3. El ATR está diseñado para controlar pérdidas individuales.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. Las combinaciones de medias móviles pueden emitir señales erróneas y requieren una respuesta adecuada.
  2. La configuración incorrecta de los coeficientes ATR puede causar que el stop loss sea demasiado flexible o estricto.
  3. El precio de las fluctuaciones no puede filtrar de manera efectiva los eventos repentinos.

Para controlar el riesgo, se recomienda ajustar adecuadamente los parámetros de las medias móviles, optimizar los múltiplos de ATR y configurar el tiempo máximo de tenencia para evitar pérdidas individuales excesivas.

Dirección de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba de promedios móviles de diferentes longitudes o tipos.
  2. Parámetros para optimizar las condiciones auxiliares.
  3. Prueba con otros indicadores para predecir tendencias, como el MACD, el DMI, etc.
  4. Los indicadores de capacidad de combinación como el volumen de transacciones, la diferencia de precios y otras señales de filtración.

Resumir

Esta estrategia es una estrategia de seguimiento de tendencias estable. Se basa principalmente en las medias móviles para determinar la dirección de la tendencia, y tiene un conjunto de indicadores técnicos para ayudar a filtrar parte del ruido. Aunque todavía hay espacio para una optimización adicional, el riesgo general es controlado y es adecuado para invertir en seguimiento de tendencias de línea media-larga.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)