Chiến lược dừng lỗ theo đà Bitcoin


Ngày tạo: 2024-03-08 16:20:16 sửa đổi lần cuối: 2024-03-08 16:20:16
sao chép: 0 Số nhấp chuột: 747
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ theo đà Bitcoin

Tổng quan về chiến lược

Chiến lược dừng chân theo động lực của bitcoin là một chiến lược dài hạn dựa trên động lực nhằm nắm bắt xu hướng tăng của bitcoin và tránh rủi ro giảm bằng cách điều chỉnh động lực bằng cách điều chỉnh động lực. Chiến lược này sử dụng kỹ thuật dừng chân theo động lực đơn giản và khéo léo, thu hẹp lỗ hổng để bảo vệ lợi nhuận trong thời gian biến động mạnh, trong khi mở rộng lỗ hổng để lợi nhuận chạy.

Nguyên tắc chiến lược

  1. Giá hiện tại của Bitcoin phải cao hơn EMA của khung thời gian cấp cao (EMA 20 tuần)
  2. Bitcoin không thể ở trong trạng thái “thận thức”, tức là đỉnh gần đây của Bitcoin trừ ATR lớn hơn 1,5 lần giá thấp nhất của dòng K hiện tại, hoặc giá đóng cửa dưới 20 EMA trong ngày
  3. Cài đặt dừng lỗ là đỉnh sóng gần đây trừ 1 ATR, trừ 20% ATR nếu ở trạng thái cảnh báo (tức là 0,2 ATR)
  4. Khi giá đóng cửa dưới giá dừng lỗ, mở lỗ hẹp trên đường K tiếp theo

Chiến lược này sử dụng biểu đồ đường tròn và EMA 20 tuần làm bộ lọc xu hướng, chỉ tham gia khi giá cao hơn EMA 20 tuần. ATR 5 chu kỳ được sử dụng để điều chỉnh động theo dõi khoảng cách dừng lỗ, trong tình trạng cảnh báo sẽ thu hẹp lỗ.

Lợi thế chiến lược

  1. Đơn giản và hiệu quả: logic của chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện, đồng thời có thể nắm bắt hiệu quả xu hướng tăng trưởng chính của Bitcoin.

  2. Hạn chế động lực: Điều chỉnh động vị trí dừng lỗ theo tình trạng biến động của thị trường, có thể kiểm soát rút lui và cho phép lợi nhuận chạy, là một phương pháp dừng lỗ cân bằng và vững chắc hơn.

  3. Trình lọc xu hướng: Chuyển qua bộ lọc đường trung bình cấp cao ((EMA 20 tuần), chỉ tham gia vào xu hướng tăng rõ ràng, làm tăng đáng kể tỷ lệ chiến lược và tỷ lệ thua lỗ.

  4. Quản lý vị trí: giao dịch toàn vị trí theo mặc định, có thể sử dụng tối đa vốn, tăng hiệu quả sử dụng vốn. Ngoài ra, bạn cũng có thể điều chỉnh kích thước vị trí một cách linh hoạt.

  5. Khả năng áp dụng rộng rãi: logic chiến lược này có thể dễ dàng chuyển sang các tiêu chuẩn khác và thị trường, có tính phổ biến tốt.

Rủi ro chiến lược

  1. Khả năng áp dụng các tham số: Các tham số của chiến lược này được thiết lập dựa trên các đặc điểm của thị trường Bitcoin, khả năng áp dụng cho các thị trường khác đang được xác minh và có thể cần tối ưu hóa các tham số cho các tiêu chuẩn khác nhau.

  2. Nhận biết xu hướng: Chiến lược này chủ yếu dựa trên các chỉ số kỹ thuật cấp cao như EMA và ATR để đánh giá xu hướng, nắm bắt các tình huống thị trường không toàn diện như phân tích cơ bản, dễ bị lỗi tại các điểm biến đổi thị trường.

  3. Rủi ro dừng lỗ: Mặc dù dừng động có thể kiểm soát rủi ro ở một mức độ nhất định, nhưng trong các tình huống cực đoan (như giảm mạnh hoặc rung chuyển nhanh chóng và sâu) vẫn có thể có sự rút lui lớn.

  4. Không gian lợi nhuận: Chiến lược này hoạt động tốt trong xu hướng tăng một bên, nhưng trong thị trường biến động dễ bị mắc kẹt trong tình trạng dừng lỗ thường xuyên, và không gian lợi nhuận tổng thể có thể bị hạn chế.

  5. Hiệu suất thực tế: Chiến lược này hoạt động tốt trong đánh giá lại, nhưng thực tế bị ảnh hưởng bởi các yếu tố như điểm trượt, phí xử lý, có thể có một khoảng cách với thu nhập lý thuyết, cần được đánh giá thận trọng.

Hướng tối ưu hóa

  1. Xác định xu hướng: Bạn có thể thử giới thiệu nhiều đường trung bình cấp cao hơn, chỉ số biến động và thậm chí dữ liệu cơ bản hơn để tăng độ chính xác và độ tin cậy của việc xác định xu hướng.

  2. Các tham số động: Các tham số dừng lỗ và ATR có thể được tối ưu hóa hơn nữa, đưa ra các cơ chế điều chỉnh động liên quan đến giá hoặc tỷ lệ biến động để thích ứng với các tình trạng thị trường khác nhau.

  3. Quản lý vị trí: có thể điều chỉnh kích thước vị trí theo xu hướng, tăng vị trí khi xu hướng mạnh, giảm vị trí khi có biến động cao, tăng tỷ lệ rủi ro lợi nhuận.

  4. Cơ chế đa không gian: Trong thị trường gấu, giới thiệu cơ chế thực hiện không gian, mở rộng phạm vi áp dụng chiến lược và không gian lợi nhuận tiềm năng. Tuy nhiên, cần thiết phải thiết kế lại các quy tắc nhập cảnh, dừng lỗ.

  5. Chiến lược kết hợp: kết hợp chiến lược này với các chiến lược khác (như đảo ngược, quay trở lại mức trung bình, v.v.) để có lợi thế bổ sung cho nhau, tăng sự ổn định và lợi nhuận của chiến lược.

Tóm tắt chiến lược

Chiến lược dừng lỗ theo dõi động lực của Bitcoin là một chiến lược động lực đơn giản và hiệu quả, sử dụng đường trung bình cấp cao và chỉ số ATR để nắm bắt xu hướng tăng mạnh của Bitcoin và kiểm soát rủi ro giảm giá bằng cách điều chỉnh động lệnh dừng lỗ. Chiến lược này có logic rõ ràng, dễ thực hiện và tối ưu hóa, phù hợp cho các nhà đầu tư trung bình theo đuổi lợi nhuận ổn định. Chiến lược này có thể được sử dụng như một mẫu cơ bản, các nhà đầu tư có thể hoàn thiện hơn về định hướng, tối ưu hóa tham số, quản lý vị trí, cơ chế đa chỗ trống, hoặc kết hợp với các chiến lược khác để có được tỷ lệ rủi ro lợi nhuận cao hơn. Tuy nhiên, cần lưu ý rằng chiến lược này có thể có sự khác biệt trong thực tế với kết quả đo lường, cần đánh giá và kiểm soát rủi ro một cách cẩn thận.

Mã nguồn chiến lược
/*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")