Strategi Perdagangan Momentum Breakout


Tanggal Pembuatan: 2023-12-19 15:46:38 Akhirnya memodifikasi: 2023-12-19 15:46:38
menyalin: 2 Jumlah klik: 573
1
fokus pada
1621
Pengikut

Strategi Perdagangan Momentum Breakout

Ringkasan

Momentum Breakout Trading Strategy adalah strategi pelacakan tren yang menghasilkan sinyal perdagangan dengan mendeteksi harga yang menembus titik resistensi pendukung yang penting. Strategi ini menggunakan dinamika indikator Donchian Channel untuk menentukan titik resistensi pendukung yang penting, dan dikombinasikan dengan indikator rata-rata bergerak untuk memfilter lebih lanjut sinyal, untuk menghindari perdagangan yang salah.

Prinsip Strategi

Indikator utama dari strategi ini adalah saluran Donchian. Saluran Donchian terdiri dari harga tertinggi, harga terendah, dan harga garis tengah. Saluran atas saluran dan saluran bawah saling menghubungkan harga tertinggi dan terendah dalam periode tertentu.

Moving averages digunakan untuk menentukan arah tren harga. Hanya ketika harga berada di atas moving averages, sinyal beli yang menerobos saluran di atas rel diambil, sehingga dapat menghindari membeli di area setup.

Secara khusus, kondisi masuk strategi ini adalah: harga menembus tren naik Donchian Channel, dan harga penutupan lebih tinggi dari rata-rata bergerak. Kondisi keluar adalah: harga jatuh tren turun Donchian Channel.

Stop loss adalah cara untuk melacak tren bawah Donchian Channel. Hal ini menjamin bahwa stop loss akan naik seiring dengan tren.

Analisis Keunggulan

Strategi ini menggabungkan dua indikator untuk menentukan arah dan kekuatan tren, sehingga dapat secara efektif mengidentifikasi sinyal penembusan dan menghindari perdagangan yang salah. Pada saat yang sama, metode stop loss masuk akal, sehingga strategi dapat sepenuhnya melacak tren untuk mendapatkan keuntungan.

Secara khusus, strategi ini memiliki keuntungan sebagai berikut:

  1. Indikator Donchian Channel dapat secara dinamis mengidentifikasi titik-titik resistensi dan dukungan yang penting, serta mengidentifikasi titik-titik perubahan tren yang penting.

  2. Indikator Moving Average berfungsi sebagai filter untuk menghindari pembelian di zona setoran dan mengurangi transaksi yang tidak valid.

  3. Metode stop loss adalah dengan mengikuti tren bawah Donchian Channel, untuk memaksimalkan keuntungan dari tren tersebut.

  4. Pengaturan parameter strategi cukup fleksibel dan dapat disesuaikan dan dioptimalkan untuk berbagai kondisi pasar.

Analisis risiko

Strategi ini menghadapi risiko utama sebagai berikut:

  1. Risiko kegagalan penembusan. Setelah harga menembus saluran, harga mungkin akan kembali ke jalurnya dengan cepat, sehingga tidak dapat membangun gudang secara efektif.

  2. Trend reversal risk. Pasar dapat berbalik sebelum titik stop loss, menyebabkan stop loss keluar.

  3. Risiko pengoptimalan parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan frekuensi perdagangan atau kurangnya sinyal.

Untuk risiko ini, dapat dioptimalkan dengan cara menyesuaikan siklus moving average, menambahkan filter volume transaksi, dan lain-lain, untuk memastikan sinyal yang dihasilkan lebih dapat diandalkan. Selain itu, beberapa pengaturan Stop Loss Loose harus disesuaikan untuk menghadapi risiko perubahan jangka pendek.

Arah optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Dengan menggunakan indikator lalu lintas untuk memfilter sinyal, pastikan bahwa penembusan itu kuat.

  2. Optimalkan parameter siklus rata-rata bergerak agar lebih sesuai dengan karakteristik varietas yang berbeda.

  3. Mengatur mekanisme stop loss agar jarak stop loss dapat beradaptasi dengan fluktuasi harga.

  4. Menambahkan mekanisme re-entry untuk menangkap peluang tren setelah berhenti keluar.

  5. Retest multi-varietas, memeriksa parameter kebugaran. Sesuaikan parameter sesuai dengan karakteristik varietas yang berbeda.

Meringkaskan

