Chiến lược này chủ yếu sử dụng giá cao nhất, giá thấp nhất, và Mức trung bình di chuyển nhân tố (EMA) để xác nhận sự đảo ngược xu hướng và tạo ra tín hiệu giao dịch. Chiến lược đầu tiên tính toán giá cao nhất và thấp nhất trong một khoảng thời gian xem lại được chỉ định, sau đó xác định xem giá đóng hiện tại có dưới giá thấp nhất tương ứng với giá cao nhất (đảm nhận đảo ngược giảm) hoặc trên giá cao nhất tương ứng với giá thấp nhất (đảm nhận đảo ngược tăng). Một khi tín hiệu xác nhận đảo ngược xuất hiện, chiến lược tạo ra một tín hiệu nhập cảnh tương ứng. Ưu điểm chính của chiến lược này là khả năng nắm bắt cơ hội đảo ngược xu hướng, trong khi rủi ro chính là sau khi tín hiệu xác nhận đảo ngược xuất hiện, giá có thể trải qua biến động lặp đi lặp lại thay vì xu hướng một chiều.
Chiến lược giao dịch xác nhận đảo ngược nhiều khung thời gian xác định các cơ hội đảo ngược xu hướng tiềm năng bằng cách sử dụng giá cao nhất, giá thấp nhất và EMA, tạo ra các tín hiệu đầu vào tương ứng. Ưu điểm của chiến lược là khả năng nắm bắt sự đảo ngược xu hướng, nhưng nó cũng phải đối mặt với các vấn đề về giao dịch thường xuyên và kiểm soát rủi ro không đủ. Bằng cách giới thiệu cơ chế dừng lỗ và lấy lợi nhuận, kết hợp các chỉ số khác, tối ưu hóa tham số và kích thước vị trí, hiệu suất và sự ổn định của chiến lược có thể được cải thiện hơn nữa. Trong các ứng dụng thực tế, các tham số chiến lược và các biện pháp kiểm soát rủi ro cần phải được điều chỉnh theo các công cụ giao dịch cụ thể và môi trường thị trường.
/*backtest start: 2023-05-05 00:00:00 end: 2024-05-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Reversal Confimation Strategy", overlay=true) // Indicator inputs lookback = input.int(50, 'Lookback Period', minval=1, step=1) downColor = input(color.red, 'Shape Color Down') upColor = input(color.green, 'Shape Color Up') // Indicator calculations find_highest = ta.highest(high, lookback) find_lowest = ta.lowest(low, lookback) ema = ta.ema(close, lookback) var dnRv = 0.0 var dnRv_trigger = false var upRv = 0.0 var upRv_trigger = false if high == find_highest dnRv_trigger := false if low == find_lowest upRv_trigger := false for i = 0 to lookback - 1 if high[i] == find_highest dnRv := low[i] for i = 0 to lookback - 1 if low[i] == find_lowest upRv := high[i] dnRv_signal = close < dnRv and dnRv_trigger == false upRv_signal = close > upRv and upRv_trigger == false if dnRv_signal dnRv_trigger := true if upRv_signal upRv_trigger := true // Entry and exit conditions if dnRv_signal strategy.entry("Sell", strategy.short) if upRv_signal strategy.entry("Buy", strategy.long) // Plotting plotshape(dnRv_signal ? 1 : 0, style=shape.triangledown, location=location.abovebar, color=downColor, size=size.small) plotshape(upRv_signal ? 1 : 0, style=shape.triangleup, location=location.belowbar, color=upColor, size=size.small)