Chiến lược Stop Loss theo gradient điều chỉnh động đường dừng lỗ để cân bằng kiểm soát rủi ro và lấy lợi nhuận. Nó sử dụng phạm vi trung bình thực sự (ATR) để tính toán đường dừng lỗ và theo dõi hiệu quả xu hướng giá, bảo vệ lợi nhuận trong khi giảm dừng không cần thiết. Chiến lược này hoạt động tốt cho cổ phiếu có xu hướng mạnh và có thể tạo ra lợi nhuận ổn định.
Chiến lược này sử dụng phạm vi trung bình thực sự (ATR) làm cơ sở cho việc dừng lỗ năng động. ATR phản ánh hiệu quả sự biến động của một cổ phiếu. Chiến lược đầu tiên lấy khoảng thời gian ATR làm đầu vào, thường là 10 ngày. Sau đó, giá trị ATR được tính toán. Khi giá tăng, đường dừng lỗ cũng di chuyển lên để theo dõi giá. Khi giá giảm, đường dừng lỗ vẫn không thay đổi để khóa lợi nhuận. Ngoài ra, chiến lược cho phép tinh chỉnh khoảng cách dừng lỗ từ giá bằng cách sử dụng tham số
Cụ thể, chiến lược tính toán ATR hiện tại, sau đó nhân nó bằng
Chiến lược dừng lỗ theo dõi dốc cân bằng hiệu quả rủi ro và lợi nhuận bằng cách điều chỉnh năng động khoảng cách dừng lỗ. Với logic đơn giản và khả năng cấu hình cao, nó phù hợp với giao dịch thuật toán. Việc điều chỉnh tham số và kết hợp chỉ số phù hợp vẫn dựa trên chuyên môn của con người.
/*backtest start: 2023-10-17 00:00:00 end: 2023-10-24 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15) // 백테스팅 시작일과 종료일 입력 startYear = input(2020, title="Start Year") startMonth = input(1, title="Start Month") startDay = input(1, title="Start Day") endYear = input(9999, title="End Year") endMonth = input(12, title="End Month") endDay = input(31, title="End Day") // 백테스팅 시간 범위 확인 backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) var bool longCondition = false var bool shortCondition = false if backtestingTimeBool prevDirection = direction[1] if direction < 0 longCondition := false shortCondition := true else if direction > 0 longCondition := true shortCondition := false if longCondition strategy.entry("My Long Entry Id", strategy.long) if shortCondition strategy.entry("My Short Entry Id", strategy.short) plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)