Bitcoin Momentum Trailing Stop Strategi

Penulis:ChaoZhang, Tarikh: 2024-03-08 16:20:16
Tag:

img

Ringkasan Strategi

Strategi Bitcoin Momentum Trailing Stop adalah strategi yang berasaskan momentum yang panjang yang direka untuk menangkap trend menaik Bitcoin sambil mengurangkan risiko penurunan melalui stop-loss yang diselaraskan secara dinamik. Strategi ini menggunakan teknik stop trailing momentum yang mudah namun pintar, yang mengetatkan stop-loss semasa turun naik yang sangat rendah untuk melindungi keuntungan terbuka dan melonggarkan stop-loss semasa momentum menaik yang berterusan untuk membiarkan keuntungan berjalan. Strategi ini kekal dilaburkan selagi harga Bitcoin berada di atas purata bergerak eksponensial 20 minggu (EMA) dan keluar apabila harga ditutup di bawahnya. Ia hanya berdagang satu kedudukan dan tidak pendek, tetapi dapat dengan mudah disesuaikan untuk melakukan apa sahaja yang anda sukai jika anda tahu apa yang anda lakukan.

Prinsip Strategi

  1. Harga semasa Bitcoin mesti berdagang di atas EMA jangka masa yang lebih tinggi (20 minggu EMA).
  2. Bitcoin tidak boleh berada dalam keadaan hati-hati, yang ditakrifkan sebagai swing high baru-baru ini dikurangkan daripada bar bar low yang lebih besar daripada 1.5 kali ATR, atau penutupan harian yang lebih rendah daripada 20 EMA harian.
  3. Stop-loss ditetapkan pada paras tertinggi swing baru-baru ini dikurangkan 1 ATR, atau dikurangkan 20% daripada ATR (iaitu, 0,2 ATR) jika dalam keadaan berhati-hati.
  4. Keluar pada bar seterusnya dibuka apabila harga ditutup di bawah stop-loss.

Strategi ini menggunakan carta mingguan dan EMA 20-minggu sebagai penapis trend, hanya memasuki apabila harga di atas EMA 20-minggu. ATR 5-periode digunakan untuk menyesuaikan jarak penangguhan secara dinamik, yang ketat dalam keadaan berhati-hati. Negeri berhati-hati ditakrifkan oleh dua syarat: jarak dari swing tinggi baru-baru ini ke rendah semasa lebih besar daripada 1.5 kali ATR, atau penutupan harian berada di bawah 20 EMA harian. Pendekatan penyesuaian stop-loss dinamik ini membolehkan ruang tarik balik yang lebih besar apabila trend kuat dan dengan cepat mengunci keuntungan apabila trend melemah.

Kelebihan Strategi

  1. Kesederhanaan dan keberkesanan: Logik strategi adalah mudah, jelas, mudah difahami dan dilaksanakan, sambil menangkap dengan berkesan tren menaik utama Bitcoin.

  2. Stop-loss dinamik: Kedudukan stop-loss disesuaikan secara dinamik berdasarkan keadaan turun naik pasaran, mengawal pengeluaran sambil membiarkan keuntungan berjalan, yang merupakan pendekatan yang agak seimbang dan kukuh untuk pengurusan stop-loss.

  3. Penapisan trend: Dengan menapis dengan purata bergerak tahap yang lebih tinggi (20-minggu EMA), strategi hanya memasuki semasa trend menaik yang jelas, sangat meningkatkan kadar kemenangan strategi dan nisbah risiko-balasan.

  4. Saiz kedudukan: lalai adalah untuk berdagang dengan kedudukan penuh, memaksimumkan penggunaan modal dan meningkatkan kecekapan modal. Saiz kedudukan juga boleh disesuaikan dengan fleksibel.

  5. Penggunaan yang luas: Logik strategi boleh dengan mudah dipindahkan ke aset dan pasaran lain, mempunyai umum yang baik.

