
Artikel ini memperkenalkan strategi perdagangan yang menggabungkan dua petunjuk teknikal MACD dan Supertrend. Strategi ini menggunakan isyarat persilangan MACD dan arah trend Supertrend untuk menilai masa masuk dan keluar untuk mendapatkan keuntungan dalam keadaan trend.
Strategi ini menggunakan penunjuk MACD dan penunjuk Supertrend untuk menghasilkan isyarat dagangan. MACD diperoleh dengan mengurangkan purata bergerak cepat ((12 hari default) minus purata bergerak perlahan ((26 hari default), dan kemudian mengira purata bergerak MACD selama 9 hari sebagai garis isyarat. Apabila MACD melintasi garis isyarat di atas, ia membentuk garpu emas, dan ia adalah isyarat yang lebih banyak; apabila MACD melintasi garis isyarat di bawah, ia membentuk garpu mati, dan ia adalah isyarat yang kosong.
Artikel ini memperkenalkan strategi perdagangan berdasarkan petunjuk MACD dan petunjuk Supertrend, strategi ini menggunakan penghakiman trend MACD dan penapis arah Supertrend, untuk berdagang dalam keadaan trend, sambil menggunakan persilangan garis isyarat dan penutupan tepat pada masanya untuk mengawal penarikan balik. Keuntungan strategi adalah dalam logik yang mudah, keupayaan untuk menangkap trend yang kuat, tetapi juga terdapat risiko parameter yang sesuai, keterlambatan isyarat dan perdagangan yang kerap.
/*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')