
Chiến lược này là một hệ thống chiến lược hỗn hợp kết hợp sự hồi phục của giá trị trung bình và theo dõi xu hướng, chủ yếu bằng cách kết hợp các chỉ số RSI, Brin và EMA đa dạng để nắm bắt các cơ hội mua quá mức trên thị trường. Chiến lược dựa trên các chỉ số phân tích kỹ thuật truyền thống, tăng sự xác nhận xu hướng và phán đoán biến động phạm vi, giúp cải thiện độ chính xác của chiến lược.
Chiến lược sử dụng cơ chế xác minh ba lần để xác nhận tín hiệu giao dịch. Đầu tiên, thông qua chỉ số RSI để xác định khu vực quá mua quá bán, kích hoạt tín hiệu ban đầu khi RSI thấp hơn 30 hoặc cao hơn 70. Tiếp theo, sử dụng vùng Brin ((BB) làm tham chiếu cho phạm vi biến động giá, xác nhận tín hiệu thêm khi giá phá vỡ đường dẫn lên hoặc xuống đường. Cuối cùng, đánh giá xu hướng thị trường thông qua vị trí tương đối và biến động của 100⁄50 ngày EMA, giao dịch chỉ được thực hiện khi hướng xu hướng phù hợp với hai tín hiệu trước đó.
Chiến lược thông qua sự phối hợp của nhiều chỉ số kỹ thuật, đồng thời đảm bảo sự ổn định của chiến lược. Chiến lược có logic rõ ràng, cách thực hiện đơn giản, có giá trị thực tế tốt. Bằng cách tối ưu hóa tham số hợp lý và quản lý rủi ro, chiến lược có khả năng duy trì hiệu suất ổn định trong các môi trường 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")