
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên các chỉ số chuyển động trung bình đa chu kỳ (EMA) và các chỉ số tương đối mạnh (RSI). Chiến lược này đưa ra quyết định giao dịch bằng cách đánh giá xu hướng EMA trong ba chu kỳ 20, 50, 100 kết hợp với tín hiệu vượt mức giá và RSI. Chiến lược này chủ yếu áp dụng cho thị trường xu hướng, để tăng độ chính xác của giao dịch bằng cách xác minh nhiều chỉ số kỹ thuật.
Logic cốt lõi của chiến lược bao gồm những phần chính sau:
Đây là một hệ thống chiến lược phức tạp kết hợp theo dõi xu hướng và đảo ngược động lực. Bằng cách sử dụng nhiều chỉ số kỹ thuật kết hợp, trong khi giữ chiến lược đơn giản và dễ hiểu, đặc điểm lợi nhuận rủi ro tốt hơn được thực hiện. Điểm mạnh cốt lõi của chiến lược là cơ chế xác nhận xu hướng nghiêm ngặt và hệ thống kiểm soát rủi ro hoàn thiện, nhưng trong ứng dụng thực tế cần chú ý đến tối ưu hóa tham số và thích ứng với môi trường thị trường.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover + RSI Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Calculate EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
// Calculate RSI
rsiPeriod = 14
rsiValue = ta.rsi(close, rsiPeriod)
// Determine if each EMA is trending up (current value greater than the previous value)
ema20_trending_up = ema20 > ema20[1]
ema50_trending_up = ema50 > ema50[1]
ema100_trending_up = ema100 > ema100[1]
all_emas_trending_up = ema20_trending_up and ema50_trending_up and ema100_trending_up
// Buy condition:
// 1. Price crosses above the EMA20 from below (using ta.crossover)
// 2. All three EMAs are trending upward
buySignal = ta.crossover(close, ema20) and all_emas_trending_up
// Sell conditions:
// Sell if RSI is above 70 OR price crosses below the EMA20 from above (using ta.crossunder)
sellSignal = (rsiValue > 70) or ta.crossunder(close, ema20)
// Enter a long position if the buy condition is met
if (buySignal)
strategy.entry("Long", strategy.long)
// Exit the long position if either sell condition is met
if (sellSignal)
strategy.close("Long")
// Plot the EMAs on the chart for visualization
plot(ema20, color=color.blue, title="EMA 20")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
// (Optional) Plot the RSI and a horizontal line at 70 for reference
plot(rsiValue, title="RSI", color=color.purple)
hline(70, title="Overbought (70)", color=color.red)