La estrategia de canal de media móvil triple para extraer con paciencia información valiosa de las líneas de velas

El autor:¿ Qué pasa?, Fecha: 2024-02-01 11:12:47
Las etiquetas:

img

Resumen general

La estrategia de canal de media móvil triple utiliza múltiples indicadores de media móvil para analizar profundamente el gráfico de velas y descubrir reglas ocultas detrás de las fluctuaciones de precios, logrando así un comercio de arbitraje de bajo riesgo.

Principios

Esta estrategia acumula múltiples métricas de la EMA encima de las bandas de Bollinger para construir canales de precios y descubrir patrones en la volatilidad de los precios.

  1. El indicador BodyResistanceChannel se utiliza para trazar los niveles de resistencia del cuerpo de la vela.
  2. El indicador de soporte/resistencia se aprovecha para calcular los niveles de soporte y resistencia de varios días.
  3. El sistema EMA dual ayuda a determinar la dirección de la tendencia.
  4. El indicador Hull MA suaviza la curva de precios.

Sobre esta base, las oportunidades de reversión se identifican mediante el reconocimiento de patrones para formular estrategias de arbitraje.

Ventajas

Las ventajas de esta estrategia incluyen:

  1. La creación de canales de precios con múltiples EMAS ayuda a determinar claramente la tendencia de los precios.
  2. El indicador Hull MA suaviza efectivamente las rupturas de precios.
  3. La combinación de patrones de reversión e indicadores de canal permite operaciones de alta probabilidad y bajo riesgo.
  4. La construcción de un sistema de indicadores de múltiples capas garantiza señales de negociación estables y fiables.

Análisis de riesgos

También existen riesgos potenciales de esta estrategia:

  1. La solución es adoptar un stop loss móvil para reducir la pérdida por operación.
  2. El riesgo de señales erróneas cuando el reconocimiento de patrones de inversión sale mal. La solución es la optimización de parámetros para mejorar la precisión del patrón.
  3. El riesgo de deterioro de la calidad de la señal cuando los parámetros del indicador no coinciden.

Direcciones de optimización

Las principales direcciones de optimización incluyen:

  1. Optimizar las combinaciones de parámetros de los períodos de EMA para adaptarlas mejor a las condiciones del mercado.
  2. Ajustar los niveles de stop loss para maximizar el rendimiento por operación y minimizar el riesgo de pérdida por operación.
  3. Introducir un módulo dinámico de dimensionamiento de posiciones basado en la volatilidad para gestionar eficazmente los riesgos.
  4. Utilice tecnologías de aprendizaje profundo para descubrir más patrones de precios y mejorar la calidad de la señal.

Conclusión

La estrategia de canal de media móvil triple minas profundamente la regularidad del movimiento de precios con estabilidad y eficiencia, digno de aplicación a largo plazo y optimización continua.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Más.