Dựa trên chiến lược dừng lỗ động


Ngày tạo: 2024-02-27 15:02:34 sửa đổi lần cuối: 2024-02-27 15:02:34
sao chép: 0 Số nhấp chuột: 622
1
tập trung vào
1621
Người theo dõi

Dựa trên chiến lược dừng lỗ động

Tổng quan

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.

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

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:

  • Giá thấp nhất của một dòng K gần nhất thấp hơn giá dừng theo dõi của một dòng K trước đó và giá thấp nhất của một dòng K trên cùng cao hơn giá dừng theo dõi của hai dòng K trên cùng, giá dừng theo dõi của dòng K hiện tại = giá đóng cửa + khoảng cách dừng theo dõi trống
  • Giá cao nhất của một dòng K gần nhất cao hơn giá dừng theo dõi của một dòng K trước đó và giá cao nhất của một dòng K trên cùng thấp hơn giá dừng theo dõi của hai dòng K trên cùng, giá dừng theo dõi của dòng K hiện tại = giá đóng cửa - khoảng cách dừng theo dõi đa đầu
  • Giá cao nhất của một dòng K gần nhất cao hơn giá dừng theo dõi của một dòng K trước đó, giá dừng theo dõi của dòng K hiện tại = giá cao nhất ((giá dừng theo dõi của dòng K trước, giá cao nhất của một dòng K gần nhất - Khoảng cách dừng theo dõi của vị trí dài)
  • Giá thấp nhất của một dòng K gần nhất thấp hơn giá dừng theo dõi của một dòng K trước đó, giá dừng theo dõi của dòng K hiện tại = giá tối thiểu ((giá dừng theo dõi của dòng K trước, giá thấp nhất của một dòng K gần nhất + khoảng cách dừng theo dõi của vị trí ngắn)
  • Nếu không, giá dừng theo dõi của dòng K hiện tại = giá đóng cửa

Đ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.

Phân tích lợi thế

Ư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ó.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. 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.

  2. 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.

  3. 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.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Tóm tắt

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ỏ.

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