Chiến lược dừng lỗ động


Ngày tạo: 2024-01-31 15:05:30 sửa đổi lần cuối: 2024-01-31 15:05:30
sao chép: 0 Số nhấp chuột: 655
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ động

Tổng quan

Chiến lược này dựa trên cơ chế dừng lỗ theo dõi tính toán động, thiết lập đường dừng lỗ cho vị trí dài và ngắn dựa trên giá cao nhất và giá thấp nhất của giá cổ phiếu. Khi giá chạm đường dừng lỗ, bán vị trí hiện tại và mở vị trí mới theo hướng ngược lại. Chiến lược đơn giản, dễ hiểu, có thể kiểm soát rủi ro một cách hiệu quả.

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

Chiến lược này được thực hiện thông qua các bước sau:

  1. Các tham số đầu vào: chọn làm thêm hoặc làm trống, tính độ dài chu kỳ, thiết lập điểm trượt của trailing stop
  2. Tính giá cao nhất và thấp nhất: Tính giá cao nhất và thấp nhất trong chu kỳ dựa trên độ dài đầu vào
  3. Tính toán đường dừng theo dõi: khi thực hiện quá nhiều, giá thấp nhất trừ điểm trượt làm đường dừng; khi thực hiện quá nhiều, giá cao nhất cộng điểm trượt làm đường dừng
  4. Mở vị trí hòa bình: Khi giá chạm đường dừng lỗ, mở vị trí trong hướng hiện tại và mở vị trí mới theo hướng ngược lại

Đây là logic cơ bản của chiến lược. Dòng dừng sẽ được cập nhật liên tục khi giá hoạt động, do đó có thể theo dõi động. Bằng cách theo dõi phương pháp dừng này, bạn có thể kiểm soát hiệu quả tổn thất đơn lẻ.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Chiến lược đơn giản, rõ ràng, dễ hiểu và thực hiện
  2. Ứng dụng động theo dõi mất mát, có thể kiểm soát hiệu quả mất mát đơn
  3. Có khả năng lựa chọn linh hoạt cho nhiều hoặc không, phù hợp với các môi trường thị trường khác nhau
  4. Chu kỳ tính toán và điểm trượt có thể tùy chỉnh để tối ưu hóa

Nhìn chung, chiến lược này có thể quản lý các vị trí hiệu quả thông qua một cơ chế dừng lỗ theo dõi đơn giản, một chiến lược quản lý rủi ro điển hình.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro cần lưu ý:

  1. Khi giá biến động lớn, đường dừng có thể được kích hoạt thường xuyên, dẫn đến giao dịch quá thường xuyên
  2. Tính không hợp lý về chu kỳ tính giá cao nhất và thấp nhất có thể dẫn đến đường dừng không phù hợp
  3. Điểm trượt được thiết lập quá lớn, có thể dẫn đến dây dừng quá mỏng, không thể dừng trượt kịp thời

Những rủi ro này có thể được tối ưu hóa bằng cách điều chỉnh chu kỳ tính toán, giảm độ rộng điểm trượt thích hợp, và các phương pháp khác để thiết lập đường dừng lỗ hợp lý hơn.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thêm cơ chế tối ưu hóa dây dừng để nó có thể được điều chỉnh động để tránh dây dừng quá nới lỏng hoặc quá chặt
  2. Tăng khả năng đánh giá điều kiện mở vị trí, tránh mở các vị trí vào thời điểm không phù hợp
  3. Kết hợp các chỉ số xu hướng, theo dõi xu hướng để tạo ra nhiều lợi nhuận hơn
  4. Thêm mô-đun quản lý vị trí, điều chỉnh vị trí động thông qua xếp hạng rủi ro

Tóm tắt

Chiến lược giao dịch này thực hiện việc quản lý động của các vị trí thông qua phương pháp dừng lỗ theo dõi đơn giản. Chiến lược này dễ hiểu và thực hiện, có thể kiểm soát hiệu quả tổn thất đơn lẻ. Chúng tôi phân tích lợi thế của chiến lược, rủi ro có thể và hướng tối ưu hóa tiếp theo. Nói chung, đây là một chiến lược quản lý rủi ro rất điển hình và thực tế.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's Trailing-Stop Strategy", shorttitle = "Trailing", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
length = input(20, minval = 1)
shift = input(0.0, minval = 0, title = "Trailing Stop")
background = input(false)

//Levels
max = highest(high, length)
min = lowest(low, length)

//Trailing
size = strategy.position_size
longtrailing = 0.0
shorttrailing = 0.0
longtrailing := size <= 0 ? min - ((min / 100) * shift) : max(min - ((min / 100) * shift), longtrailing[1])
shorttrailing := size >= 0 ? max + ((max / 100) * shift) : min(max + ((max / 100) * shift), shorttrailing[1])
trailing = size <= 0 ? shorttrailing : longtrailing
col = size == size[1] ? size > 0 ? color.red : color.lime : na
plot(trailing, color = col, linewidth = 2, transp = 0)

//Background
bgcol = background ? size > 0 ? color.lime : color.red : na
bgcolor(bgcol, transp = 80)

if trailing > 0 and size <= 0
    strategy.entry("Long", strategy.long, needlong ? na : 0, stop = trailing)
if trailing > 0 and size >= 0
    strategy.entry("Short", strategy.short, needshort ? na : 0, stop = trailing)