Estrategia de ruptura de rango verdadero promedio con relación de oro

El autor:¿ Qué pasa?, Fecha: 2024-02-26 15:02:26
Las etiquetas:

img

Resumen general

Esta es una estrategia de ruptura que utiliza el indicador ATR para generar señales comerciales. La estrategia emplea un sistema de promedio móvil para producir señales de entrada y un canal ATR amplificado basado en la proporción dorada para construir posiciones largas y cortas.

Principios

El código calcula el ATR durante un período de precios de cierre, lo amplifica en 1.618 como la banda superior y 2.618 como la banda inferior. Combinado con la EMA, forma un sistema de ruptura del canal de Bollinger.

Ventajas

  1. El indicador ATR captura eficazmente la volatilidad del mercado y construye bandas de negociación adaptativas, evitando el sobreajuste causado por parámetros estáticos.
  2. Las bandas ATR amplificadas por la proporción dorada aumentan el potencial de ganancia sin aumentar la frecuencia de negociación.
  3. El sistema de medias móviles filtra los ruidos a corto plazo y coopera con el canal ATR para identificar las tendencias a medio y largo plazo.

Los riesgos

  1. El indicador ATR puede retrasarse en condiciones extremas de mercado.
  2. Los múltiplos de aumento inadecuados conducirían a una frecuencia de negociación excesivamente alta.
  3. Las señales de cambio de las medias móviles de largo período tienen retrasos.

Optimización

  1. El ATR puede incorporar el VIX o ajustar la ampliación.
  2. Emplear EMA de marcos de tiempo múltiples para construir sistemas adaptativos.
  3. Establezca las pérdidas de parada para limitar la pérdida máxima por operación.

Resumen de las actividades

Esta estrategia integra el filtrado de promedios móviles, el seguimiento de canales ATR y la metodología de la proporción de oro, que puede seguir efectivamente las tendencias a medio y largo plazo con buena estabilidad.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Long Only Strategy lower band buy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(52, type=input.integer, minval=1, title="Length")
mul = input(1.618, type=input.float, minval=0, title="Length")
mullow = input(2.618, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  //strategy.entry("Sell", strategy.short, when=bear_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Más.