Chiến lược này sử dụng điểm dừng lỗ động để giao dịch. Điểm dừng lỗ được điều chỉnh theo giá hiện tại và tỷ lệ biến động trong thời gian thực.
Logic giao dịch:
Tính trung bình biến động thực tế ATR trong một chu kỳ nhất định (ví dụ: 20 ngày)
Khi ở trạng thái bullish, điểm dừng lỗ là giá cao nhất trừ ATR
Khi ở trạng thái giảm giá, điểm dừng lỗ là giá thấp nhất cộng với ATR nhân
Giao dịch ngược khi giá vượt quá điểm dừng lỗ
Thay đổi trạng thái xu hướng khi giá vượt qua điểm dừng lỗ
Chuyển đổi điểm dừng lỗ theo trạng thái mới
Chiến lược này tận dụng ATR để tự động thiết lập vị trí dừng lỗ và theo dõi động. Nó có thể khóa lợi nhuận kịp thời và tránh tổn thất mở rộng.
ATR tự động tính điểm dừng lỗ
Động thái điều chỉnh, theo dõi giá trong thời gian thực
Ngăn chặn thiệt hại, kiểm soát rủi ro
Các tham số ATR cần được kiểm tra và tối ưu hóa nhiều lần
Dừng quá gần, dễ bị dừng
Cần chú ý đến sự thay đổi thời gian thực của ATR
Chiến lược này sử dụng ATR để thiết lập động điểm dừng để theo dõi tự động. Các tham số ATR được tối ưu hóa có thể có hiệu quả dừng tốt hơn. Tuy nhiên, việc dừng quá gần cần được thận trọng.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Dhananjay Volatility stop strategy v1.0", overlay=true)
length = input(20)
mult = input(1)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2)
bearish = close < vstop
bullish = close > vstop
if (bullish)
strategy.entry("Buy", strategy.long, 1)
if (bearish)
strategy.entry("Sell", strategy.short, 1)