
Strategi pelacakan tren MACD adalah strategi perdagangan kuantitatif yang didasarkan pada indikator MACD. Strategi ini menilai tren pasar dengan mengidentifikasi sinyal garpu dan garpu MACD untuk melacak tren harga saham.
Logika inti dari strategi pelacakan tren MACD adalah:
Dengan mekanisme pelacakan tren ini, strategi ini dapat menangkap perubahan tren pasar secara tepat waktu dan menghasilkan keuntungan.
Strategi trend tracking MACD memiliki keuntungan sebagai berikut:
Strategi untuk mengikuti tren MACD juga memiliki risiko berikut:
Untuk mengatasi risiko tersebut, langkah-langkah optimasi berikut dapat dilakukan:
Strategi pelacakan tren MACD dapat dioptimalkan dengan:
Mengoptimalkan parameter indikator MACD, mengurangi tingkat sinyal palsu. MACD dapat diuji dengan parameter siklus yang berbeda.
Meningkatkan sinyal penyaringan indikator lain seperti volume transaksi. Anda dapat mengatur kondisi volume transaksi minimum.
Setting dynamic tracking stop loss mechanism. Stop loss point dapat disesuaikan secara real time dengan volatilitas.
Optimalkan logika penentuan sinyal untuk membuka posisi. Anda dapat mengatur kondisi pemicu sinyal yang lebih ketat.
Kombinasi dengan pemfilteran model pembelajaran mesin. Model dapat dilatih untuk menilai keandalan sinyal.
Strategi pelacakan tren MACD secara keseluruhan adalah strategi kuantitatif yang lebih matang. Strategi ini menggunakan indikator MACD untuk menentukan arah tren pasar, dengan pengendalian risiko mekanisme stop loss, dapat secara efektif melacak tren harga saham. Namun indikator MACD sendiri juga memiliki kekurangan tertentu, mudah menghasilkan sinyal palsu.
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD Cross Strategy", overlay=true)
// Get MACD values
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
var float entryLongPrice = na
var float entryShortPrice = na
var float highestLongProfit = 0
var float highestShortProfit = 0
var float highestMACD = 0
var float lowestMACD = 0
var bool haveOpenedLong = false
var bool haveOpenedShort = false
var float stoploss = 0.04 // To be adjust for different investment
var float minProfit = 0.05 // To be adjust for different investment
if macdLine > 0
lowestMACD := 0
highestMACD := math.max(highestMACD, macdLine)
haveOpenedShort := false
else
highestMACD := 0
lowestMACD := math.min(lowestMACD, macdLine)
haveOpenedLong := false
// Enter long position when MACD line crosses above the signal line
if ta.crossover(macdLine, signalLine) and macdLine < highestMACD and macdLine > 0 and haveOpenedLong == false
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry = "Long", stop=close*(1 - stoploss))
entryLongPrice := close
haveOpenedLong := true
if ta.crossunder(macdLine, signalLine) and macdLine > lowestMACD and macdLine < 0 and haveOpenedShort == false
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry = "Short", stop=close*(1 + stoploss))
entryShortPrice := close
haveOpenedShort := true
// log.info("entryLongPrice:{0}", entryLongPrice)
if strategy.position_size > 0
profit = close - entryLongPrice
log.info("profit:{0}", profit)
if profit > 0
highestLongProfit := math.max(highestLongProfit, profit)
if profit / entryLongPrice > minProfit and highestLongProfit * 0.8 > profit
strategy.close("Long")
highestLongProfit := 0
if strategy.position_size < 0
profit = entryShortPrice - close
if profit > 0
highestShortProfit := math.max(highestShortProfit, profit)
log.info("highestShortProfit={0}, profit={1}", highestShortProfit, profit)
if profit / entryShortPrice > minProfit and highestShortProfit * 0.8 > profit
strategy.close("Short")
highestShortProfit := 0