
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ả.
Chiến lược này được thực hiện thông qua các bước sau:
Đâ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ẻ.
Chiến lược này có một số ưu điểm:
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.
Chiến lược này cũng có một số rủi ro cần lưu ý:
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.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
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ế.
/*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)