El canal porcentual de la EMA con la estrategia de negociación del intervalo de la banda de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-13 17:38:01
Las etiquetas:

img

Resumen general

Esta estrategia se basa en la selección del usuario de una EMA y un canal porcentual definido. Va largo cuando el precio está por debajo de la banda superior y va corto cuando el precio está por encima de la banda inferior. Si el precio comienza a tendencia y se mueve fuera del canal, todas las posiciones se cierran para evitar pérdidas.

En el caso de los mercados de tendencia, se utilizará el canal EMA Percentage Channel con Bollinger Band Trend Trading Strategy.

Principios

  1. Se calculará la EMA de 200 períodos como la EMA de referencia.

  2. Calcular las bandas superior e inferior basándose en el porcentaje definido por el usuario: La banda superior = EMA * (1 + Porcentaje) En el caso de las entidades de crédito, el valor de la exposición se calcula en función de los tipos de interés de la entidad.

  3. Calcular las bandas de Bollinger de 20 períodos para representar el rango del canal.

  4. Ir largo cuando el precio de cierre cruza por encima de la banda inferior de Bollinger desde abajo. Ir corto cuando el precio de cierre cruza por debajo de la banda superior de Bollinger desde arriba.

  5. Para calcular el stop loss se utilizará el ATR para evitar pérdidas excesivas.

  6. Si el precio se mueve fuera del rango de canal porcentual definido, cierre todas las posiciones para evitar nuevas pérdidas.

Ventajas

  1. La línea de base de la EMA ayuda a captar mejor los puntos de inversión de tendencia.

  2. El canal porcentual establece un rango de negociación razonable para evitar el exceso de negociación.

  3. Las bandas de Bollinger proporcionan niveles de soporte y resistencia para facilitar el tiempo de entrada.

  4. La parada de seguimiento ATR establece dinámicamente la parada de pérdida para controlar eficazmente el riesgo por operación.

  5. Cerrar todas las posiciones cuando el precio rompe el canal controla rápidamente las pérdidas.

  6. Los parámetros personalizables son flexibles para las diferentes condiciones del mercado.

Los riesgos

  1. Un rango de canales demasiado amplio puede perder tendencias o retrasar la detención de pérdidas.

  2. Un rango de canales demasiado estrecho puede provocar un exceso de negociación y aumentar los costes de transacción.

  3. La mala configuración de los parámetros de las bandas de Bollinger puede causar oportunidades comerciales perdidas.

  4. Un umbral de stop loss demasiado flexible puede dar lugar a pérdidas excesivas por operación.

  5. Los parámetros deben optimizarse para encontrar el rango de negociación óptimo.

Direcciones de optimización

  1. Prueba diferentes períodos de EMA para encontrar el promedio móvil más adecuado.

  2. Optimizar los parámetros porcentuales del canal para determinar el rango óptimo del canal.

  3. Ajustar el período de las bandas de Bollinger para capturar mejor la volatilidad.

  4. Ajuste el período ATR y el multiplicador para perfeccionar aún más la estrategia de stop loss.

  5. Prueba de largo sólo por encima de la EMA o corto sólo por debajo de las condiciones de la EMA y ver si mejora la tasa de ganancia.

  6. Incorporar indicadores de tendencia para determinar si se necesita una salida anticipada.

Conclusión

Esta estrategia combina los puntos fuertes de las medias móviles, canales, volatilidad y más para crear un sistema de negociación de rango relativamente estable. La clave es encontrar los parámetros más adecuados para cada mercado específico para equilibrar el riesgo y la recompensa.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true)

//EMA 200

len = input(title="EMA Length", type=input.integer, defval=200)
srce = input(title="EMA Source", type=input.source, defval=close)

ema1= ema(srce,len)

percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) 
valuee = (percent*ema1)/100
upperbande = ema1 + valuee
lowerbande = ema1 - valuee


plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line )
plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line )
plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line )

length = input(20, minval=2)
src = input(close, title="Close price")
mult = input(2.0, minval=0.001, maxval=50)

MA2 = sma(src, length)
dev = mult * stdev(src, length)
upper = MA2 + dev
lower = MA2 - dev

signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white

barcolor(color=signalColor)


upperBand = plot(upper, color=color.gray, linewidth=1)
lowerBand = plot(lower, color=color.gray, linewidth=1)
fill(upperBand, lowerBand,color=color.gray)
strategy.entry("Long",true,when = crossover(close,lower)  and close <upperbande and close>lowerbande)
strategy.close("Long",when = crossunder(close,lowerbande))
strategy.entry("Short",false,when = crossunder(close,upper)  and close <upperbande and close>lowerbande)
strategy.close("Short",when = crossover(close,upperbande))

//Inputs
atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length
multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings',  type=input.float)// Adjust this to change the distance between your candles and the line

//ATR Calculation
pine_rma(x, y) =>
    alpha = y
    sum = 0.0
    sum := (x + (alpha - 1) * nz(sum[1])) / alpha

true_range() =>
    max(high - low, max(abs(high - close[1]), abs(low - close[1])))

//Long SL
plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1)
// Short SL
plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1)
strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )


Más.