Chiến lược theo xu hướng sử dụng chỉ báo động lượng giá


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

Chiến lược theo xu hướng sử dụng chỉ báo động lượng giá

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng được thực hiện bằng cách sử dụng chỉ số động lực giá. Nó đánh giá xu hướng thị trường bằng cách tính toán sự thay đổi giá đóng cửa trong một chu kỳ nhất định, và thực hiện các hoạt động mua hoặc bán tương ứng khi giá có xu hướng tăng hoặc giảm liên tục.

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

Chỉ số cốt lõi của chiến lược này là động lực của giá. Công thức tính động lực là:

momentum = close - close[n]

Trong đó, n đại diện cho độ dài của chu kỳ động lượng. Khi momentum > 0, giá đã tăng trong chu kỳ hiện tại; Khi momentum < 0, giá đã giảm trong chu kỳ hiện tại.

Chiến lược này trước tiên đặt một tham số confirmBars, đại diện cho sự phán đoán xu hướng cần có một số đường K để thực hiện giao dịch. Trong phạm vi đo đạc, nếu momentum > 0 tiếp tục đường gốc K của confirmBars, thì sẽ được nhập nhiều hơn; Nếu momentum < 0 tiếp tục đường gốc K của confirmBars, thì sẽ được nhập trống.

Chìa khóa của chiến lược này để đánh giá xu hướng là tính toán số lượng dòng K liên tục lớn hơn hoặc nhỏ hơn 0 trong thời gian, thông qua các biến bcount và scount. Chúng trở thành +1 khi điều kiện tương ứng được đáp ứng và 0 khi không đáp ứng. Khi số liệu đạt đến confirmBars, thực hiện giao dịch mua hoặc bán.

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

Đây là một chiến lược theo dõi xu hướng đơn giản, có những lợi thế sau:

  1. Logic đơn giản, dễ hiểu
  2. Chỉ số động lực nhạy cảm với sự thay đổi giá, có thể nhanh chóng nắm bắt xu hướng
  3. Các tham số có thể điều chỉnh độ nhạy của phán đoán
  4. Có thể sử dụng trong nhiều môi trường thị trường

Rủi ro chiến lược

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

  1. Có thể gây ra nhiều giao dịch chấn động và giao dịch quá mức
  2. Các tham số cần được cấu hình hợp lý, đặc biệt là confirmBars lọc rung
  3. Không có khả năng đối phó hiệu quả với các sự kiện bất ngờ trên thị trường
  4. Phản hồi có thể khác với ổ cứng, cần kiểm tra dữ liệu và tối ưu hóa tham số bổ sung

Hướng tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tăng logic dừng lỗ, kiểm soát rủi ro giao dịch một lần
  2. Tăng bộ lọc phá vỡ để tránh các tín hiệu giả gây ra bởi biến động giá
  3. Điều chỉnh các tham số như ConfirmBars cho các giống và môi trường thị trường khác nhau
  4. Thêm nhiều yếu tố đánh giá, kết hợp với các chỉ số khác để xác nhận nhập học
  5. Sử dụng phương pháp học máy để thích ứng các tham số và quy tắc lọc

Tóm tắt

Nhìn chung, chiến lược phá vỡ động lực là một trong những chiến lược theo dõi xu hướng đơn giản và thực tế, phù hợp với việc định lượng giao dịch. Trong quá trình ứng dụng, cần chú ý đến việc kiểm soát tần suất giao dịch, ngăn chặn giao dịch quá mức và chi phí giao dịch quá cao. Đồng thời, cả tham số và quy tắc lọc đều cần được điều chỉnh và tối ưu hóa theo các loại thực tế và môi trường thị trường để có thể sử dụng chiến lược hiệu quả nhất.

Mã nguồn chiến lược
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)

confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")

price = close
momentum = close - close[momentumLength]

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)