Dual SuperTrend dengan strategi perdagangan gabungan MACD

Penulis:ChaoZhang, Tarikh: 2023-09-26 17:45:03
Tag:

Ringkasan

Strategi dagangan gabungan Dual SuperTrend dengan MACD menggabungkan dua penunjuk trend (SuperTrend 1 dan SuperTrend 2) dengan pengayun momentum (MACD) untuk menyediakan pendekatan sistematik untuk dagangan tanpa pengambilan keputusan pertimbangan.

Kelebihan utama strategi ini:

  • Pengesahan SuperTrend Berganda - Menggunakan dua penunjuk SuperTrend dengan tempoh dan faktor ATR yang berbeza untuk mengesahkan arah trend meminimumkan isyarat palsu.

  • Pengesahan Momentum - Histogram MACD bertindak sebagai penapis momentum untuk mengesahkan kemasukan dan keluar.

  • Objektif Peraturan Masuk dan Keluar - Strategi menghasilkan isyarat beli dan jual yang jelas berdasarkan gabungan trend dan momentum.

  • Pengurusan Perdagangan Automatik - Tetapan terbina dalam untuk komisen, slippage dan modal awal mengotomatiskan proses pelaksanaan perdagangan.

  • Keupayaan untuk disesuaikan - Semua parameter boleh disesuaikan dengan mudah untuk memenuhi keperluan perdagangan tertentu dan keadaan pasaran yang berubah.

Cara Ia Bekerja

Strategi ini beroperasi di atas satu set peraturan yang ditakrifkan, memberi tumpuan terutamanya kepada arah trend yang disahkan oleh Dual SuperTrend dan momentum yang ditunjukkan oleh histogram MACD.

Peraturan kemasukan

  • Long Entry: Baik SuperTrends bullish dan histogram MACD di atas sifar.

  • Entry Pendek: Kedua-dua SuperTrends menurun dan histogram MACD di bawah sifar.

Peraturan Keluar

  • Keluar Lama: Sama ada SuperTrend berubah menjadi menurun atau histogram MACD jatuh di bawah sifar.

  • Keluar Pendek: Sama ada SuperTrend menjadi bullish atau histogram MACD meningkat di atas sifar.

Pengurusan Perdagangan

  • Kadar komisen tetap dan tetapan slippage.

  • Pengurusan risiko auto untuk mengelakkan pendedahan berlebihan.

Arah Perdagangan

Strategi ini membolehkan perdagangan di kedua-dua pasaran bullish dan bearish. Pengguna boleh memilih arah (panjang, pendek atau kedua-duanya) yang sejajar dengan pandangan pasaran mereka.

Penggunaan

  • Yang terbaik digunakan pada jangka masa di mana trendnya jelas.

  • Pengguna boleh menyesuaikan parameter SuperTrend dan MACD.

Tetapan lalai

  • SuperTrend 1 Tempoh ATR: 10

  • SuperTrend 1 Faktor: 3.0

  • SuperTrend 2 Tempoh ATR: 20

  • SuperTrend 2 Faktor: 5.0

  • MACD Panjang Cepat: 12

  • MACD Lambat: 26

  • Penghapusan Isyarat MACD: 9

  • Suruhanjaya: 0.1%

  • Penarikan: 1 mata

  • Arah: Kedua-duanya

Parameter lalai menawarkan pendekatan yang seimbang tetapi boleh disesuaikan.

Kelebihan

Kelebihan utama strategi ini:

  1. Pengesahan trend berganda mengurangkan isyarat palsu

Menggunakan dua penunjuk SuperTrend mengurangkan isyarat palsu dengan ketara berbanding dengan strategi penunjuk tunggal.

  1. Penapis momentum MACD meningkatkan ketepatan

Histogram MACD menapis isyarat perdagangan yang kurang ideal, meningkatkan ketepatan kemasukan.

  1. Kawalan pengambilan yang berkesan

Gabungan penunjuk trend dua membolehkan keluar dengan cepat apabila trend berubah, membantu mengawal pengeluaran.

  1. Tahap automatik yang tinggi, tidak memerlukan budi bicara

Peraturan kemasukan dan keluar yang ditakrifkan dengan baik menghapuskan tafsiran subjektif dan kesilapan manusia.

  1. Sangat disesuaikan untuk kegunaan yang lebih luas

