
Chiến lược này được thiết kế để sử dụng tính năng theo dõi dừng lỗ của nền tảng Bitmestra, điều chỉnh giá dừng lỗ động, để có được dừng lỗ chính xác và linh hoạt hơn. Chiến lược không được sử dụng để vào và ra khỏi thị trường, nhưng cung cấp phạm vi dừng lỗ hợp lý trong các điều kiện thị trường khác nhau.
Chiến lược này sử dụng 3 chỉ số chính: giá cao nhất, giá thấp nhất và giá đóng cửa. Chiến lược này đầu tiên xác định phạm vi dừng cho các vị trí dài và ngắn, tức là theo dõi khoảng cách dừng nhiều đầulongoffsetvà khoảng cách dừng theo dõi không đầushortoffsetTrong đó, khoảng cách mặc định của vị trí dài là 228,5 điểm, khoảng cách mặc định của vị trí ngắn là 243,5 điểm.
Chiến lược sau đó sử dụng các điều chỉnh logic sau đây để theo dõi giá dừng lỗtrailstop:
Điều này có thể theo dõi giá dừng lỗ theo sự thay đổi của giá cao nhất và giá thấp nhất trên thị trường, điều chỉnh theo thời gian thực và thực hiện dừng lỗ động.
Ưu điểm lớn nhất của chiến lược này là thực hiện theo dõi dừng chân động và linh hoạt. So với giá dừng cố định, theo dõi động có thể điều chỉnh phạm vi dừng chân theo biến động của thị trường, tránh mất mát không cần thiết từ khoảng dừng quá lớn và tránh bị ảnh hưởng bởi biến động giá bình thường từ khoảng dừng chân quá nhỏ. Điều này làm giảm cả tổn thất không cần thiết và giảm khả năng dừng lỗ quá sớm.
Một lợi thế khác là khoảng cách dừng lỗ có thể được tùy chỉnh và tối ưu hóa. Người dùng có thể chọn phạm vi dừng lỗ phù hợp với mình dựa trên các đặc điểm và phong cách giao dịch của các giống khác nhau. Điều này làm cho chiến lược có thể được áp dụng cho nhiều tình huống hơn.
Cuối cùng, logic dừng lỗ của chiến lược này đơn giản, rõ ràng, dễ hiểu và dễ dàng phát triển và tích hợp vào các chiến lược khác, đây cũng là một trong những ưu điểm của nó.
Những rủi ro chính của chiến lược này là:
Hạn chế động lực chỉ có thể làm giảm tổn thất trong điều kiện bình thường, không thể chống lại sự cố bất ngờ lớn hoặc tổn thất do điều kiện cực đoan. Đây là giới hạn của chính Hạn chế động lực.
Nếu thiết lập khoảng cách dừng theo dõi quá lớn, nó có thể dẫn đến sự mất mát mở rộng. Nếu khoảng cách quá nhỏ, nó có thể dừng quá sớm. Việc thiết lập khoảng cách cần được thử nghiệm và tối ưu hóa cẩn thận theo đặc điểm của giống.
Trong một vài dòng K sau khi mở vị trí, khoảng cách dừng có thể quá lớn do theo dõi cơ chế dừng lỗ, trong thời gian này có một số rủi ro bổ sung.
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Tối ưu hóa các tham số khác nhau: tùy thuộc vào các chỉ số như độ dao động của các giống khác nhau, phạm vi dao động trong ngày, chọn khoảng cách dừng theo dõi nhiều đầu và đầu trống hợp lý. Đây là hướng tối ưu hóa quan trọng nhất.
Giảm rủi ro bổ sung của một vài dòng K sau khi mở vị trí: Có thể giới hạn độ điều chỉnh theo dõi khoảng cách dừng lỗ trên một số dòng K sau khi mở vị trí, tránh khoảng cách dừng lỗ quá lớn.
Kết hợp với chỉ số khối lượng giao dịch: Giảm khoảng cách dừng lỗ trong giai đoạn khối lượng giao dịch lớn hơn, tránh dừng lỗ bị mạo hiểm.
Kết hợp với các chiến lược nhập cảnh và xuất cảnh khác: vai trò chính của chiến lược này là theo dõi dừng lỗ, có thể được tích hợp vào các chiến lược khác và được sử dụng cùng với các quy tắc nhập cảnh và xuất cảnh.
Chiến lược này thực hiện chức năng dừng chân theo dõi động dựa trên sự thay đổi của giá cao nhất và giá thấp nhất. Điều này có thể làm giảm hiệu quả tổn thất không cần thiết trong điều kiện bình thường, cũng giải quyết tốt hơn các vấn đề về khoảng cách dừng cố định quá lớn quá nhỏ.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//By River
strategy("BitMex Trailing Stop Strategy", overlay=true)
longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5)
shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5)
hiprice = request.security(syminfo.tickerid, "1", high)
loprice = request.security(syminfo.tickerid, "1", low)
price = request.security(syminfo.tickerid, "1", close)
trailstop = price
trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price)))
trailcol = trailstop > price ? red : green
plot(trailstop, color=trailcol)
longCondition = trailcol == green
alertcondition(longCondition, "Long Stop alert", "BUY")
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trailcol == red
alertcondition(shortCondition, "Short alert", "SELL")
if (shortCondition)
strategy.entry("Short", strategy.short)