Strategi ini adalah versi yang lebih baik daripada strategi perdagangan berasaskan penunjuk MACD. Ia menggabungkan ciri-ciri trend berikut penunjuk MACD dengan idea perdagangan momentum, menjana isyarat perdagangan dengan menganalisis perbezaan antara purata bergerak cepat dan perlahan. Sementara itu, strategi ini juga memperkenalkan kaedah pengoptimuman seperti pengesahan trend, pengesahan kelewatan isyarat, peratusan tetap stop-loss dan mengambil keuntungan, untuk meningkatkan ketahanan dan keuntungan strategi.
Inti strategi ini adalah penunjuk MACD, yang terdiri daripada perbezaan antara purata bergerak pantas (EMA) dan purata bergerak perlahan (EMA). Apabila EMA pantas melintasi EMA perlahan, ia menghasilkan isyarat beli atau jual. Khususnya, apabila garis MACD menembusi garis isyarat dari bawah ke atas, ia menghasilkan isyarat beli; apabila garis MACD jatuh di bawah garis isyarat dari atas ke bawah, ia menghasilkan isyarat jual.
Selain isyarat persilangan MACD asas, strategi ini juga memperkenalkan mekanisme pengesahan trend. Ia membandingkan dengan purata bergerak mudah (SMA) untuk menentukan sama ada pasaran semasa berada dalam trend menaik atau penurunan. Hanya apabila isyarat beli muncul dalam trend menaik, atau isyarat jual muncul dalam trend menurun, operasi dagangan akan dilaksanakan. Ini berkesan mengelakkan isyarat palsu yang dihasilkan dalam pasaran berayun.
Di samping itu, strategi ini memperluaskan tetingkap masa pengesahan isyarat. iaitu, hanya apabila lilin semasa memenuhi syarat membeli atau menjual dan lilin sebelumnya juga memenuhi syarat yang sama, transaksi yang sesuai akan dilaksanakan. Ini lebih meningkatkan kebolehpercayaan isyarat.
Akhirnya, strategi menetapkan tahap stop-loss dan take-profit peratusan tetap. Setelah perdagangan dijalankan, harga stop-loss dan take-profit akan dikira berdasarkan harga masuk, dan kedudukan akan ditutup secara automatik sebaik sahaja harga ini dicapai. Ini membantu mengawal risiko dan pulangan satu transaksi.
Strategi ini adalah strategi perdagangan yang lebih baik berdasarkan penunjuk MACD. Melalui pengesahan trend, pengesahan kelewatan isyarat, stop-loss tetap dan mengambil keuntungan, dan kaedah lain, ia meningkatkan ketahanan dan potensi keuntungan strategi. Walau bagaimanapun, ia juga menghadapi risiko dalam pengoptimuman parameter, pengenalan trend, penunjuk tunggal, data backtesting, dan aspek lain. Pada masa akan datang, kita boleh mempertimbangkan untuk mengoptimumkan strategi dari aspek seperti menggabungkan penunjuk lain, stop-loss dinamik dan mengambil keuntungan, pengurusan kedudukan, dan pembelajaran mesin untuk meningkatkan lagi kesan aplikasinya yang praktikal.
/*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)