Parameter yang boleh diselaraskan menjadikan strategi ini kukuh untuk instrumen dan keutamaan perdagangan yang berbeza.

Risiko dan Pengoptimuman

Risiko yang berpotensi termasuk:

  1. Kesukaran dalam peralihan trend dinamik

Peralihan trend yang kerap boleh menjadi cabaran untuk persediaan penunjuk trend dua.

  1. Kawalan pengambilan yang terhad dalam trend yang kuat

Stop loss boleh tertinggal dalam pergerakan trend yang kuat, yang membawa kepada pengeluaran yang lebih besar.

  1. Ketidakupayaan untuk bertindak balas terhadap peristiwa tiba-tiba

Ia tidak boleh menyesuaikan diri dengan cepat dengan peristiwa black swan, meningkatkan risiko penarikan.

Peluang pengoptimuman

  1. Parameter tune halus untuk instrumen yang berbeza.

  2. Tambahkan mekanisme stop loss seperti trailing stop untuk mengawal pengeluaran lebih lanjut.

  3. Masukkan penunjuk lain untuk mengenal pasti kejadian tiba-tiba dan mengurangkan pengeluaran.

Kesimpulan

Ringkasnya, strategi gabungan Dual SuperTrend dan MACD menggabungkan kekuatan trend berikut dan analisis momentum. Dengan peraturan yang jelas dan tahap automasi yang tinggi, ia dapat menapis bunyi bising dengan berkesan dan memberikan utiliti praktikal yang kuat. Tetapi kawalan penarikan dan pengoptimuman parameter perlu ditangani. Secara keseluruhan, ini adalah salah satu contoh terbaik strategi perdagangan trend yang sistematik.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

//@version=5
// Define the strategy settings
// strategy("Dual-Supertrend with MACD - Strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, 
//  commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
//   currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Trading Direction Dropdown
tradeDirection = input.string("both", "Trading Direction", options=["long", "short", "both"])

// MACD Inputs
fast_length = input(12, "Fast Length")
slow_length = input(26, "Slow Length")
signal_length = input(9, "Signal Smoothing")
sma_source = input.string("EMA", "Oscillator MA Type", options=["SMA", "EMA"])
sma_signal = input.string("EMA", "Signal Line MA Type", options=["SMA", "EMA"])


// MACD Calculation
fast_ma = sma_source == "SMA" ? ta.sma(close, fast_length) : ta.ema(close, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(close, slow_length) : ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Input Parameters for Supertrend 1
atrPeriod1 = input(10, "ATR Length for Supertrend 1")
factor1 = input.float(3.0, "Factor for Supertrend 1", step=0.01)

// Supertrend Calculation for 1
[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)

// Input Parameters for Supertrend 2
atrPeriod2 = input(20, "ATR Length for Supertrend 2")
factor2 = input.float(5.0, "Factor for Supertrend 2", step=0.01)

// Supertrend Calculation for 2
[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)

// Combined Conditions
isBullish = direction1 < 0 and direction2 < 0 and hist > 0
isBearish = direction1 > 0 and direction2 > 0 and hist < 0
exitLong = direction1 > 0 or direction2 > 0 or hist < 0
exitShort = direction1 < 0 or direction2 < 0 or hist > 0

// Strategy Entry and Exit based on Trading Direction
if (tradeDirection == "both" or tradeDirection == "long")
    strategy.entry("Buy", strategy.long, when=isBullish)
    strategy.close("Buy", when=exitLong)

if (tradeDirection == "both" or tradeDirection == "short")
    strategy.entry("Sell", strategy.short, when=isBearish)
    strategy.close("Sell", when=exitShort)

bodyMiddle1 = plot((open + close) / 2, display=display.none)
upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend1 = plot(direction1 < 0? na : supertrend1, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle1, upTrend1, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle1, downTrend1, color.new(color.red, 90), fillgaps=false)

bodyMiddle2 = plot((open + close) / 2, display=display.none)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend2 = plot(direction2 < 0? na : supertrend2, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle2, upTrend2, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle2, downTrend2, color.new(color.red, 90), fillgaps=false)

Lebih lanjut