Risiko Strategi

  1. Penggunaan parameter: Parameter strategi ditetapkan berdasarkan ciri-ciri pasaran Bitcoin, dan penerapannya ke pasaran lain perlu disahkan dan mungkin memerlukan pengoptimuman parameter untuk aset yang berbeza.

  2. Pengesanan trend: Strategi ini terutamanya bergantung kepada penunjuk teknikal seperti EMA peringkat tinggi dan ATR untuk menilai trend, yang tidak menyeluruh seperti analisis asas dalam memahami keadaan pasaran dan terdedah kepada kesilapan pada titik perubahan pasaran.

  3. Risiko stop-loss: Walaupun stop-loss dinamik boleh mengawal risiko hingga tahap tertentu, penarikan yang signifikan masih boleh berlaku dalam keadaan pasaran yang melampau (seperti penurunan tajam atau turun naik yang mendalam).

  4. Potensi keuntungan: Strategi ini berfungsi dengan baik dalam trend menaik satu arah tetapi lebih cenderung untuk jatuh ke dalam dilema stop-loss yang kerap di pasaran jangkauan, berpotensi mengehadkan potensi keuntungan keseluruhan.

  5. Prestasi langsung: Walaupun strategi ini berfungsi dengan baik dalam pengujian belakang, perdagangan langsung dipengaruhi oleh faktor-faktor seperti slippage dan komisen, dan hasil sebenar mungkin berbeza dari pulangan teori, yang memerlukan penilaian yang teliti.

Arahan pengoptimuman

  1. Penentuan trend: Pertimbangkan untuk memperkenalkan purata bergerak yang lebih tinggi, penunjuk turun naik, atau data asas untuk meningkatkan ketepatan dan kebolehpercayaan pengenalan trend.

  2. Parameter dinamik: Posisi stop-loss dan parameter ATR boleh dioptimumkan lagi dengan memperkenalkan mekanisme penyesuaian dinamik yang berkaitan dengan harga atau turun naik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  3. Ukuran kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan penunjuk seperti kekuatan trend dan turun naik, meningkatkan saiz kedudukan apabila trend kuat dan mengurangkan saiz kedudukan semasa turun naik yang tinggi untuk meningkatkan nisbah risiko-balasan.

  4. Mekanisme panjang/pendek: Memperkenalkan mekanisme jualan pendek di pasaran beruang untuk memperluaskan penerapan strategi dan potensi keuntungan.

  5. Gabungan strategi: Gabungkan strategi ini dengan strategi lain (seperti pembalikan purata) untuk melengkapi kekuatan masing-masing dan meningkatkan kestabilan dan keuntungan strategi.

Ringkasan Strategi

Strategi Bitcoin Momentum Trailing Stop adalah strategi momentum yang mudah dan berkesan yang menangkap trend menaik Bitcoin yang kuat menggunakan purata bergerak peringkat tinggi dan penunjuk ATR sambil mengawal risiko penurunan melalui stop-loss yang diselaraskan secara dinamik. Logik strategi jelas, mudah dilaksanakan dan dioptimumkan, dan sesuai untuk pelabur jangka menengah hingga panjang yang mencari pulangan yang stabil. Strategi ini boleh berfungsi sebagai templat asas, dan pelabur boleh menyempurnakan lagi berdasarkan keperluan dan pengalaman mereka sendiri dalam bidang seperti penentuan trend, pengoptimuman parameter, pengurusan kedudukan, dan mekanisme panjang / pendek, atau menggabungkannya dengan strategi lain untuk mencapai nisbah risiko-balasan yang lebih tinggi.


