Đây là một chiến lược theo xu hướng kết hợp trung bình động hai giai đoạn (21 ngày và 55 ngày), chỉ số động lực RSI và phân tích khối lượng. Chiến lược phân tích thông tin thị trường từ ba chiều - giá, động lực và khối lượng - trong khi xác nhận hướng xu hướng và lọc tín hiệu giao dịch thông qua chỉ số RSI và khối lượng để cải thiện độ chính xác giao dịch. Chiến lược đòi hỏi sự đột phá giá của trung bình động ngắn hạn, RSI vượt qua mức trung bình của nó và tăng khối lượng để xác nhận tính hợp lệ của xu hướng.
Chiến lược sử dụng một cơ chế lọc ba:
Các điều kiện mua đòi hỏi tất cả những điều sau:
Điều kiện bán đòi hỏi bất kỳ điều nào sau đây:
Đây là một chiến lược theo xu hướng sử dụng toàn diện ba yếu tố thiết yếu của phân tích kỹ thuật (giá, khối lượng, động lực). Thông qua nhiều cơ chế lọc, chiến lược đảm bảo độ tin cậy tín hiệu trong khi duy trì khả năng kiểm soát rủi ro. Mặc dù có một số hạn chế vốn có, thông qua tối ưu hóa và cải tiến liên tục, chiến lược có tiềm năng đạt được lợi nhuận ổn định trong giao dịch thực tế. Chiến lược có thể hoạt động đặc biệt tốt trong các thị trường có xu hướng rõ ràng và thanh khoản đầy đủ.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("21/55 MA with RSI Crossover", overlay=true) // Inputs for moving averages ma21_length = input.int(21, title="21-day Moving Average Length", minval=1) ma55_length = input.int(55, title="55-day Moving Average Length", minval=1) // RSI settings rsi_length = input.int(13, title="RSI Length", minval=1) rsi_avg_length = input.int(13, title="RSI Average Length", minval=1) // Moving averages ma21 = ta.sma(close, ma21_length) ma55 = ta.sma(close, ma55_length) // Volume settings vol_ma_length = input.int(21, title="Volume MA Length", minval=1) // Volume moving average vol_ma = ta.sma(volume, vol_ma_length) // RSI calculation rsi = ta.rsi(close, rsi_length) rsi_avg = ta.sma(rsi, rsi_avg_length) // Buy condition // buy_condition = close > ma21 and ta.crossover(rsi, rsi_avg) and volume > vol_ma buy_condition = close > ma21 and rsi > rsi_avg and volume > vol_ma // Sell condition // sell_condition = close < ma55 or ta.crossunder(rsi, rsi_avg) sell_condition = ta.crossunder(close, ma55) or ta.crossunder(rsi, rsi_avg) // Execute trades if (buy_condition) strategy.entry("Buy", strategy.long, comment="Buy Signal") if (sell_condition) strategy.close("Buy", comment="Sell Signal") // Plot moving averages for reference plot(ma21, color=color.blue, title="21-day MA") plot(ma55, color=color.red, title="55-day MA") // Plot RSI and RSI average for reference rsi_plot = input.bool(true, title="Show RSI?", inline="rsi") plot(rsi_plot ? rsi : na, color=color.green, title="RSI") plot(rsi_plot ? rsi_avg : na, color=color.orange, title="RSI Average")