
Cette stratégie utilise les signaux de croisement de l’indicateur MACD et la direction de la tendance de l’indicateur Supertrend pour déterminer les moments d’entrée et de sortie afin de tirer profit de la tendance. L’idée principale de la stratégie est de faire plus lorsque le Supertrend de la fourche d’or MACD est vert, de faire plus lorsque le MACD est mort et que le Supertrend est vide lorsque le MACD est mort et que le Supertrend est rouge.
La stratégie utilise l’indicateur MACD et l’indicateur Supertrend pour générer des signaux de négociation. Le MACD est obtenu en soustrayant la moyenne mobile rapide (la 12e journée par défaut) de la moyenne mobile lente (la 26e journée par défaut) et en calculant la moyenne mobile de 9 jours du MACD comme ligne de signal. Lorsque le MACD traverse la ligne de signal, une forchette est formée, ce qui est un signal positif.
Cet article présente une stratégie de négociation basée sur les indicateurs MACD et Supertrend, qui utilise les jugements de tendance du MACD et le filtrage de la direction de la Supertrend pour négocier dans des conditions de tendance, tout en utilisant le croisement des lignes de signaux et la compensation en temps opportun pour contrôler les retraits. L’avantage de la stratégie réside dans la simplicité de la logique, la capacité de saisir la tendance, mais il existe également un risque d’adaptation des paramètres, de retard de signal et de négociation fréquente.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="MACD + Supertrend Strategy", overlay=true)
// MACD Calculation
fastLength = 12
slowLength = 26
signalSmoothing = 9
macdSrc = close
// MACD Line
fastMA = ta.ema(macdSrc, fastLength)
slowMA = ta.ema(macdSrc, slowLength)
macdLine = fastMA - slowMA
// MACD Signal Line
signalMA = ta.ema(macdLine, signalSmoothing)
// MACD Histogram
histogram = macdLine - signalMA
// Supertrend Calculation
supertrendATRLength = 10
supertrendFactor = 3.0
[supertrend, _] = ta.supertrend(supertrendFactor, supertrendATRLength)
// Entry and Exit Conditions
longCondition = (macdLine > signalMA) and (supertrend < close)
shortCondition = (signalMA > macdLine) and (supertrend > close)
// Long Entry
if longCondition
strategy.entry("Long", strategy.long)
// Long Exit (Sell)
if signalMA > macdLine
strategy.close("Long")
// Short Entry
if shortCondition
strategy.entry("Short", strategy.short)
// Short Exit (Cover)
if macdLine > signalMA
strategy.close("Short")
// Close Long Position if short condition is met
if shortCondition
strategy.close("Long")
// Close Short Position if long condition is met
if longCondition
strategy.close("Short")
// Plotting
plotshape(series=longCondition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short Entry Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
// Alerts
alertcondition(longCondition, title='Long Entry Signal', message='MACD crossover and Supertrend below close price')
alertcondition(signalMA > macdLine, title='Long Exit Signal', message='MACD signal line crosses above MACD line')
alertcondition(shortCondition, title='Short Entry Signal', message='MACD crossunder and Supertrend above close price')
alertcondition(macdLine > signalMA, title='Short Exit Signal', message='MACD line crosses above MACD signal line')