/*backtest
start: 2023-03-08 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading
// ------------------------------------------------------------------------------------------------------
// System Concept: Capture as much Bitcoin upside volatility as possible while side-stepping downside volatility.
//  Entry Rule #1: Bitcoin must be trading above higher-timeframe EMA (Weekly 20 EMA)
//  Entry Rule #2: Bitcoin must not be in 'caution' condition
//      -> Caution: True if BTC's recent swing high minus its current low is > 1.5x ATR OR close < Daily EMA
//  Trailing Stop: Stop is trailed 1 ATR from recent swing high, OR 20% of ATR if in caution condition
// ------------------------------------------------------------------------------------------------------
// @version=5
strategy("Bitcoin Momentum Strategy", 
     overlay=true)

// Get user input
var const string    G_STRATEGY  = "Strategy Entry Settings"
var const string    G_EXIT      = "Strategy Exit Settings"
var const string    G_FILTER    = "Strategy Filters"
i_HigherTimeframe   = input.timeframe("W", "Higher Timeframe", group=G_STRATEGY, tooltip="Higher timeframe MA reference")
i_EmaLength         = input.int(20, "EMA Length", group=G_STRATEGY, tooltip="Moving average period length")
i_AtrLength         = input.int(5, "ATR Length", group=G_STRATEGY, tooltip="ATR period length")
i_TrailStopSource   = input.source(low, "Trail Stop Source", group=G_EXIT, tooltip="Lowest price source for trailing stop")
i_TrailStopLookback = input.int(7, "Trail Stop Lookback", group=G_EXIT, tooltip="How many bars to look back for trailing price source")
i_TrailStopMulti    = input.float(0.2, "Trailing Stop Ratchet Multiplier", group=G_EXIT, tooltip="When momentum is yellow (caution), shrink ATR distance for TS by this much")
i_StartTime         = input(timestamp("01 Jan 2000 13:30 +0000"), "Start Filter", group=G_FILTER, tooltip="Start date & time to begin searching for setups")
i_EndTime           = input(timestamp("1 Jan 2099 19:30 +0000"), "End Filter", group=G_FILTER, tooltip="End date & time to stop searching for setups")

// Define custom security function which does not repaint
RequestSecurity_NonRP(_market, _res, _exp) => request.security(_market, _res, _exp[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1]

// Define date filter check
DateFilter(int start, int end) => time >= start and time <= end

// Get indicator values
float   atrValue    = ta.atr(i_AtrLength)
float   emaValue    = ta.ema(close, i_EmaLength)
float   htfEmaValue = RequestSecurity_NonRP(syminfo.tickerid, i_HigherTimeframe, emaValue)
float   marketPrice = close

// Check for bullishness / bearish volatility caution
bool    isBullish   = marketPrice > htfEmaValue
bool    isCaution   = isBullish and (ta.highest(high, 7) - low > (atrValue * 1.5) or marketPrice < emaValue) 

// Set momentum color
color bgCol = color.red
if isBullish[1]
    bgCol := color.green
if isCaution[1]
    bgCol := color.orange

// Handle strategy entry, and reset trailing stop
var float trailStop = na
if isBullish and strategy.position_size == 0 and not isCaution
    strategy.entry(id="Buy", direction=strategy.long)
    trailStop := na

// Update trailing stop
float temp_trailStop = ta.highest(i_TrailStopSource, i_TrailStopLookback) - (isCaution[1] ? atrValue * i_TrailStopMulti : atrValue)
if strategy.position_size > 0
    if temp_trailStop > trailStop or na(trailStop)
        trailStop := temp_trailStop

// Handle strategy exit
if (close < trailStop or close < htfEmaValue) and barstate.isconfirmed
    strategy.close("Buy", comment="Sell")

// Draw trailing stop, HTF EMA and color-coded momentum indicator
plotshape(true, color=bgCol, style=shape.square, location=location.bottom, size=size.auto, title="Momentum Strength")
plot(htfEmaValue, color=close > htfEmaValue ? color.green : color.red, linewidth=2, title="HTF EMA")
plot(emaValue, color=close > emaValue ? color.green : color.red, linewidth=1, title="CTF EMA")
plot(strategy.position_size[1] > 0 ? trailStop : na, style=plot.style_linebr, color=color.red, title="Stop Loss")

Lebih lanjut