El autor:¿ Qué pasa?, Fecha: 2024-01-25 12:54:16
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia compuesta basada en la diferencia EMA y el indicador MACD para el comercio de BTC a corto plazo. Combina las señales de EMA y MACD para generar señales de compra y venta bajo ciertas condiciones.

Estrategia lógica

Genera señales de compra cuando la diferencia es negativa y por debajo de un umbral y el MACD tiene un cruce bajista.

Al combinar las señales de la diferencia EMA y el MACD, se pueden filtrar algunas señales falsas y se mejora la confiabilidad de las señales.

Análisis de ventajas

  1. Utiliza indicadores compuestos, señales más confiables
  2. Adopta parámetros a corto plazo, adecuados para operaciones a corto plazo
  3. Tiene configuraciones de stop loss y take profit para controlar los riesgos

Análisis de riesgos

  1. El stop loss puede romperse durante grandes oscilaciones del mercado
  2. Los parámetros deben optimizarse para diferentes entornos de mercado
  3. Los efectos deben ser probados en diferentes monedas y bolsas

Direcciones de optimización

  1. Optimizar los parámetros EMA y MACD para adaptarse a la volatilidad de BTC
  2. Añadir estrategias de dimensionamiento de posiciones y pirámides para mejorar la eficiencia del capital
  3. Añadir métodos de stop loss como el stop loss de seguimiento para reducir los riesgos
  4. Efectos de las pruebas en diferentes bolsas y monedas

Conclusión


/*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)


Más.