Strategi Penembusan Julat MACD Stochastics

Penulis:ChaoZhang, Tarikh: 2023-12-11 11:48:27
Tag:

img

Ringkasan

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.

Logika Strategi

Strategi Penembusan Julat Stochastics MACD terutamanya berdasarkan prinsip-prinsip berikut:

  1. Indikator MACD dapat mengenal pasti arah dan momentum trend harga dengan berkesan
  2. Indikator stokastik boleh melihat keadaan overbought atau oversold saham
  3. Apabila harga saham telah berkisar untuk tempoh masa, pergerakan arah yang ketara selepas memecahkan julat sebelumnya mungkin berlaku
  4. Menggabungkan isyarat dari MACD dan Stochastics pada penembusan julat membolehkan entri tepat pada masanya dan meningkatkan kualiti

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.

Kelebihan

Strategi Penembusan Julat Stochastics MACD mempunyai kekuatan berikut:

  1. Menggabungkan penunjuk meningkatkan kualiti isyarat

    Menggunakan kedua-dua MACD dan Stochastics menapis beberapa isyarat palsu dan membolehkan kualiti kemasukan yang lebih baik.

  2. Mengesan pergerakan keluar dan perdagangan trend

    Strategi ini mengkhususkan diri dalam menangkap pergerakan keluar yang signifikan selepas berkisar.

  3. 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.

Risiko

Walaupun reka bentuk yang teliti, Strategi Penembusan Julat Stochastics MACD mempunyai beberapa risiko yang melekat:

  1. 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.

  2. Kegagalan melarikan diri

    Walaupun persediaan yang mencukupi dibuat sebelum kemasukan, kegagalan breakouts masih mungkin, membawa kepada kerugian.

  3. Pengoptimuman parameter yang tidak betul

    Tetapan parameter yang tidak sesuai sangat menjejaskan prestasi strategi.

Untuk menangani risiko di atas, pengoptimuman berikut boleh diterima pakai:

  1. Menambah penunjuk lain kepada isyarat penapis

  2. Intervensi manual untuk memastikan penembusan yang sah

  3. Ujian pengoptimuman parameter pelbagai set yang ketat

Arahan pengoptimuman

Masih ada ruang untuk pengoptimuman lebih lanjut Strategi Penembusan Julat Stochastics MACD:

  1. Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik

  2. Mengoptimumkan parameter Stochastics untuk mencari kombinasi terbaik

  3. Menggabungkan penunjuk lain seperti KDJ, BOLL untuk meningkatkan kualiti kemasukan

  4. Uji tempoh penahan yang berbeza, mengoptimumkan stop loss / mengambil keuntungan

  5. Perbezaan parameter cross-asset ujian

  6. Memperkenalkan algoritma pembelajaran mesin untuk pengoptimuman parameter automatik

Kesimpulan

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)

Lebih lanjut