
Strategi ini adalah strategi perdagangan versi yang lebih baik berdasarkan indikator MACD. Ia menggabungkan ciri-ciri pengesanan trend indikator MACD dan pemikiran perdagangan momentum untuk menghasilkan isyarat perdagangan dengan menganalisis perbezaan antara purata bergerak cepat dan purata bergerak perlahan. Strategi ini juga memperkenalkan kaedah pengoptimuman seperti pengesahan isyarat trend, pengesahan penangguhan, peratusan berhenti dan penangguhan yang tetap untuk meningkatkan kestabilan dan keuntungan strategi.
Inti strategi ini adalah penunjuk MACD, yang terdiri daripada perbezaan antara rata-rata bergerak cepat (EMA) dan rata-rata bergerak perlahan (EMA). Apabila EMA cepat dan EMA perlahan bersilang, ia menghasilkan isyarat beli atau jual. Secara khusus, apabila garis MACD dari bawah ke atas menembusi garis isyarat, ia menghasilkan isyarat beli; apabila garis MACD dari atas ke bawah menembusi garis isyarat, ia menghasilkan isyarat jual.
Selain daripada isyarat persilangan MACD asas, strategi ini juga memperkenalkan mekanisme pengesahan trend. Ia menilai apakah pasaran semasa berada dalam trend menaik atau menurun dengan membandingkannya dengan purata bergerak sederhana (SMA). Hanya isyarat beli yang muncul dalam trend menaik, atau isyarat jual yang muncul dalam trend menurun, yang benar-benar melakukan operasi perdagangan.
Selain itu, strategi ini juga memanjangkan jendela masa pengesahan isyarat. Iaitu, transaksi akan dilakukan apabila garis K semasa memenuhi syarat membeli atau menjual, dan garis K sebelumnya juga memenuhi syarat yang sama. Ini meningkatkan lagi kebolehpercayaan isyarat.
Akhirnya, strategi ini menetapkan peratusan harga berhenti dan berhenti yang tetap. Apabila perdagangan dilakukan, harga berhenti dan berhenti akan dikira berdasarkan harga pembukaan, dan apabila harga ini dicapai, ia akan secara automatik dihapuskan. Ini membantu mengawal risiko dan keuntungan perdagangan tunggal.
Strategi ini adalah strategi perdagangan yang lebih baik berdasarkan indikator MACD, meningkatkan kestabilan strategi dan potensi keuntungan melalui kaedah seperti pengesahan trend, pengesahan penangguhan isyarat, dan penghentian kerugian tetap. Tetapi ada juga risiko dalam pengoptimuman parameter, pengenalan trend, indikator tunggal, data pengesanan semula.
/*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)