Đây là một chiến lược theo dõi xu hướng kết hợp các đường chéo trung bình động với Chỉ số sức mạnh tương đối (RSI). Chiến lược xác định hướng xu hướng thị trường thông qua các đường chéo trung bình động ngắn hạn và dài hạn, trong khi sử dụng RSI như một bộ lọc đà để xác nhận sức mạnh xu hướng, do đó cải thiện độ tin cậy của tín hiệu giao dịch. Chiến lược cũng kết hợp stop-loss và take-profit dựa trên tỷ lệ phần trăm để quản lý rủi ro.
Chiến lược sử dụng trung bình di chuyển đơn giản (SMA) 9 giai đoạn và 21 giai đoạn như các chỉ số xu hướng chính. Các tín hiệu dài được tạo ra khi MA ngắn hạn vượt qua trên MA dài hạn và RSI trên 50, trong khi các tín hiệu ngắn xảy ra khi MA ngắn hạn vượt qua dưới MA dài hạn và RSI dưới 50.
Đây là một chiến lược theo xu hướng có cấu trúc tốt với logic rõ ràng. Nó cung cấp hướng xu hướng cơ bản thông qua giao thoa MA, xác nhận đà thông qua RSI, kết hợp với các cơ chế quản lý rủi ro để tạo thành một hệ thống giao dịch hoàn chỉnh. Mặc dù nó có một số hạn chế vốn có, thông qua tối ưu hóa và điều chỉnh liên tục, chiến lược có tiềm năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau. Chìa khóa thành công nằm trong tối ưu hóa tham số và thực hiện kiểm soát rủi ro.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy") // --- Input Parameters --- shortMA = input.int(9, title="Short MA Period", minval=1) longMA = input.int(21, title="Long MA Period", minval=1) rsiLength = input.int(14, title="RSI Length", minval=1) rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100 takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100 // --- Calculate Moving Averages --- shortMA_value = ta.sma(close, shortMA) longMA_value = ta.sma(close, longMA) // --- Calculate RSI --- rsi_value = ta.rsi(close, rsiLength) // --- Buy and Sell Conditions --- longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50 shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50 // --- Plot Moving Averages --- plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA") plot(longMA_value, color=color.red, linewidth=2, title="Long MA") // --- Plot RSI (Optional) --- hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi_value, color=color.purple, title="RSI") // --- Strategy Execution --- if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // --- Risk Management (Stop Loss and Take Profit) --- longStopLoss = close * (1 - stopLossPercent) longTakeProfit = close * (1 + takeProfitPercent) shortStopLoss = close * (1 + stopLossPercent) shortTakeProfit = close * (1 - takeProfitPercent) // Set the stop loss and take profit for long and short positions strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)