
Tổng quan: Chiến lược này đánh giá xu hướng xu hướng bằng cách xác định xu hướng của giá đóng cửa liên tiếp của đường K gốc N liên tiếp, tạo ra tín hiệu giao dịch khi giá đóng cửa liên tiếp của đường K gốc N đáp ứng điều kiện. Kích thước của N được đặt bởi tham số nhập ConfirmBars. Chiến lược này chủ yếu sử dụng chiều hướng của giá đóng cửa liên tiếp của đường K gốc N để xác định cường độ của xu hướng.
Nguyên tắc: Chiến lược đánh giá mức độ tăng hoặc giảm giá bằng cách theo dõi mối quan hệ giữa giá đóng cửa của dòng K cuối cùng với giá đóng cửa của dòng K trước đó. Cụ thể, nó xác định hai biến bcount và scount, ghi lại số gốc của giá đóng cửa liên tục tăng và giảm.
Khi bcount đạt đến giá của thiết lập confirmBars, có nghĩa là giá đóng cửa liên tục confirmBars gốc K đã tăng, tạo ra tín hiệu mua. Khi scount đạt đến giá của thiết lập confirmBars, có nghĩa là giá đóng cửa liên tục confirmBars gốc K đã giảm, tạo ra tín hiệu bán.
Bằng cách xác định hướng giá đóng cửa của một số đường K liên tiếp, nó có thể lọc hiệu quả tiếng ồn biến động thị trường ngắn hạn và chỉ tạo ra tín hiệu giao dịch khi có xu hướng mạnh hơn.
Phân tích lợi thế:
Có thể lọc tiếng ồn hiệu quả, xác nhận xu hướng Chiến lược này yêu cầu tín hiệu giao dịch chỉ được tạo ra khi các giá đóng cửa liên tiếp của đường N gốc K đáp ứng các điều kiện, có thể lọc ảnh hưởng của biến động thị trường bình thường đối với giao dịch, đảm bảo chỉ mở vị trí khi có xu hướng mạnh hơn.
Các tham số có thể điều chỉnh độ lọc Bằng cách điều chỉnh kích thước tham số của ConfirmBars, bạn có thể kiểm soát độ lọc của biến động giá. Các tham số lớn hơn sẽ có hiệu quả tốt hơn trong việc lọc tiếng ồn, nhưng cũng dễ bị bỏ lỡ cơ hội ban đầu của xu hướng.
Phân tích rủi ro:
Có thể bỏ lỡ cơ hội trong giai đoạn đầu của xu hướng Chiến lược này yêu cầu nhiều đường K liên tiếp để giá đóng cửa phù hợp để tạo ra tín hiệu, do đó, thường xuyên sẽ bỏ lỡ cơ hội đầu tiên của xu hướng và không thể theo dõi xu hướng kịp thời.
Khả năng phá vỡ lỗ hổng Khi xác nhận gốc ConfirmBars được thiết lập quá lớn, nó dễ bị nhầm lẫn bởi đường ngắn ngược trong giai đoạn đầu của xu hướng, dẫn đến việc dừng lỗ bị phá vỡ.
Định hướng tối ưu hóa:
Kết hợp với các chỉ số khác để lọc các đột phá giả Có thể kết hợp với các chỉ số kỹ thuật khác, chẳng hạn như Bollinger Bands, RSI để lọc thứ hai các tín hiệu mua và bán, giảm khả năng bị phá vỡ giả.
Động thái điều chỉnh tham số Bạn cũng có thể cố gắng điều chỉnh các tham số confirmBars theo các biến động của thị trường, tăng giá trị tham số khi thị trường chuyển động, lọc tiếng ồn; và 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 quả của việc xác nhận xu hướng bằng cách xác định hướng giá đóng cửa của một số đường K liên tiếp. Nó có thể làm giảm hiệu quả 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 tham số của ConfirmBars, người dùng có thể tự cân bằng mối quan hệ giữa hiệu quả lọc và cơ hội nắm bắt xu hướng.
/*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")