Strategi Trailing Stop Momentum Bitcoin


Tanggal Pembuatan: 2024-03-08 16:20:16 Akhirnya memodifikasi: 2024-03-08 16:20:16
menyalin: 0 Jumlah klik: 747
1
fokus pada
1617
Pengikut

Strategi Trailing Stop Momentum Bitcoin

Tinjauan Strategi

Strategi stop loss yang mengikuti pergerakan bitcoin adalah strategi posisi panjang yang didasarkan pada momentum yang dirancang untuk menangkap tren naik bitcoin dan menghindari risiko turun dengan menyesuaikan stop loss secara dinamis. Strategi ini menggunakan teknik stop loss yang mengikuti dinamika yang sederhana dan cerdik untuk memperketat stop loss untuk melindungi margin profit selama periode fluktuasi yang sangat turun, dan untuk melepaskan stop loss selama momentum bullish yang berkelanjutan.

Prinsip Strategi

  1. Harga Bitcoin saat ini harus lebih tinggi dari EMA pada kerangka waktu tingkat tinggi (EMA 20 minggu)
  2. Bitcoin tidak dapat berada dalam keadaan “berjaga-jaga”, yaitu bitcoin yang baru-baru ini naik minus harga terendah pada garis K saat ini lebih dari 1,5 kali ATR, atau harga penutupan hari di bawah 20 EMA hari itu.
  3. Stop loss ditetapkan sebagai puncak gelombang terbaru dikurangi 1 ATR, jika dalam keadaan waspada, dikurangi 20% dari ATR (yaitu 0,2 ATR)
  4. Ketika harga ditutup di bawah harga stop loss, buka posisi terbuka pada K-line berikutnya

Strategi ini menggunakan grafik garis putar dan 20 minggu EMA sebagai filter tren, hanya masuk ketika harga lebih tinggi dari 20 minggu EMA. 5 siklus ATR digunakan untuk menyesuaikan dinamika untuk melacak jarak dari stop loss, dan pada keadaan waspada akan memperketat stop loss. Keadaan waspada didefinisikan oleh dua kondisi: jarak dari puncak gelombang baru-baru ini ke harga terendah saat ini lebih dari 1,5 kali ATR, atau harga penutupan hari di bawah 20 EMA hari itu.

Keunggulan Strategis

  1. Sederhana dan efektif: Logika strategi ini sederhana dan jelas, mudah dipahami dan diterapkan, dan mampu secara efektif menangkap tren kenaikan utama Bitcoin.

  2. Stop loss dinamis: Stop loss yang dapat diatur secara dinamis sesuai dengan kondisi pasar yang bergejolak, dapat mengontrol pengunduran diri dan memungkinkan keuntungan untuk berlari, merupakan metode stop loss yang lebih seimbang dan stabil.

  3. Filter tren: dengan penyaringan rata-rata tingkat tinggi (EMA 20 minggu), masuk hanya dalam tren naik yang jelas, meningkatkan rasio kemenangan dan kerugian strategi.

  4. Manajemen posisi: Default trading full position, memungkinkan penggunaan dana yang maksimal dan meningkatkan efisiensi penggunaan dana. Selain itu, ukuran posisi dapat disesuaikan secara fleksibel.

  5. Terapan luas: logika strategi dapat dengan mudah dipindahkan ke standar lain dan pasar, dengan universalitas yang baik.

Risiko Strategis

  1. Kelayakan parameter: Parameter strategi ini diatur berdasarkan karakteristik pasar Bitcoin, kelayakan untuk pasar lain masih harus diverifikasi, mungkin perlu mengoptimalkan parameter untuk standar yang berbeda.

  2. Identifikasi tren: Strategi ini terutama bergantung pada indikator teknis tingkat tinggi seperti EMA dan ATR untuk menilai tren. Pengetahuan tentang tren tidak sama dengan analisis fundamental yang komprehensif, dan kesalahan dapat terjadi pada titik-titik perubahan pasar.

  3. Risiko Stop Loss: Meskipun stop loss dinamis dapat mengendalikan risiko sampai batas tertentu, dalam situasi ekstrem (seperti penurunan tajam atau getaran cepat dan mendalam), kemungkinan akan ada penarikan yang lebih besar. Dan titik stop loss lebih dekat, dan mungkin sering berhenti dalam situasi getaran.

  4. Ruang untuk keuntungan: Strategi ini bekerja dengan baik dalam tren bullish unilateral, tetapi lebih mudah terjebak dalam kesulitan sering berhenti di pasar yang bergoyang, dan ruang untuk keuntungan keseluruhan mungkin terbatas.

  5. Kinerja real-time: Strategi ini berkinerja baik dalam pengujian ulang, tetapi real-time dipengaruhi oleh faktor-faktor seperti slippage, biaya, dan mungkin ada beberapa perbedaan dengan keuntungan teoretis, yang perlu dievaluasi dengan hati-hati.

Arah optimasi

  1. Pengertian tren: Anda dapat mencoba memasukkan lebih banyak rata-rata tingkat tinggi, indikator volatilitas, dan bahkan data dasar untuk meningkatkan akurasi dan keandalan identifikasi tren.

  2. Parameter Dinamis: Stop loss dan parameter ATR dapat dioptimalkan lebih lanjut, memperkenalkan mekanisme penyesuaian dinamis yang terkait dengan harga atau volatilitas, untuk menyesuaikan dengan kondisi pasar yang berbeda.

  3. Manajemen posisi: Anda dapat secara dinamis menyesuaikan ukuran posisi berdasarkan indikator seperti kekuatan tren, volatilitas, dan lain-lain, meningkatkan posisi saat tren kuat, mengurangi posisi saat volatilitas tinggi, dan meningkatkan rasio risiko laba.

  4. Mekanisme over-the-counter: Memperkenalkan mekanisme over-the-counter di pasar beruang, memperluas ruang lingkup dan potensi keuntungan dari strategi tersebut. Namun, perlu mendesain ulang aturan masuk, berhenti, dan sebagainya.

  5. Strategi kombinasi: strategi ini dikombinasikan dengan strategi lain (seperti reversal, regresi rata-rata, dll) untuk meningkatkan stabilitas dan profitabilitas strategi.

Ringkasan Strategi

Strategi Stop Loss Tracking Bitcoin adalah strategi dinamis yang sederhana dan efektif, yang menggunakan rata-rata tingkat tinggi dan indikator ATR untuk menangkap tren naik yang kuat dalam Bitcoin dan mengendalikan risiko penurunan dengan cara menyesuaikan stop loss secara dinamis. Strategi ini logisnya jelas, mudah diimplementasikan dan dioptimalkan, dan cocok untuk investor garis menengah yang mencari keuntungan yang stabil. Strategi ini dapat digunakan sebagai template dasar, dan investor dapat meningkatkannya berdasarkan kebutuhan dan pengalaman mereka sendiri, dalam hal penilaian tren, optimasi parameter, manajemen posisi, mekanisme over-the-counter, dll., Atau dikombinasikan dengan strategi lain untuk mendapatkan rasio risiko-pengembalian yang lebih tinggi. Namun, perlu dicatat bahwa kinerja strategi di dunia nyata mungkin berbeda dari hasil pengembalian, dan risiko perlu dievaluasi dan dikendalikan dengan hati-hati.

Kode Sumber Strategi
/*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")