Chiến lược này là một hệ thống lai kết hợp phương pháp đảo ngược trung bình và theo xu hướng, sử dụng chỉ số RSI, Bollinger Bands và nhiều chỉ số EMA để nắm bắt các cơ hội mua quá mức và bán quá mức trên thị trường. Chiến lược tăng cường phân tích kỹ thuật truyền thống bằng cách kết hợp xác nhận xu hướng và xác định thị trường giới hạn phạm vi, cải thiện đáng kể độ chính xác.
Chiến lược này sử dụng một cơ chế xác minh ba lần cho tín hiệu giao dịch. Ban đầu, nó xác định các điều kiện mua quá mức / bán quá mức bằng cách sử dụng chỉ số RSI (dưới 30 hoặc trên 70). Thứ hai, nó xác nhận các tín hiệu bằng cách sử dụng Bollinger Bands breakouts. Cuối cùng, nó xác nhận xu hướng thị trường bằng cách sử dụng các vị trí tương đối và biến động EMA 100/50 ngày. Các giao dịch chỉ được thực hiện khi cả ba điều kiện đều phù hợp. Chiến lược cũng kết hợp đánh giá biến động EMA để xác định thị trường giới hạn phạm vi.
Chiến lược đạt được sự cân bằng giữa độ bền và tính linh hoạt thông qua sự phối hợp của nhiều chỉ số kỹ thuật. Với logic rõ ràng và thực hiện ngắn gọn, nó chứng minh giá trị thực tế. Thông qua tối ưu hóa tham số và quản lý rủi ro thích hợp, chiến lược cho thấy tiềm năng cho hiệu suất nhất quán trong các điều kiện thị trường khác nhau.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-11 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTC Dominance Analysis Strategy (Improved)", overlay=true) // Input Parameters rsi_period = input(14, title="RSI Period") bb_period = input(20, title="Bollinger Band Period") bb_std_dev = input(2.0, title="Bollinger Std Dev") ema_period = input(100, title="100 EMA Period") ema_30_period = input(30, title="30 EMA Period") ema_50_period = input(50, title="50 EMA Period") // RSI Calculation rsi_value = ta.rsi(close, rsi_period) // Bollinger Bands Calculation basis = ta.sma(close, bb_period) dev = bb_std_dev * ta.stdev(close, bb_period) upper_bb = basis + dev lower_bb = basis - dev // EMA Calculation ema_100 = ta.ema(close, ema_period) ema_30 = ta.ema(close, ema_30_period) ema_50 = ta.ema(close, ema_50_period) // Determine EMA trends range_bound_ema = math.abs(ema_100 - ta.sma(ema_100, 10)) < ta.stdev(ema_100, 10) uptrend_ema = ema_100 > ema_50 downtrend_ema = ema_100 < ema_50 // Long Condition: All 3 conditions must be met // 1. RSI < 30 // 2. BTC Dominance < lower Bollinger Band // 3. 100 EMA must be range-bound or in an uptrend (but NOT in a downtrend) long_condition = (rsi_value < 30) and (close < lower_bb) and (range_bound_ema or uptrend_ema) // Short Condition: All 3 conditions must be met // 1. RSI > 70 // 2. BTC Dominance > upper Bollinger Band // 3. 100 EMA must be range-bound or in a downtrend (but NOT in an uptrend) short_condition = (rsi_value > 70) and (close > upper_bb) and (range_bound_ema or downtrend_ema) // Plot Buy and Sell Signals for Debugging plotshape(long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Execute Buy Trade if (long_condition) strategy.entry("Buy", strategy.long) // Execute Sell Trade if (short_condition) strategy.entry("Sell", strategy.short) // Plot Bollinger Bands and EMA plot(upper_bb, color=color.red, title="Upper Bollinger Band") plot(lower_bb, color=color.green, title="Lower Bollinger Band") plot(ema_100, color=color.blue, title="100 EMA") plot(ema_50, color=color.orange, title="50 EMA") // plot(rsi_value, "RSI", color=color.purple) // Display background color for Buy and Sell signals bgcolor(long_condition ? color.new(color.green, 90) : na, title="Buy Background") bgcolor(short_condition ? color.new(color.red, 90) : na, title="Sell Background")