Strategi ini adalah strategi dagangan automatik berdasarkan silang purata bergerak ganda penunjuk teknikal MACD. Ia menggunakan silang garis isyarat MACD untuk menentukan arah trend untuk trend berikut.
Strategi ini mula-mula mengira tiga garis penunjuk MACD: garisan pantas, garisan perlahan dan histogram. Garis pantas adalah purata bergerak yang lebih cepat dalam tempoh yang lebih singkat sementara garis perlahan adalah purata bergerak yang lebih perlahan dalam tempoh yang lebih lama. Histogram adalah perbezaan antara garis pantas dan perlahan. Apabila garis pantas melintasi di atas garis perlahan, ia adalah isyarat salib emas yang menunjukkan isyarat beli. Apabila garis pantas melintasi di bawah garis perlahan, ia adalah isyarat salib kematian yang menunjukkan isyarat jual.
Strategi ini menggunakan logik ini untuk pergi panjang pada salib emas dan kedudukan dekat pada salib kematian; atau pergi pendek pada salib kematian dan kedudukan dekat pada salib emas untuk mengikuti trend secara automatik. Sementara itu, strategi ini juga menilai sama ada garis MACD mutlak positif atau negatif untuk mengelakkan isyarat palsu dan memastikan benar-benar menangkap titik pembalikan trend.
Pengurangan Risiko:
Strategi ini boleh ditingkatkan dari aspek berikut:
Menggabungkan penunjuk lain seperti KDJ, Bollinger Bands dll untuk mengesahkan isyarat dan menapis isyarat palsu
Meningkatkan mekanisme kemasukan, contohnya menambah penapis pecah untuk mengelakkan kemasukan awal atau lewat
Mengoptimumkan tetapan parameter, menyesuaikan tempoh baris pantas dan perlahan berdasarkan jangka masa yang berbeza dan rejim pasaran
Tambah stop loss untuk mengawal kerugian perdagangan tunggal
Mengembangkan kepada produk lain seperti forex, mata wang kripto dan lain-lain
Strategi berikut trend MACD menggunakan penunjuk MACD untuk menentukan arah trend digabungkan dengan penyambungan garis isyarat untuk menapis isyarat dengan berkesan dan menangkap pembalikan trend untuk trend automatik. Kelebihan terletak pada penghakiman trend yang tepat, penyesuaian parameter yang fleksibel untuk memenuhi persekitaran pasaran. Pengurusan risiko adalah penting untuk mengelakkan isyarat palsu. pengoptimuman lanjut dengan penunjuk teknikal tambahan dan penyesuaian parameter dapat meningkatkan prestasi strategi.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h 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/ // © DeMindSET //@version=4 strategy("MACD Trend Follow Strategy", overlay=false) // Getting inputs LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) // Bull= macd > signal Bear= macd < signal ConBull=macd>0 ConBear=macd<0 // Green= Bull and ConBull Red= Bear and ConBear Yellow= Bull and ConBear Blue= Bear and ConBull // bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na barcolor(color=bcolor) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2019, title = "From Year", minval = 1920) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" if LSB == "Long only" and Green strategy.entry("L",true) if LSB == "Long only" and Red strategy.close("L",qty_percent=100,comment="TP Long") if LSB == "Both" and Green strategy.entry("L",true) if LSB == "Both" and Red strategy.entry("S",false) if LSB == "Short only" and Red strategy.entry("S",false) if LSB == "Short only" and Green strategy.close("S",qty_percent=100,comment="TP Short")