Desviación de la media móvil doble combinada con la tendencia del indicador ATR Siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-16 11:25:23
Las etiquetas:

img

Resumen general

Esta estrategia utiliza las señales de cruz dorada y cruz muerta formadas por promedios móviles de EMA duales, combinadas con el indicador ATR para juzgar la volatilidad del mercado, para implementar una estrategia de tendencia de compra baja-venta alta. Cuando la línea rápida cruza por encima de la línea lenta y el indicador ATR es más bajo que el día anterior, se considera una señal alcista para ir largo. Cuando la línea rápida cruza por debajo de la línea lenta y el indicador ATR es más alto que el día anterior, se considera una señal bajista para ir corto.

Estrategia lógica

  1. Cuando la línea rápida cruza por encima de la línea lenta y genera una cruz dorada, se considera una señal alcista. Cuando la línea rápida cruza por debajo de la línea lenta y genera una cruz muerta, se considera una señal bajista.

  2. Utilice el indicador ATR de longitud 14. El indicador ATR refleja la volatilidad y el nivel de riesgo del mercado. Cuando el ATR es menor que el día anterior, indica que la volatilidad del mercado se está debilitando y es adecuado ir largo. Cuando el ATR es mayor que el día anterior, indica que la volatilidad del mercado está aumentando y es adecuado ir corto.

  3. Sólo ir largo cuando la línea rápida de oro cruza la línea lenta y el ATR es más bajo que el día anterior. Sólo ir corto cuando la línea rápida muerta cruza la línea lenta y el ATR es más alto que el día anterior. Esto evita intervenir cuando la volatilidad del mercado es alta.

  4. El indicador ATR también se utiliza para establecer los niveles de stop loss y take profit. El stop loss se establece al precio actual menos ATR multiplicado por el multiplicador de stop loss. El take profit se establece al precio actual más ATR multiplicado por el multiplicador de take profit.

  5. El multiplicador de stop loss por defecto es 3xATR y el multiplicador de take profit por defecto es 3xATR. Esto permite al stop loss y take profit seguir dinámicamente la volatilidad del mercado.

Ventajas de la estrategia

  1. El uso de un sistema dual de promedios móviles proporciona una confirmación más fuerte del estado largo / corto.

  2. La introducción del indicador ATR permite que la estrategia se inicie solo cuando la volatilidad es baja. Esto filtra muchas señales falsas y reduce el riesgo del sistema.

  3. La dinámica ATR stop loss/take profit permite establecer las paradas y los objetivos de acuerdo con el nivel de volatilidad del mercado, evitando que las paradas estén demasiado cerca o que los objetivos sean demasiado bajos.

  4. Es posible establecer el cruce de la media móvil como un mecanismo de salida adicional, lo que puede optimizar aún más la rentabilidad del sistema.

  5. Los niveles dinámicos de stop loss y take profit basados en ATR encajan mejor con la lógica de negociación de tendencia.

Riesgos de la estrategia

  1. Las medias móviles dobles tienen un cierto retraso en las señales. Esto puede perder tendencias más fuertes a corto plazo.

  2. Cuando la volatilidad es alta, el ATR aumenta y puede perder oportunidades de entrada.

  3. Para los períodos de retención largos, el stop loss puede acercarse demasiado.

  4. Los promedios móviles se comportan mal en los mercados de oscilaciones agitadas.

  5. Los parámetros de ATR deben ajustarse para diferentes productos y plazos, ya que los parámetros incorrectos afectarán negativamente al rendimiento.

Áreas de mejora

  1. Prueba diferentes combinaciones de medias móviles de longitud para encontrar parámetros que coincidan con las características de tendencia del producto.

  2. Incorporar otros indicadores como MACD, KD para confirmar las señales de cruce de la media móvil y mejorar Entscheidungssicherheit.

  3. Optimizar los parámetros ATR mediante pruebas retroactivas para que coincidan mejor con las características de volatilidad del producto.

  4. Hacer que el factor multiplicador ATR sea ajustable para ajustar dinámicamente el stop loss/take profit según la fuerza de la tendencia.

  5. Incorporar un indicador de fuerza de tendencia para reducir los requisitos de stop loss en tendencias débiles e incrementar la toma de ganancias en tendencias fuertes.

Resumen de las actividades

Esta estrategia integra el juicio de tendencia de EMAs duales y el control de riesgo del indicador de volatilidad ATR para formar un sistema de seguimiento de tendencia relativamente completo. El enfoque para la optimización es ajustar el promedio móvil y los parámetros ATR para que coincidan con las características del producto, y diseñar mecanismos dinámicos de stop loss/take profit para seguir los cambios en la fuerza de la tendencia.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






Más.