
Chiến lược này là hệ thống giao dịch theo xu hướng dựa trên nhiều đường trung bình động giao nhau và chỉ báo RSI. Chiến lược này kết hợp ba đường trung bình động EMA20, EMA50 và SMA200, đánh giá xu hướng thị trường theo mối quan hệ vị trí của các đường trung bình động và sử dụng chỉ báo RSI để lọc các tín hiệu giao dịch và giao dịch khi giá vượt qua mức cao trước đó. Chiến lược này thiết lập các điều kiện chốt lời và dừng lỗ cố định và phù hợp để áp dụng ở mức 1 giờ và hàng ngày.
Logic cốt lõi của chiến lược này dựa trên các điều kiện chính sau:
Chiến lược này là một hệ thống theo dõi xu hướng có cấu trúc hoàn chỉnh và logic rõ ràng. Thông qua việc sử dụng phối hợp nhiều chỉ báo kỹ thuật, có thể nắm bắt hiệu quả xu hướng thị trường đồng thời có cơ chế quản lý rủi ro hoàn chỉnh. Chiến lược còn nhiều chỗ để tối ưu hóa và việc cải tiến liên tục có thể nâng cao hơn nữa tính ổn định và lợi nhuận của chiến lược. Đối với các nhà giao dịch trung và dài hạn, đây là một khuôn khổ chiến lược đáng thử.
/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA/SMA Strategy", overlay=false)
// Input parameters
ema20Length = input(20, title="20 EMA Length")
ema50Length = input(50, title="50 EMA Length")
sma200Length = input(200, title="200 SMA Length")
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(40, title="RSI Threshold")
// Calculate indicators
ema20 = ta.ema(close, ema20Length)
ema50 = ta.ema(close, ema50Length)
sma200 = ta.sma(close, sma200Length)
rsiValue = ta.rsi(close, rsiLength)
// Conditions
emaCondition = ema20 > ema50 and sma200 < ema20 and sma200 < ema50
priceNearEMA = (close <= ema20 * 1.01 and close >= ema20 * 0.99) or (close <= ema50 * 1.01 and close >= ema50 * 0.99)
rsiCondition = rsiValue > rsiThreshold
// Entry condition: Price crosses previous candle high
entryCondition = priceNearEMA and rsiCondition and emaCondition and (close > high[1])
// Strategy entry
if entryCondition
strategy.entry("Long", strategy.long)
// Take profit and stop loss settings
takeProfitLevel = strategy.position_avg_price * 1.25 // Take profit at +25%
stopLossLevel = strategy.position_avg_price * 0.90 // Stop loss at -10%
// Exit conditions
if strategy.position_size > 0
strategy.exit("Take Profit", from_entry="Long", limit=takeProfitLevel)
strategy.exit("Stop Loss", from_entry="Long", stop=stopLossLevel)
// Plotting indicators for visualization
plot(ema20, color=color.blue, title="20 EMA")
plot(ema50, color=color.red, title="50 EMA")
plot(sma200, color=color.green, title="200 SMA")
hline(rsiThreshold, "RSI Threshold", color=color.orange)