Tài nguyên đang được tải lên... tải...

Mục tiêu lợi nhuận động của ATR và chiến lược dừng lỗ

Tác giả:ChaoZhang, Ngày: 2023-09-14 16:22:53
Tags:

Chiến lược logic

Chiến lược này sử dụng mục tiêu lợi nhuận năng động và dừng lỗ điều chỉnh dựa trên giá và biến động hiện tại.

Lý do là:

  1. Tính toán phạm vi trung bình thực tế (ATR) trong một khoảng thời gian (ví dụ: 20 ngày)

  2. Trong xu hướng tăng, mục tiêu lợi nhuận / dừng là giá cao nhất trừ ATR nhân

  3. Trong xu hướng giảm, mục tiêu lợi nhuận / dừng là giá thấp nhất cộng với số lần ATR

  4. Giao dịch ngược khi giá vượt quá mục tiêu lợi nhuận / dừng

  5. Xu hướng thay đổi khi giá vượt quá mục tiêu lợi nhuận / dừng

  6. Điều chỉnh mục tiêu lợi nhuận / dừng dựa trên tình trạng xu hướng mới

Chiến lược này tận dụng ATR để tự động thiết lập mục tiêu lợi nhuận và dừng lại động. Điều này cho phép khóa lợi nhuận kịp thời và ngăn ngừa tổn thất quá mức.

Ưu điểm

  • ATR tự động tính mức lợi nhuận/đừng hoạt động

  • Đường dẫn điều chỉnh động giá trong thời gian thực

  • Kiểm soát rủi ro thu lợi nhuận kịp thời và ngừng hoạt động

Rủi ro

  • Các thông số ATR cần tối ưu hóa

  • Dừng quá gần có nguy cơ bị dừng lại

  • Cần theo dõi thời gian thực thay đổi ATR

Tóm lại

Chiến lược này sử dụng ATR để thiết lập động mức lợi nhuận / dừng cho việc theo dõi tự độ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)
    
    

Thêm nữa