Strategi Breakout Rentang Stochastics MACD menggabungkan indikator MACD dan Stochastics menjadi strategi perdagangan kuantitatif.
Ketika mengambil posisi, strategi ini mempertimbangkan sinyal dari MACD dan Stochastics untuk meningkatkan kualitas entri.
Strategi MACD Stochastics Range Breakout didasarkan pada prinsip-prinsip berikut:
Secara khusus, strategi ini menggunakan garis MACDDIFF melintasi garis DEA untuk menentukan sinyal tren bullish atau bearish.
Sementara itu, persilangan antara garis K dan garis D Stochastics di sekitar area overbought/oversold (default 30 dan 70) juga menghasilkan sinyal perdagangan.
Ketika MACD dan Stochastics memberikan sinyal yang selaras, strategi akan mengambil posisi.
Setelah masuk, titik stop loss dan take profit diatur untuk secara rasional mengendalikan kerugian perdagangan tunggal dan mengunci keuntungan.
Strategi Breakout Range MACD Stochastics memiliki kekuatan berikut:
Menggabungkan indikator meningkatkan kualitas sinyal
Menggunakan kedua MACD dan Stochastics menyaring beberapa sinyal palsu dan memungkinkan kualitas entri yang lebih baik.
Menangkap gerakan breakout dan perdagangan tren
Strategi ini mengkhususkan diri dalam menangkap gerakan breakout yang signifikan setelah berkisar. Gerakan ini cenderung besar.
Mekanisme stop loss/take profit yang dioptimalkan secara efektif mengendalikan risiko
Logika stop loss/take profit yang dibangun secara masuk akal membatasi kerugian perdagangan tunggal dan kunci keuntungan yang tepat waktu.
Meskipun dirancang dengan hati-hati, Strategi Penembusan Jangkauan Stochastics MACD memiliki beberapa risiko yang melekat:
Kehilangan waktu masuk yang sempurna
Penembusan palsu adalah hal yang umum sebelum penembusan yang valid terjadi. Waktu masuk yang tidak optimal dapat mengakibatkan harga masuk terbaik yang hilang.
Kegagalan melarikan diri
Sementara persiapan yang memadai dilakukan sebelum masuk, kegagalan breakouts masih mungkin, yang menyebabkan kerugian.
Optimasi parameter yang tidak benar
Pengaturan parameter yang tidak tepat sangat merusak kinerja strategi.
Untuk mengatasi risiko di atas, optimasi berikut dapat diadopsi:
Menambahkan indikator lain ke sinyal filter
Intervensi manual untuk memastikan penyebaran yang valid
Tes optimasi parameter multi-set yang ketat
Masih ada ruang untuk optimasi lebih lanjut dari Strategi Breakout Range MACD Stochastics:
Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik
Mengoptimalkan parameter Stochastics untuk menemukan kombinasi terbaik
Menggabungkan indikator lain seperti KDJ, BOLL untuk meningkatkan kualitas entri
Uji periode holding yang berbeda, optimalkan stop loss/take profit
Perbedaan parameter lintas aset uji
Memperkenalkan algoritma pembelajaran mesin untuk optimasi parameter otomatis
MACD Stochastics Range Breakout Strategy memanfaatkan rentang breakout dengan masuk berdasarkan sinyal yang selaras dari MACD dan Stochastics. Mekanisme stop loss / take profit lebih mengendalikan risiko.
/*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)