
Chiến lược này là một chiến lược giao dịch đường ngắn sử dụng chỉ số ADX để lọc các tín hiệu phá vỡ. Khi giá phá vỡ đường Bollinger Bollinger và ADX đang giảm, hãy làm trống; Khi giá phá vỡ đường Bollinger Bollinger và ADX đang tăng, hãy làm nhiều hơn.
Phương pháp này sử dụng Bollinger Bollinger Bands làm tín hiệu phá vỡ chính. Bollinger Bands xuống đường cho thấy chênh lệch tiêu chuẩn gấp đôi so với giá, và giá phá vỡ Bollinger Bands thường cho thấy giá đi vào giai đoạn xu hướng mạnh. Ngoài ra, để tránh phá vỡ giả, chiến lược này đã thêm chỉ số ADX làm điều kiện lọc.
Cụ thể, chiến lược này sử dụng giá đóng cửa với độ dài 33 chu kỳ để tính toán Brin Belt. Đường trung tâm của Brin Belt là đường trung bình di chuyển đơn giản 33 chu kỳ của giá đóng cửa, trên và dưới đường là hai chênh lệch tiêu chuẩn dưới đường trung tâm. Các tham số chỉ số được thiết lập khi giá đóng cửa bị phá vỡ và 8 chu kỳ ADX nhỏ hơn 15 chu kỳ ADX; làm nhiều hơn khi giá đóng cửa phá vỡ và 8 chu kỳ ADX lớn hơn 15 chu kỳ ADX.
Đây là một chiến lược đột phá kết hợp các tín hiệu lọc theo xu hướng và chỉ số tần số, với một số ưu điểm:
Chiến lược này cũng có một số rủi ro:
Để giảm những rủi ro này, chúng ta có thể điều chỉnh tham số vùng Brin, thu nhỏ phạm vi của vùng Brin; điều chỉnh tham số chu kỳ ADX, tránh tín hiệu quá tải; thu nhỏ khoảng cách dừng một cách thích hợp, kiểm soát tổn thất đơn. Tất nhiên, tất cả các tối ưu hóa này đều cần được kiểm tra lại để tránh quá phù hợp.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Chiến lược này nói chung là một chiến lược lọc đột phá đơn giản và thực tế. Bằng cách đánh giá xu hướng bằng dây chuyền Brin, tín hiệu lọc ADX có thể tránh tiếng ồn của thị trường rung động và nắm bắt cơ hội xu hướng ở một mức độ nhất định.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)
Price = close
Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev
ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))
Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2
Take_Profit = input(800)
Stop_Loss = input(400)
strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)