
Strategi MACD Stochastics Oscillation Breakout adalah strategi perdagangan kuantitatif yang menggabungkan indikator MACD dan indikator Stochastics. Strategi ini mencoba mengidentifikasi arah tren harga saham dan memasuki posisi saat harga keluar dari zona getaran.
Ketika memasuki posisi, strategi ini mempertimbangkan sinyal dari kedua indikator MACD dan Stochastics secara bersamaan untuk meningkatkan kualitas Entries. Selain itu, strategi ini telah menetapkan titik-titik stop loss dan stop loss, yang dapat secara efektif mengendalikan risiko.
Strategi MACD Stochastics Waveband Shake-Breakout didasarkan pada prinsip-prinsip berikut:
Secara khusus, strategi ini menggunakan garis DIFF dan garis DEA yang bersilang di MACD sebagai sinyal untuk menentukan arah tren harga. Ketika DIFF naik melewati DEA, sinyal multihead dihasilkan, sebaliknya, sinyal headless dihasilkan.
Pada saat yang sama, K-line Stochastics yang melintasi ke atas atau ke bawah dengan D-line di dekat zona overbought dan oversold (default 30 dan 70) juga menghasilkan sinyal perdagangan.
Ketika MACD dan Stochastics memberikan sinyal yang sama, strategi ini memilih untuk masuk. Pada saat ini harga saham kemungkinan besar akan menghasilkan terobosan yang lebih besar.
Setelah masuk, strategi akan mengatur stop loss dan stop loss yang rasional. Stop loss yang rasional dapat secara efektif mengontrol kerugian tunggal, dan stop loss dapat mengunci keuntungan.
Strategi MACD Stochastics Wave Band Shake Break memiliki keuntungan sebagai berikut:
Strategi ini menggunakan MACD dan Stochastics untuk memfilter beberapa sinyal palsu dan meningkatkan kualitas entri.
Strategi ini dirancang khusus untuk menangkap pergerakan yang terjadi setelah pergerakan harga saham yang berlangsung lama.
Strategi ini memiliki pengaturan stop loss yang dapat mengontrol kerugian tunggal secara rasional dan mengunci keuntungan tepat waktu.
Meskipun strategi MACD Stochastics Waveband Shake-Break telah dirancang dengan hati-hati, masih ada beberapa risiko:
Jika waktu masuk dipilih dengan tidak tepat, mungkin membuat entri ini menjadi kehilangan titik masuk terbaik.
Meskipun persiapan telah dilakukan sebelum terobosan, masih ada kemungkinan terobosan gagal. Dalam hal ini, kerugian akan terjadi.
Pengaturan parameter dari strategi akan sangat mempengaruhi hasil. Jika parameter tidak diatur dengan benar, Anda akan mendapatkan diskon besar.
Untuk mengantisipasi risiko tersebut, Anda dapat mengoptimalkannya dengan:
Kombinasi sinyal filter indikator lainnya
Intervensi manusia memastikan posisi terobosan
Pengujian optimasi parameter multiset
Strategi MACD Stochastics Waveband Shake-Break masih memiliki ruang untuk optimasi lebih lanjut:
Mengoptimalkan parameter MACD untuk menemukan kombinasi optimal
Optimalkan parameter Stochastics untuk menemukan kombinasi optimal
Menambahkan kombinasi indikator lain, seperti KDJ, BOLL, dan lain-lain, untuk meningkatkan kualitas Entries
Uji Coba Berbagai Waktu Pemegang Posisi, Optimalkan Strategi Stop Loss
Uji diferensiasi parameter dari berbagai indikator perdagangan
Menambahkan algoritma pembelajaran mesin, parameter optimasi otomatis
Strategi MACD Stochastics Waveband Shaking Breakthrough Strategi ini menggunakan MACD dan Stochastics sebagai indikator yang komprehensif, sehingga masuk ke dalam pasar dengan kualitas tinggi saat wavesband shaking breakthrough. Strategi ini juga didukung dengan strategi stop loss yang efektif untuk mengontrol risiko. Strategi ini menangkap tren jangka pendek dari harga saham, dan memiliki keunggulan perdagangan tertentu.
/*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)