Chiến lược giao dịch theo xu hướng dựa trên động lượng


Ngày tạo: 2024-02-05 10:44:19 sửa đổi lần cuối: 2024-02-05 10:44:19
sao chép: 1 Số nhấp chuột: 678
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo xu hướng dựa trên động lượng

Tổng quan

Chiến lược này là một chiến lược giao dịch động cơ dựa trên công nghệ giao dịch động cơ, sử dụng ATR để dừng lỗ. Chiến lược này được tạo ra bởi Kory Hoang của Stabley.

Chiến lược sử dụng chỉ số động lực để xác định xu hướng, kết hợp với chỉ số ATR để thiết lập đường dừng lỗ, để thực hiện chiến lược giao dịch xung đột mua thấp mua cao.

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

Lần đầu tiên trong mã, chúng tôi đặt phạm vi thời gian của lần phát hiện.

Sau đó là phần chỉ số, tính toán các chỉ số sau:

  • atr ((): tính toán chỉ số ATR để thiết lập dừng lỗ;
  • max/min: Ghi lại giá cao nhất/giá thấp nhất trên một đường K;
  • is_uptrend: Xác định xu hướng tăng;
  • Đường vào: Đường dừng lỗ;

Lý luận chính cho xu hướng này là:

Nếu close cao hơn vstop của đường dừng trước khi giảm, nó được coi là xu hướng tăng; nếu close thấp hơn vstop của đường dừng trước khi tăng, nó được coi là xu hướng giảm.

Điều chỉnh vị trí của đường dừng khi xu hướng thay đổi.

Cụ thể, khi xu hướng tăng, đường dừng được xác định là giá cao nhất trước đường K trừ ATR; khi xu hướng giảm, đường dừng được xác định là giá thấp nhất trước đường K cộng với ATR.

Điều này có thể thực hiện theo dõi xu hướng.

Trong phần quy tắc giao dịch, khi mở vị trí phá vỡ đường dừng lỗ, hãy thực hiện thêm lỗ.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng công nghệ động lực để đánh giá xu hướng, bắt kịp thời điểm biến đổi và tránh phá vỡ giả.
  2. ATR Stop Loss theo dõi giá cao nhất / giá thấp nhất, có thể kiểm soát rủi ro tốt.
  3. Lập luận của chiến lược đơn giản, rõ ràng và dễ hiểu.
  4. Có thể thực hiện giao dịch xung đột giữa các xu hướng.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Việc chọn giá trị ATR không chính xác có thể dẫn đến lỗ hổng quá nhẹ hoặc quá chặt.
  2. Trong khu vực này, có thể xảy ra biến động mạnh trong xu hướng chấn động, gây thiệt hại liên tục.
  3. Có thể có nhiều giao dịch và chi phí cao hơn.

Có thể tối ưu hóa theo các khía cạnh sau:

  1. Thử nghiệm các tham số ATR khác nhau để tìm ra sự kết hợp tối ưu nhất.
  2. Đường dừng tối ưu hóa kết hợp với chỉ số biến động dựa trên ATR.
  3. Trong khi đó, các nhà đầu tư khác cũng có thể sử dụng các công cụ lọc xu hướng để tránh sự biến động của thị trường.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kiểm tra các tham số ATR khác nhau để tìm ra sự kết hợp tối ưu. Có thể kiểm tra lại nhiều tham số để đánh giá tỷ lệ lợi nhuận / rủi ro.

  2. Đường dừng tối ưu hóa kết hợp với chỉ số dao động dựa trên ATR. Các chỉ số dao động có thể được giới thiệu, nới lỏng mức dừng thích hợp khi dao động tăng lên.

  3. Kết hợp với bộ lọc xu hướng, bạn có thể tăng các chỉ số đánh giá xu hướng và chỉ đặt vị trí khi xu hướng rõ ràng.

  4. Tăng cơ chế quản lý vị trí. Bạn có thể điều chỉnh vị trí tùy theo tỷ lệ sử dụng vốn, số lần dừng lỗ liên tục.

  5. Tăng khả năng kiểm soát rủi ro giữa đêm. Có thể chủ động dừng lỗ trước khi đóng cửa, tránh giá qua đêm tăng vọt.

Tóm tắt

Chiến lược này được sử dụng như một chiến lược giao dịch xung đột trong ngày cơ bản, tư duy tổng thể rõ ràng, sử dụng động lực kỹ thuật để đánh giá xu hướng và sử dụng chỉ số ATR để theo dõi điểm dừng lỗ, có thể kiểm soát rủi ro hiệu quả.

Có rất nhiều không gian để tối ưu hóa, có thể cải thiện từ nhiều khía cạnh như đánh giá xu hướng, cách dừng lỗ và quản lý vị trí, để làm cho chiến lược phù hợp hơn với giao dịch thực. Nhìn chung, chiến lược này cung cấp một khuôn khổ cơ bản tốt cho giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
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 ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES