Estrategia de seguimiento de tendencias de múltiples plazos

El autor:¿ Qué pasa?, Fecha: 2023-11-14 14:29:39
Las etiquetas:

img

Resumen general

Esta estrategia combina las medias móviles, el MACD y el RSI en múltiples marcos de tiempo para identificar las direcciones de tendencia y negociar las tendencias del índice S&P500.

Estrategia lógica

  1. La media móvil simple de 10 días juzga la tendencia del precio.

  2. El MACD calcula la diferencia entre las medias móviles exponenciales de 12 y 21 días, y el cruce entre la línea MACD y la línea de señal genera señales comerciales.

  3. Se calcula el RSI de 14 días y su MA de 50 días.

  4. Los marcos de tiempo de 1 minuto, 3 minutos y 5 minutos confirman la consistencia de la tendencia.

  5. Cuando el precio cruza por encima del MA de 10 días, el RSI cruza por encima de su MA, y la línea MACD cruza por encima de la línea de señal, se genera una señal de compra.

Ventajas

  1. La combinación de indicadores mejora la precisión de la señal. MA de 10 días juzga la tendencia principal, MACD determina la fuerza del impulso y RSI confirma los niveles de sobrecompra / sobreventa.

  2. La confirmación de múltiples marcos de tiempo evita el ruido del mercado. La confirmación doble en marcos de tiempo de 1 minuto, 3 minutos y 5 minutos garantiza la aparición simultánea de la señal y filtra las señales falsas.

  3. Los patrones gráficos ayudan al juicio visual para la confiabilidad. El análisis gráfico de patrones evita niveles extremos de sobrecompra / sobreventa y reduce los riesgos de pérdida.

  4. La frecuencia media de negociación se adapta a la negociación de índices.

Los riesgos

  1. No detectar una reversión abrupta en eventos irracionales. Tal agitación del mercado altera el modelo y debería reducir el tamaño de las posiciones para el control del riesgo.

  2. Configuración de parámetros fijos sin tener en cuenta las condiciones cambiantes del mercado.

  3. Las señales de entrada deben ajustarse con el deslizamiento para mejorar la liquidez ejecutable.

  4. Los marcos de tiempo múltiples aumentan el retraso de la señal. Se requiere un control de riesgos adecuado para minimizar las pérdidas por retraso durante eventos repentinos.

Mejoramiento

  1. Incorporar mecanismos de stop loss como el stop loss de seguimiento y el stop loss porcentual para controlar la pérdida de una sola operación.

  2. Optimizar los parámetros dinámicos para adaptarse a la evolución de los mercados y mejorar la solidez de la estrategia.

  3. Considerar los cambios en el régimen del mercado derivados de acontecimientos significativos para evitar choques de modelo.

  4. Se deben tener en cuenta los costes de negociación como el deslizamiento y ajustar los puntos de entrada/salida para una mejor ejecución.

  5. Prueba diferentes entradas de precios como el candelero como confirmación de señal para diversificar la validación de marcos de tiempo múltiples.

  6. Utilice algoritmos de aprendizaje automático en grandes volúmenes de datos para automatizar la optimización de estrategias.

Conclusión

Esta estrategia negocia las tendencias del S&P500 de manera efectiva a través de la identificación de tendencias con múltiples indicadores y confirmación de señales a través de marcos de tiempo. Sus fortalezas se encuentran en la alta precisión de la señal y la resistencia al ruido, pero se requiere control de riesgos y ajuste de parámetros dinámicos.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)

//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)

data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1

bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)     

//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
    
sh = ta.ema(close,sma)  

lon= ta.ema(close,lma) 

ratio = math.min(sh,lon)/math.max(sh,lon)

Mac = ratio - 1
if(sh>lon)
    Mac := 2-ratio - 1
else
    Mac := ratio - 1

MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1

MacNorm2 = MacNorm

if(np<2)
    MacNorm2 := Mac
else
    MacNorm2 := MacNorm
    
Trigger = ta.wma(MacNorm2, tsp)

trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)

//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr

//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)     
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)     
     
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
    strategy.entry("LONG", strategy.long, 1)

if (shortSignal)
    strategy.entry("SHORT", strategy.short, 1)

// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)

Más.