Strategi Penembusan Julat Stochastics MACD menggabungkan penunjuk MACD dan Stochastics ke dalam strategi perdagangan kuantitatif. Ia cuba mengenal pasti arah trend harga saham dan mengambil kedudukan apabila harga keluar dari zon julat.
Apabila mengambil kedudukan, strategi ini mengambil kira isyarat dari kedua-dua MACD dan Stochastics untuk meningkatkan kualiti entri.
Strategi Penembusan Julat Stochastics MACD terutamanya berdasarkan prinsip-prinsip berikut:
Secara khusus, strategi ini menggunakan garis MACDDIFF melintasi garis DEA untuk menentukan isyarat trend menaik atau menurun. Apabila DIFF melintasi DEA ke atas, ia menghasilkan isyarat menaik dan sebaliknya.
Sementara itu, persilangan antara garis K dan garis D Stochastics di sekitar kawasan overbought/oversold (default 30 dan 70) juga menghasilkan isyarat perdagangan.
Apabila MACD dan Stochastics memberikan isyarat sejajar, strategi akan mengambil kedudukan. Pada ketika ini, pergerakan harga yang besar mungkin berlaku.
Selepas memasuki, titik stop loss dan mengambil keuntungan ditetapkan untuk mengawal kerugian perdagangan tunggal secara rasional dan mengunci keuntungan.
Strategi Penembusan Julat Stochastics MACD mempunyai kekuatan berikut:
Menggabungkan penunjuk meningkatkan kualiti isyarat
Menggunakan kedua-dua MACD dan Stochastics menapis beberapa isyarat palsu dan membolehkan kualiti kemasukan yang lebih baik.
Mengesan pergerakan keluar dan perdagangan trend
Strategi ini mengkhususkan diri dalam menangkap pergerakan keluar yang signifikan selepas berkisar.
Mekanisme Stop Loss/Take Profit yang dioptimumkan mengawal risiko dengan berkesan
Logik stop loss/take profit yang terbina dalam dengan munasabahnya mengehadkan kerugian perdagangan tunggal dan kunci masa keuntungan.
Walaupun reka bentuk yang teliti, Strategi Penembusan Julat Stochastics MACD mempunyai beberapa risiko yang melekat:
Kehilangan masa kemasukan yang sempurna
Penembusan palsu adalah perkara biasa sebelum penembusan yang sah berlaku. Masa kemasukan yang kurang optimum boleh mengakibatkan harga kemasukan terbaik yang hilang.
Kegagalan melarikan diri
Walaupun persediaan yang mencukupi dibuat sebelum kemasukan, kegagalan breakouts masih mungkin, membawa kepada kerugian.
Pengoptimuman parameter yang tidak betul
Tetapan parameter yang tidak sesuai sangat menjejaskan prestasi strategi.
Untuk menangani risiko di atas, pengoptimuman berikut boleh diterima pakai:
Menambah penunjuk lain kepada isyarat penapis
Intervensi manual untuk memastikan penembusan yang sah
Ujian pengoptimuman parameter pelbagai set yang ketat
Masih ada ruang untuk pengoptimuman lebih lanjut Strategi Penembusan Julat Stochastics MACD:
Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik
Mengoptimumkan parameter Stochastics untuk mencari kombinasi terbaik
Menggabungkan penunjuk lain seperti KDJ, BOLL untuk meningkatkan kualiti kemasukan
Uji tempoh penahan yang berbeza, mengoptimumkan stop loss / mengambil keuntungan
Perbezaan parameter cross-asset ujian
Memperkenalkan algoritma pembelajaran mesin untuk pengoptimuman parameter automatik
Strategi Penembusan Julat MACD Stochastics memanfaatkan penembusan julat dengan memasuki berdasarkan isyarat yang diselaraskan dari kedua-dua MACD dan Stochastics. Mekanisme stop loss / take profit lebih mengawal risiko. Ia bertujuan untuk menangkap trend jangka pendek tetapi masih meninggalkan ruang untuk penyesuaian parameter dan lebih banyak kombinasi penunjuk untuk prestasi yang lebih baik.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true) // Getting inputs fast_length = input(title = "Fast Length", defval = 180) slow_length = input(title = "Slow Length", defval = 390) src = input(title = "Source", defval = close) signal_length = input.int(title = "Signal Smoothing", minval = 1, maxval = 500, defval = 135) sma_source = input.string(title = "Oscillator MA Type", defval = "EMA", options = ["SMA", "EMA"]) sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // hline(0, "Zero Line", color = color.new(#787B86, 50)) // plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252))) // plot(macd, title = "MACD", color = #2962FF) // plot(signal, title = "Signal", color = #FF6D00) periodK = input.int(14, title="%K Length", minval=1) smoothK = input.int(1, title="%K Smoothing", minval=1) periodD = input.int(3, title="%D Smoothing", minval=1) k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) // plot(k, title="%K", color=#2962FF) // plot(d, title="%D", color=#FF6D00) // h0 = hline(80, "Upper Band", color=#787B86) // hline(50, "Middle Band", color=color.new(#787B86, 50)) // h1 = hline(20, "Lower Band", color=#787B86) // fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background") // Make inputs that set the take profit % (optional) longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01 // Calculate trading conditions enterLong = macd>signal and ta.crossover(k,30) enterShort = macd<signal and ta.crossunder(k,70) // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Plot take profit values for confirmation plot(strategy.position_size > 0 ? longExitPrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Long Take Profit") plot(strategy.position_size < 0 ? shortExitPrice : na, color=color.red, style=plot.style_circles, linewidth=3, title="Short Take Profit") // Submit entry orders if enterLong strategy.entry("long", strategy.long) if enterShort strategy.entry("short", strategy.short) // STEP 3: // Submit exit orders based on take profit price if strategy.position_size > 0 strategy.exit("long TP", limit=longExitPrice) if strategy.position_size < 0 strategy.exit("short TP", limit=shortExitPrice)