
Strategi ini adalah strategi perdagangan versi perbaikan yang didasarkan pada indikator MACD. Strategi ini menggabungkan fitur pelacakan tren dari indikator MACD dan ide perdagangan momentum untuk menghasilkan sinyal perdagangan dengan menganalisis perbedaan antara rata-rata bergerak cepat dan rata-rata bergerak lambat. Strategi ini juga memperkenalkan cara-cara optimasi seperti pengesahan tren, pengesahan sinyal yang ditunda, dan persentase stop loss dan stop loss yang tetap untuk meningkatkan kehandalan dan profitabilitas strategi.
Inti dari strategi ini adalah indikator MACD, yang terdiri dari selisih antara rata-rata bergerak cepat (EMA) dan rata-rata bergerak lambat (EMA). Ketika EMA cepat dan EMA lambat bersilang, sinyal beli atau jual akan dihasilkan. Secara khusus, sinyal beli akan dihasilkan ketika garis MACD dari bawah ke atas menerobos garis sinyal; sinyal jual akan dihasilkan ketika garis MACD dari atas ke bawah menerobos garis sinyal.
Selain sinyal crossover MACD dasar, strategi ini juga memperkenalkan mekanisme konfirmasi tren. Ini menilai apakah pasar saat ini berada dalam tren naik atau tren turun dengan membandingkannya dengan rata-rata bergerak sederhana (SMA). Hanya sinyal beli yang muncul dalam tren naik, atau sinyal jual yang muncul dalam tren turun, yang benar-benar melakukan operasi perdagangan.
Selain itu, strategi ini juga memperpanjang jendela waktu konfirmasi sinyal. Dengan kata lain, transaksi akan dilakukan hanya jika garis K saat ini memenuhi syarat untuk membeli atau menjual, dan garis K sebelumnya juga memenuhi syarat yang sama. Ini meningkatkan keandalan sinyal lebih lanjut.
Akhirnya, strategi ini menetapkan persentase tetap dari stop loss dan stop loss. Setelah perdagangan dilakukan, stop loss dan stop loss akan dihitung berdasarkan harga bukaan posisi, dan posisi akan secara otomatis dihapus setelah harga tersebut tercapai. Ini membantu mengendalikan risiko dan keuntungan dari perdagangan tunggal.
Strategi ini adalah strategi perdagangan yang disempurnakan berdasarkan indikator MACD, meningkatkan stabilitas strategi dan potensi keuntungan melalui metode seperti konfirmasi tren, konfirmasi penundaan sinyal, dan stop loss tetap. Namun, ada juga risiko dalam hal optimasi parameter, identifikasi tren, indikator tunggal, dan data retrospektif. Di masa depan, Anda dapat mempertimbangkan untuk mengoptimalkan strategi dalam kombinasi dengan indikator lain, stop loss dinamis, manajemen posisi, dan pembelajaran mesin, untuk lebih meningkatkan efektivitas aplikasi praktisnya.
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sligetit
//@version=5
strategy("Improved MACD_VXI Strategy", overlay=true)
// Calculate MACD and Signal Line
fastLength = input.int(13, title="Fast Length")
slowLength = input.int(21, title="Slow Length")
signalLength = input.int(8, title="Signal Length")
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)
macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
// Plot MACD and Signal Line
plot(macd, color=color.red, linewidth=1)
plot(signal, color=color.blue, linewidth=2)
// Calculate Cross Signals with Trend Confirmation
smaPeriod = input.int(50, title="SMA Period")
sma = ta.sma(close, smaPeriod)
trendUp = close > sma
trendDown = close < sma
crossOver = ta.crossover(signal, macd)
crossUnder = ta.crossunder(signal, macd)
buySignal = crossOver and trendUp
sellSignal = crossUnder and trendDown
// Execute Buy/Sell Operations
if buySignal
strategy.entry("Buy", strategy.long)
if sellSignal
strategy.entry("Sell", strategy.short)
// Extend Signal Confirmation Time Window
longSignal = crossOver[1] and trendUp[1]
shortSignal = crossUnder[1] and trendDown[1]
if longSignal
strategy.entry("Buy", strategy.long)
if shortSignal
strategy.entry("Sell", strategy.short)
// Set Fixed Percentage Stop Loss and Take Profit
stopLossPercent = input.float(1, title="Stop Loss (%)") / 100
takeProfitPercent = input.float(2, title="Take Profit (%)") / 100
stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent)
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent)
strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice)
strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)