
Esta estrategia se llama estrategia de negociación de robots MACD. La estrategia controla el riesgo mediante el cálculo de la relación entre la línea rápida y la línea lenta del indicador MACD, para determinar el momento de compra y venta del mercado y el seguimiento de las paradas.
La estrategia se desarrolló principalmente en base al indicador MACD. El indicador MACD está compuesto por una línea rápida y una línea lenta, la línea rápida es el promedio a corto plazo y la línea lenta es el promedio a largo plazo, y la relación entre ambos refleja el estado de compra y venta en el mercado.
En esta estrategia, las líneas rápidas y lentas se calculan con el algoritmo EMA y se pueden personalizar los períodos. Para mejorar la calidad de la señal, se añade la línea de señal, que utiliza el algoritmo EMA para procesar de nuevo el valor MACD.
Para determinar el momento de comprar, no solo se debe mirar la horquilla rápida y lenta, sino también determinar si el valor absoluto MACD es mayor que la línea de compra personalizada. Si se cumple, se emite una señal de compra y se utiliza el seguimiento de la parada para controlar el riesgo.
En el momento de determinar la hora de la venta, se emite una señal de venta para nivelar la posición si se cumplen al mismo tiempo las condiciones de que la línea rápida y lenta de la horca muerta y la línea de señal sean positivas.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Estos riesgos se pueden reducir mediante la adaptación adecuada de los parámetros y la combinación de otros indicadores.
La estrategia se puede optimizar en las siguientes direcciones:
La estrategia general es una estrategia de seguimiento de tendencias de alta fiabilidad. Para determinar la tendencia a través de los indicadores MACD, se toman medidas de seguimiento de los riesgos de control de pérdidas y se puede obtener un rendimiento estable de la inversión. El siguiente paso es optimizar aún más los parámetros, combinar otros indicadores y combinar el aprendizaje automático para aumentar la rentabilidad de la estrategia.
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045)
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, signal) and signal > 0
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)