
La estrategia utiliza el indicador MACD para identificar la dirección de la tendencia y bloquear los beneficios con un stop loss dinámico.
Calculación de la línea rápida, la línea lenta y el indicador MACD. La línea rápida utiliza una media móvil de 12 períodos y la línea lenta utiliza una media móvil de 26 períodos. La MACD es la diferencia entre la línea rápida y la línea lenta.
Configurar las líneas de compra y venta. Generar una señal de compra cuando se pasa una línea de compra en el MACD; Generar una señal de venta cuando se pasa una línea de venta en el MACD.
Después de abrir una posición, configure un stop loss dinámico y siga la línea de stop loss. El valor inicial de la línea de stop loss es el 95% del precio de apertura de la posición, para bloquear las ganancias a medida que el precio se mueve hacia la línea de stop loss.
Cuando se activa una señal de stop loss o de reversión, la posición se estabiliza.
El uso de indicadores MACD para identificar la dirección de las tendencias permite un seguimiento eficaz de las mismas.
El mecanismo de stop loss dinámico puede bloquear las ganancias de manera permanente y evitar que las pérdidas se extiendan.
La lógica de la estrategia es simple y clara, fácil de entender y adecuada para la ejecución automática de transacciones cuantitativas.
El índice MACD está rezagado y puede haber perdido la reversión de la tendencia a corto plazo.
Si se detiene con demasiada flexibilidad, se puede perder parte de la ganancia, y si se detiene con demasiada rigidez, se puede detener prematuramente.
Los problemas de ajuste de parámetros, los parámetros MACD y las líneas de compra y venta requieren una prueba y optimización continuas.
En el caso de la tendencia, el efecto es mejor, en el caso de la oscilación, existe el riesgo de pérdidas.
Optimización de los parámetros MACD para encontrar la mejor combinación de parámetros.
Prueba diferentes métodos de deterioro, como el deterioro de la puntuación, el deterioro de la ATR, etc.
Añadir condiciones de filtración para evitar el error de trading con otros indicadores, como las bandas de Brin, el RSI, etc.
Combinando indicadores para juzgar tendencias, identificar tendencias y situaciones de crisis, y ajustar dinámicamente los parámetros de la estrategia.
La estrategia tiene una idea general clara, utiliza el indicador MACD para seguir la tendencia y utiliza el stop loss dinámico para bloquear las ganancias, lo que permite un seguimiento eficaz de la tendencia. Sin embargo, el indicador MACD tiene problemas de retraso, y la configuración del punto de parada también necesita optimización.
/*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)