Estrategia de trading de BTC basada en la media móvil EMA y el indicador MACD


Fecha de creación: 2024-01-25 12:54:16 Última modificación: 2024-01-25 12:54:16
Copiar: 0 Número de Visitas: 593
1
Seguir
1617
Seguidores

Estrategia de trading de BTC basada en la media móvil EMA y el indicador MACD

Descripción general

Esta estrategia es una estrategia compuesta basada en el diferencial de la línea media de la EMA y el indicador MACD para el comercio de corto en BTC. Combina las señales de la línea media de la EMA y el MACD para generar señales de compra y venta en determinadas condiciones.

Principio de estrategia

Cuando el valor de la diferencia es negativo y menor que el umbral, y el MACD tiene una cruz en blanco, se genera una señal de compra. Cuando el valor de la diferencia es positivo y mayor que el umbral, y el MACD tiene una cruz múltiple, se genera una señal de venta.

Mediante la combinación de señales que utilizan la diferencia de la línea media del EMA y el indicador MACD, se puede filtrar algunas señales falsas y mejorar la fiabilidad de la señal.

Análisis de las ventajas

  1. El uso de indicadores compuestos hace que la señal sea más confiable
  2. Establecido con parámetros de ciclo corto para operaciones de línea corta
  3. Dispone de paradas y paradas para controlar el riesgo

Análisis de riesgos

  1. El Stop Loss puede romperse en momentos de fuerte volatilidad del mercado
  2. Optimizar los parámetros para adaptarlos mejor a las diferentes circunstancias del mercado
  3. Necesidad de probar diferentes monedas y diferentes exchanges

Dirección de optimización

  1. Optimización de los parámetros de EMA y MACD para adaptarlos mejor al entorno de volatilidad de BTC
  2. Aumentar las posiciones abiertas y las estrategias de reducción de posiciones, optimizando la eficiencia de la utilización de fondos
  3. Aumentar los métodos de deterioro, como el deterioro por movimiento y el deterioro por oscilación, para reducir el riesgo
  4. Pruebas de diferentes exchanges y monedas

Resumir

Esta estrategia integra las ventajas de los dos indicadores de la línea media y MACD, utiliza señales compuestas y puede filtrar eficazmente las señales falsas. A través de la optimización de los parámetros y la estrategia de apertura de posiciones, se pueden obtener ganancias estables. Sin embargo, también se necesita estar alerta al riesgo de que los estancamientos se rompan, lo que requiere más pruebas y perfeccionamiento.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA50Diff & MACD Strategy", overlay=false)
EMA = input(18, step=1)
MACDfast = input(12)
MACDslow = input(26)
EMADiffThreshold = input(8)
MACDThreshold = input(80)
TargetValidityThreshold = input(65, step=5)
Target = input(120, step=5)
StopLoss = input(650, step=5) 
ema = ema(close, EMA)
hl = plot(0, color=white, linewidth=1)
diff = close - ema
clr = color(blue, transp=100)
if diff>0
    clr := lime
else 
    if diff<0
        clr := red

fastMA = ema(close, MACDfast)
slowMA = ema(close, MACDslow)
macd = (fastMA - slowMA)*3
signal = sma(macd, 9)
plot(macd, color=aqua, linewidth=2)
plot(signal, color=purple, linewidth=2)

macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal)
macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal)
position = 0.0
position := nz(strategy.position_size, 0.0)
long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or 
     (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong)

short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or 
      (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort)
amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10)
bgclr = color(blue, transp=100) //#0c0c0c
if long
    strategy.entry("long", strategy.long, amount)
    bgclr := green
if short
    strategy.entry("short", strategy.short, amount)
    bgclr := maroon
bgcolor(bgclr, transp=20)
strategy.close("long", when=close>strategy.position_avg_price + Target)
strategy.close("short", when=close<strategy.position_avg_price - Target)
strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss)
strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss)
//plotshape(long, style=shape.labelup, location=location.bottom, color=green)
//plotshape(short, style=shape.labeldown, location=location.top, color=red)
pl = plot(diff, style=histogram, color=clr)
fill(hl, pl, color=clr)