
Strategi penutupan pergerakan Bitcoin adalah strategi jangka panjang yang berasaskan momentum yang bertujuan untuk menangkap trend kenaikan Bitcoin, sambil mengelakkan risiko penurunan dengan menyesuaikan penutupan secara dinamik. Strategi ini menggunakan teknik penutupan pergerakan yang mudah dan cerdik untuk mengetatkan penutupan untuk melindungi margin keuntungan dalam tempoh turun naik yang tinggi, dan melepaskan penutupan untuk membiarkan keuntungan berlari semasa pergerakan bullish yang berterusan.
Strategi ini menggunakan carta garis pusingan dan EMA 20 minggu sebagai penapis trend, dan hanya berlaku apabila harga berada di atas EMA 20 minggu. ATR 5 kitaran digunakan untuk menyesuaikan dinamik untuk mengesan jarak dari hentian, dan menutup hentian dalam keadaan berjaga-jaga.
Sederhana dan berkesan: Logik strategi ini ringkas dan jelas, mudah difahami dan dilaksanakan, dan dapat menangkap trend kenaikan utama Bitcoin dengan berkesan.
Hentian dinamik: Mengubah kedudukan hentian secara dinamik mengikut keadaan turun naik pasaran, yang dapat mengawal penarikan balik dan membolehkan keuntungan berlari, merupakan kaedah hentian yang lebih seimbang dan mantap.
Penapisan trend: Penapisan melalui garis purata peringkat tinggi ((EMA 20 minggu) dan hanya masuk dalam trend menaik yang jelas, meningkatkan kadar kemenangan strategi dan kadar kerugian.
Pengurusan Kedudukan: Perdagangan Kedudukan Penuh secara lalai, membolehkan penggunaan dana maksimum, meningkatkan kecekapan penggunaan dana. Ia juga boleh menyesuaikan saiz kedudukan dengan fleksibel.
Kebolehgunaan yang luas: Logik strategi ini boleh dengan mudah dipindahkan ke piawaian dan pasaran lain, dengan kebolehgunaan yang baik.
Kebolehgunaan parameter: Parameter strategi ini ditetapkan berdasarkan ciri-ciri pasaran bitcoin, kebolehgunaan untuk pasaran lain masih belum disahkan, mungkin memerlukan pengoptimuman parameter untuk standard yang berbeza.
Pengesanan Trend: Strategi ini bergantung kepada penentuan trend dalam indikator teknikal peringkat tinggi seperti EMA dan ATR. Pengesanan trend tidak seperti analisis asas yang menyeluruh, dan ia mudah tersilap pada titik-titik perubahan pasaran.
Risiko Stop Loss: Walaupun Stop Loss Dinamis dapat mengawal risiko ke tahap tertentu, dalam keadaan yang melampau (seperti kejatuhan atau gegaran yang cepat dan mendalam), pengunduran yang lebih besar mungkin berlaku.
Ruang untuk keuntungan: Strategi ini berfungsi dengan baik dalam trend kenaikan satu sisi, tetapi lebih mudah terjebak dalam kesusahan yang kerap di pasaran yang bergolak, ruang untuk keuntungan keseluruhan mungkin terhad.
Kinerja dalam talian: Strategi ini berkinerja baik dalam tinjauan semula, tetapi dalam talian dipengaruhi oleh faktor-faktor seperti slippage, caj, dan lain-lain, dan mungkin terdapat beberapa jurang dengan pendapatan teori, yang perlu dinilai dengan berhati-hati.
Keputusan trend: anda boleh cuba untuk memperkenalkan lebih banyak garis purata peringkat tinggi, indikator kadar turun naik dan bahkan data asas, meningkatkan ketepatan dan kebolehpercayaan pengenalan trend.
Parameter dinamik: Stop loss dan parameter ATR boleh dioptimumkan lebih jauh, memperkenalkan mekanisme penyesuaian dinamik yang berkaitan dengan harga atau kadar turun naik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pengurusan kedudukan: anda boleh menyesuaikan saiz kedudukan secara dinamik mengikut kekuatan trend, kadar turun naik dan lain-lain, meningkatkan kedudukan apabila trend kuat, mengurangkan kedudukan apabila kadar turun naik tinggi, meningkatkan nisbah risiko pendapatan.
Mekanisme banyak ruang: Memperkenalkan mekanisme shorting dalam pasaran beruang, memperluaskan ruang penerapan strategi dan ruang keuntungan yang berpotensi. Tetapi perlu merancang semula peraturan masuk, hentikan kerugian.
Strategi gabungan: menggabungkan strategi ini dengan strategi lain (seperti pembalikan, regresi rata-rata, dan lain-lain) untuk meningkatkan kestabilan dan keuntungan strategi.
Strategi berhenti kehilangan Bitcoin adalah strategi dinamik yang mudah dan berkesan, yang menggunakan garis rata-rata peringkat tinggi dan indikator ATR untuk menangkap trend kenaikan Bitcoin yang kuat, dan mengawal risiko penurunan dengan cara menyesuaikan berhenti secara dinamik. Strategi ini logiknya jelas, mudah dilaksanakan dan dioptimumkan, sesuai untuk pelabur garis menengah yang mencari keuntungan yang mantap. Strategi ini boleh digunakan sebagai templat asas, dan pelabur boleh mengkaji lebih lanjut berdasarkan keperluan dan pengalaman mereka sendiri dalam penilaian trend, pengoptimuman parameter, pengurusan kedudukan, mekanisme kosong, atau menggabungkannya dengan strategi lain untuk mendapatkan nisbah risiko yang lebih tinggi. Tetapi perlu diingat bahawa prestasi strategi di lapangan mungkin berbeza dengan hasil pengukuran semula, dan risiko perlu dinilai dan dikawal dengan berhati-hati.
/*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")