
Cette stratégie s’appelle la stratégie de trading robot MACD. Elle permet de déterminer le moment où le marché est en train d’être acheté ou vendu en calculant la relation entre la ligne rapide et la ligne lente de l’indicateur MACD, et de contrôler le risque en effectuant un suivi des arrêts.
La stratégie est basée sur l’indicateur MACD. L’indicateur MACD est composé d’une ligne rapide et d’une ligne lente. La ligne rapide est la moyenne à court terme et la ligne lente est la moyenne à long terme. La relation entre les deux reflète l’état d’achat et de vente du marché.
Dans cette stratégie, les lignes rapides et les lignes lentes sont calculées en utilisant l’algorithme EMA, et la période peut être personnalisée. Pour améliorer la qualité du signal, des lignes de signal ont été ajoutées, utilisant l’algorithme EMA pour une nouvelle manipulation en douceur des valeurs MACD.
Pour déterminer le moment de l’achat, non seulement il faut regarder la fourchette rapide, mais aussi déterminer si la valeur absolue du MACD est supérieure à la ligne d’achat personnalisée. Si elle est satisfaite, un signal d’achat est émis et un arrêt de suivi des pertes est utilisé pour contrôler le risque.
Pour déterminer le moment de la vente, il est nécessaire de satisfaire à la fois à la condition que la ligne morte rapide et la ligne de signal soient positives, puis d’émettre un signal de vente et de niveler la position.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Ces risques peuvent être atténués par des ajustements appropriés des paramètres et des combinaisons d’autres indicateurs.
Cette stratégie peut être optimisée dans les directions suivantes:
Cette stratégie est une stratégie de suivi de tendance de haute fiabilité. En utilisant les indicateurs MACD pour juger de la tendance, en prenant le risque de contrôle de la perte de suivi, il est possible d’obtenir un retour sur investissement stable.
/*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)