
Cette stratégie est basée sur l’indicateur MACD ainsi que sur la ligne de position longue et pacifique, permettant de négocier la ligne longue de la paire de devises. Les positions sont ouvertes lorsque l’indicateur MACD traverse la ligne longue et les positions sont fermées lorsque l’indicateur MACD traverse la ligne de position serrée.
La stratégie utilise les lignes rapides et les lignes lentes de l’indicateur MACD. Le paramètre de la ligne rapide est l’EMA de 12 jours et le paramètre de la ligne lente est l’EMA de 26 jours. La différence entre les deux lignes normales est le graphique en colonnes MACD.
Plus précisément, la stratégie commence par calculer la ligne rapide, la ligne lente et la ligne de signal de l’indicateur MACD. Ensuite, la ligne longue est définie à -0.04, la ligne de placement à 0.015. Si le MACD actuel est plus grand que la ligne longue, le placement est effectué. Si le MACD actuel est plus petit que la ligne de placement, le placement est effectué.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
L’optimisation et l’amélioration peuvent être effectuées par des méthodes telles que l’ajustement approprié des paramètres et la combinaison d’autres indicateurs.
Cette stratégie peut être optimisée dans les domaines suivants:
On peut essayer des lignes rapides, lentes et de différentes longueurs pour trouver la meilleure combinaison.
Les indicateurs comme le RSI, le KD peuvent avoir des effets très différents.
Les données peuvent être analysées à plusieurs reprises pour trouver des paramètres plus appropriés pour les positions longues et plates.
On peut envisager des méthodes comme le trailing stop pour rendre le stop loss plus dynamique.
Appliquer la stratégie à d’autres paires de devises, voir les résultats
Cette stratégie est généralement une stratégie de négociation en ligne très simple et intuitive. Elle utilise l’indicateur MACD pour juger de la situation et définir des conditions de double filtrage pour réduire les erreurs de négociation.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY 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.04)
linesell = input(title="Close Long", type=float, defval=0.015)
//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)