Strategi perdagangan terobosan dinamis mengintegrasikan berbagai indikator untuk menentukan arah dan kekuatan tren, mengatasi masalah blind positioning sistem tren yang umum. Pengaturan parameter strategi ini fleksibel, dapat disesuaikan secara optimal untuk berbagai situasi dan varietas perdagangan, merupakan sistem terobosan yang lebih umum dan praktis.

Kode Sumber Strategi
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Revision:        1
// Author:          @millerrh
// Strategy:  
//      Entry: Buy when Donchian Channel breaks out
//      Exit: Trail a stop with the lower Donchian Channel band
// Conditions/Variables:
//    1. Can add a filter to only take setups that are above a user-defined moving average (helps avoid trading counter trend) 
//    2. Manually configure which dates to back test
//    3. User-Configurable DC Channel length


// === CALL STRATEGY/STUDY, PROGRAMATICALLY ENTER STRATEGY PARAMETERS HERE SO YOU DON'T HAVE TO CHANGE THEM EVERY TIME YOU RUN A TEST ===
// (STRATEGY ONLY) - Comment out srategy() when in a study() 
strategy("Donchian Breakout", overlay=true, initial_capital=10000, currency='USD', 
   default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// (STUDY ONLY) - Comment out study() when in a strategy() 
//study("Donchian Breakout", overlay=true)


// === BACKTEST RANGE ===
From_Year  = input(defval = 2019, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window

// == INPUTS ==
trigInput = input(title = "Execute Trades On...", defval = "Wick", options=["Wick","Close"]) // Useful for comparing standing stop orders vs. waiting for candle closes prior to action
stopTrail = input(title = "Trail Stops On...", defval = "ATR", options = ["ATR","Bottom of DC Channel","Midline of DC Channel","Tightest of ATR/Bot DC Channel"])
dcPeriod = input(title="DC period", type=input.integer, defval=20)

// === PLOT THE DONCHIAN CHANNEL ===
// Logic
dcUpper = highest(high, dcPeriod)
dcLower = lowest(low, dcPeriod)
dcMid = avg(dcUpper, dcLower)

// Plotting
dcUplot = plot(dcUpper, color=color.blue, linewidth=1, title="Upper Channel Line")
dcLplot = plot(dcLower, color=color.blue, linewidth=1, title="Lower Channel Line")
dcMidPlot = plot(dcMid, color=color.gray, linewidth=1, title="Mid-Line Average")
fill(dcUplot, dcLplot, color=color.gray, transp=90)

// == FILTERING ==
// Inputs
useMaFilter = input(title = "Use MA for Filtering?", type = input.bool, defval = true)
maType = input(defval="SMA", options=["EMA", "SMA"], title = "MA Type For Filtering")
maLength   = input(defval = 100, title = "MA Period for Filtering", minval = 1)

// Declare function to be able to swap out EMA/SMA
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = ma(maType, close, maLength)
plot(maFilter, title = "Trend Filter MA", color = color.green, linewidth = 3, style = plot.style_line, transp = 50)

// Check to see if the useMaFilter check box is checked, this then inputs this conditional "maFilterCheck" variable into the strategy entry 
maFilterCheck = if useMaFilter == true
    maFilter
else
    0

// == ENTRY AND EXIT CRITERIA ==
// Trigger stop based on candle close or High/Low (i.e. Wick) - If doing daily timeframe, can do candle close.  Intraday should use wick.
trigResistance = trigInput == "Close" ? close : trigInput == "Wick" ? high : na
trigSupport = trigInput == "Close" ? close : trigInput == "Wick" ? low : na
buySignal = trigResistance >= dcUpper[1] // The [1] looks at the previous bar's value as it didn't seem to be triggering correctly without it (likely) DC moves with each bar
sellSignal = trigSupport <= dcLower[1]

buy = buySignal and dcUpper[1] > maFilterCheck // All these conditions need to be met to buy


// (STRATEGY ONLY) Comment out for Study
// This string of code enters and exits at the close
if (trigInput == "Close")
    strategy.entry("Long", strategy.long, when = buy)
    strategy.close("Long", when = sellSignal)

// This string of code enters and exits at the wick (i.e. with pre-set stops)
if (trigInput == "Wick")
    strategy.entry("Long", strategy.long, stop = dcUpper[1], when = time > Start and time < Finish and dcUpper[1] > maFilterCheck)
    strategy.exit("Exit Long", from_entry = "Long", stop = dcLower[1])