Chiến lược dừng lỗ và dừng lãi động ATR


Ngày tạo: 2023-09-14 16:22:53 sửa đổi lần cuối: 2023-09-14 16:22:53
sao chép: 0 Số nhấp chuột: 904
1
tập trung vào
1617
Người theo dõi

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

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:

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

  2. Khi ở trạng thái bullish, điểm dừng lỗ là giá cao nhất trừ ATR

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

  4. Giao dịch ngược khi giá vượt quá điểm dừng lỗ

  5. Thay đổi trạng thái xu hướng khi giá vượt qua điểm dừng lỗ

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

Lợi thế chiến lược

  • 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

Rủi ro chiến lược

  • 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

Tóm tắt

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.

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