Esta estrategia implementa la tendencia después de la negociación en el indicador MACD.
Calcule el indicador de MA rápido, MA lento y MACD. El MA rápido usa la EMA de 12 períodos, el MA lento usa la EMA de 26 períodos.
Generar una señal de compra cuando el MACD cruza la línea de compra, generar una señal de venta cuando el MACD cruza por debajo de la línea de venta.
Establezca un stop loss dinámico después de la posición de apertura.
Posición de cierre cuando se activa el stop loss o aparece la señal de marcha atrás.
El uso del MACD para identificar la dirección de la tendencia puede rastrear las tendencias de manera efectiva.
El stop loss dinámico puede bloquear continuamente las ganancias y evitar pérdidas ampliadas.
La lógica de la estrategia es simple y clara, fácil de entender y automatizar para el comercio cuantitativo.
El MACD tiene un efecto de retraso, puede perder la inversión de tendencia a corto plazo.
El stop loss demasiado suelto puede perder algunas ganancias, demasiado ajustado puede detenerse temprano.
Los parámetros MACD y las líneas de compra/venta necesitan pruebas y optimización constantes.
Funciona mejor en el mercado de tendencia, puede tener pérdidas en el mercado agitado.
Optimice los parámetros MACD para encontrar la mejor combinación.
Prueba diferentes métodos de stop loss, como puntos fijos, basados en ATR, etc.
Se añadirán condiciones de filtro utilizando otros indicadores para evitar señales falsas, por ejemplo, bandas de Bollinger, RSI, etc.
Combinar con las herramientas de identificación de tendencias, ajustar dinámicamente los parámetros de la estrategia basados en la tendencia frente al mercado de rango.
La estrategia tiene una lógica clara de usar el MACD para rastrear tendencias y stop loss dinámicos para bloquear ganancias. Puede rastrear efectivamente los mercados de tendencia. Pero el MACD tiene problemas rezagados, y los puntos de stop loss deben optimizarse. El siguiente paso es probar más parámetros, optimizar el mecanismo de stop loss, agregar filtros con otros indicadores, para hacerlo robusto en diferentes condiciones de mercado, mejorando la estabilidad.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD") fastMA = input(title="Fast moving average", defval = 12, minval = 7) slowMA = input(title="Slow moving average", defval = 26, minval = 7) lastColor = yellow [currMacd,_,_] = macd(close[0], fastMA, slowMA, 9) [prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9) plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red plot(currMacd, style = histogram, color = plotColor, linewidth = 3) plot(0, title = "Zero line", linewidth = 1, color = gray) //MACD // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9) sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) ///END OF MACD //Long and Close Long Lines linebuy = input(title="Enter Long", type=float, defval=-0.0002) linesell = input(title="Close Long", type=float, defval=0.0001) //Plot Long and Close Long Lines plot(linebuy,color=green),plot(linesell,color=red) //Stop Loss Input sl_inp = input(0.05, title='Stop Loss %', type=float)/100 //Order Conditions longCond = crossover(currMacd, linebuy) exitLong = crossover(currMacd, linesell) stop_level = strategy.position_avg_price * (1 - sl_inp) //Order Entries strategy.entry("long", strategy.long, when=longCond==true) strategy.close("long", when=exitLong==true) strategy.exit("Stop Loss", stop=stop_level)