Khả năng xác nhận chiến lược thanh

Tác giả:ChaoZhang, Ngày: 2024-01-16 15:22:53
Tags:

img

Tổng quan: Chiến lược này đánh giá hướng xu hướng dựa trên hướng giá đóng của N cây nến liên tiếp. Các tín hiệu giao dịch được tạo ra khi giá đóng của N cây nến liên tiếp đáp ứng điều kiện. Kích thước của N được thiết lập bởi tham số đầu vào confirmBars. Chiến lược này chủ yếu sử dụng hướng giá đóng của N cây nến liên tiếp để xác định sức mạnh của xu hướng. N lớn hơn đòi hỏi nhiều cây nến hơn để xác nhận xu hướng, có thể lọc ra các đột phá giả nhưng cũng có thể bỏ lỡ giai đoạn đầu của xu hướng.

Nguyên tắc:
Chiến lược theo dõi mối quan hệ giữa giá đóng cửa của nến cuối cùng và giá đóng cửa trước đó để đánh giá sức mạnh của giá tăng và giảm. Cụ thể, nó xác định hai biến bcount và scount để ghi lại số lượng giá đóng cửa nến liên tiếp tăng và giảm.

Khi bcount đạt được giá trị được thiết lập bởi confirmBars, điều đó có nghĩa là giá đóng của các ngọn nến liên tiếp của confirmBars đã tăng, tạo ra tín hiệu mua. Khi scount đạt được giá trị được thiết lập bởi confirmBars, điều đó có nghĩa là giá đóng của các ngọn nến liên tiếp của confirmBars đã giảm, tạo ra tín hiệu bán.

Bằng cách đánh giá hướng của giá đóng của nhiều ngọn nến liên tiếp, biến động thị trường ngắn hạn có thể được lọc hiệu quả và tín hiệu giao dịch chỉ được tạo ra dưới xu hướng tương đối mạnh.

Phân tích lợi thế:

  1. Xử lý hiệu quả tiếng ồn và xác nhận xu hướng
    Chiến lược này đòi hỏi giá đóng cửa N nến liên tiếp để đáp ứng các điều kiện trước khi tạo ra tín hiệu giao dịch. Điều này lọc tác động của biến động thị trường bình thường đối với giao dịch và đảm bảo rằng các vị trí chỉ được mở dưới xu hướng mạnh.

  2. Các thông số cường độ lọc có thể điều chỉnh Bằng cách điều chỉnh kích thước của tham số confirmBars, sức mạnh của việc lọc biến động giá có thể được kiểm soát.

Phân tích rủi ro:

  1. Có thể bỏ lỡ cơ hội xu hướng sớm Chiến lược này đòi hỏi nhiều ngọn nến liên tiếp đóng giá để đáp ứng các điều kiện trước khi tạo ra tín hiệu, vì vậy nó thường bỏ lỡ cơ hội xu hướng sớm và không thể theo dõi xu hướng kịp thời.

  2. Có xu hướng dừng phá vỡ lỗ Khi số lượng xác nhận confirmBars được đặt quá lớn, rất dễ bị đánh lừa bởi các đường ngắn hạn đảo ngược trong giai đoạn đầu của xu hướng, dẫn đến đột phá dừng lỗ.

Hướng dẫn tối ưu hóa:

  1. Chế độ lọc các sự đột phá giả với các chỉ số khác
    Các chỉ số kỹ thuật khác như Bollinger Bands và RSI có thể được sử dụng để thực hiện lọc thứ cấp trên tín hiệu mua và bán để giảm khả năng phá vỡ giả.

  2. Điều chỉnh động các thông số Cố gắng điều chỉnh động tham số confirmBars dựa trên điều kiện thị trường. Tăng giá trị tham số trong thị trường biến động để lọc ra tiếng ồn; giảm giá trị tham số khi xu hướng rõ ràng để theo dõi xu hướng.

Tóm lại:
Chiến lược này đạt được hiệu ứng lọc cú sốc và xác nhận xu hướng bằng cách đánh giá hướng đóng giá của nhiều ngọn nến liên tiếp. Nó có thể giảm hiệu quả các giao dịch sai do biến động thị trường ngắn hạn và chỉ tạo ra tín hiệu giao dịch khi xu hướng rõ ràng. Bằng cách điều chỉnh kích thước của tham số confirmBars, người dùng có thể cân bằng mối quan hệ giữa các hiệu ứng lọc và nắm bắt cơ hội xu hướng. Tuy nhiên, chiến lược này có xu hướng bị dừng sớm trong quá trình bắt đầu xu hướng và không thể theo dõi xu hướng liên tục.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

confirmBars = input(1)

// === 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 ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

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

Thêm nữa