Chiến lược này là một hệ thống giao dịch đảo ngược xu hướng dựa trên việc đồng bộ hóa nhiều chỉ số kỹ thuật, chủ yếu được thiết kế cho giao dịch ngắn hạn trên khung thời gian 5 phút. Nó tích hợp theo xu hướng trung bình động, xác nhận khối lượng, lọc biến động ATR và các phương pháp phân tích đa chiều khác để sàng lọc các cơ hội giao dịch đảo ngược có khả năng cao thông qua các điều kiện nhập cảnh nghiêm ngặt. Chiến lược đặc biệt phù hợp với giao dịch trong các phiên thanh khoản cao và có thể nắm bắt hiệu quả các cơ hội đảo ngược thị trường ngắn hạn.
Logic cốt lõi của chiến lược dựa trên các thành phần chính sau: Khám phá tín hiệu đảo ngược: Sử dụng một khoảng thời gian nhìn lại (mất 12 khoảng thời gian) để xác định các mô hình đảo ngược tiềm năng bằng cách phân tích mối quan hệ giá với mức cao và thấp trong lịch sử. 2. Xác nhận xu hướng: Tích hợp các chỉ số trung bình động khác nhau bao gồm SMA, EMA, WMA và VWMA, cho phép người dùng chọn loại trung bình phù hợp nhất cho các điều kiện thị trường khác nhau. Xác minh khối lượng: Xác nhận tín hiệu đảo ngược bằng cách so sánh khối lượng hiện tại với mức trung bình khối lượng 20 giai đoạn. Quản lý rủi ro: Điều chỉnh động các mục tiêu dừng lỗ và lợi nhuận dựa trên chỉ số ATR, sử dụng 1.5x ATR như phạm vi dừng lỗ mặc định và 2x dừng lỗ như mục tiêu lợi nhuận.
Chiến lược này là một hệ thống giao dịch ngắn hạn được thiết kế tốt, đạt được xác định tín hiệu đảo ngược đáng tin cậy và kiểm soát rủi ro thông qua sự hợp tác đa chỉ số.
/*backtest start: 2024-01-17 00:00:00 end: 2025-01-15 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Reversal Signals Strategy [AlgoAlpha]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs group_strategy = "Strategy Settings" riskRewardRatio = input.float(2.0, "Risk-Reward Ratio", tooltip="Take Profit is Risk-Reward times Stop Loss", group=group_strategy) stopLossATRMultiplier = input.float(1.5, "Stop Loss ATR Multiplier", tooltip="Multiplier for ATR-based stop loss", group=group_strategy) // Reversal Signal Detection (from previous script) group_reversal = "Reversal Detection Settings" lookbackPeriod = input.int(12, "Candle Lookback", group=group_reversal) confirmationPeriod = input.int(3, "Confirm Within", group=group_reversal) enableVolumeConfirmation = input.bool(true, "Use Volume Confirmation", group=group_reversal) group_trend = "Trend Settings" trendMAPeriod = input.int(50, "Trend MA Period", group=group_trend) trendMAType = input.string("EMA", "MA Type", options=["SMA", "EMA", "WMA", "VWMA"], group=group_trend) group_appearance = "Appearance" bullColor = input.color(#00ffbb, "Bullish Color", group=group_appearance) bearColor = input.color(#ff1100, "Bearish Color", group=group_appearance) // Moving Average Selection ma_current = switch trendMAType "SMA" => ta.sma(close, trendMAPeriod) "EMA" => ta.ema(close, trendMAPeriod) "WMA" => ta.wma(close, trendMAPeriod) "VWMA" => ta.vwma(close, trendMAPeriod) // Volume Confirmation volumeIsHigh = volume > ta.sma(volume, 20) // Calculate Reversal Scores bullCandleScore = 0 bearCandleScore = 0 for i = 0 to (lookbackPeriod - 1) bullCandleScore += close < low[i] ? 1 : 0 bearCandleScore += close > high[i] ? 1 : 0 // Reversal Signals bullSignal = bullCandleScore == (lookbackPeriod - 1) and (not enableVolumeConfirmation or volumeIsHigh) bearSignal = bearCandleScore == (lookbackPeriod - 1) and (not enableVolumeConfirmation or volumeIsHigh) // ATR-based Stop Loss and Take Profit atrValue = ta.atr(14) stopLossLevel = stopLossATRMultiplier * atrValue takeProfitLevel = stopLossLevel * riskRewardRatio // Strategy Orders if bullSignal strategy.entry("Long", strategy.long) strategy.exit("Long TP/SL", from_entry="Long", stop=close - stopLossLevel, limit=close + takeProfitLevel) if bearSignal strategy.entry("Short", strategy.short) strategy.exit("Short TP/SL", from_entry="Short", stop=close + stopLossLevel, limit=close - takeProfitLevel) // Plot Reversal Signals plotshape(bullSignal, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=bullColor, size=size.small, text="B") plotshape(bearSignal, title="Sell Signal", style=shape.labeldown, location=location.abovebar, color=bearColor, size=size.small, text="S") // Alerts for trade signals alertcondition(bullSignal, "Bullish Reversal", "Bullish Reversal Signal Detected") alertcondition(bearSignal, "Bearish Reversal", "Bearish Reversal Signal Detected")