
Chiến lược này là một chiến lược đa đầu theo dõi xu hướng sử dụng chỉ số RSI để xác định xu hướng, kết hợp với chỉ số MACD để đưa ra thị trường. Chiến lược này kết hợp cùng với đường trung bình EMA làm bộ lọc xu hướng và cơ chế dừng khẩn cấp để kiểm soát rủi ro.
Chiến lược này phụ thuộc chủ yếu vào chỉ số RSI để xác định xu hướng. Khi chỉ số RSI đi qua đường dài RSI được thiết lập (bằng mặc định 21), cho rằng thị trường có thể đảo ngược xu hướng. Nếu MACD đã ở trong xu hướng giảm, thì có thể xác định rằng hiện tại đang ở điểm đảo ngược, là một thời điểm tốt để làm nhiều hơn.
Ngoài ra, chiến lược này cũng giới thiệu đường trung bình EMA (tạm dịch là 200 chu kỳ mặc định) làm bộ lọc xu hướng. Chỉ khi giá cao hơn đường trung bình EMA, bạn sẽ xem xét thêm. Điều này có thể hiệu quả trong việc lọc xu hướng không rõ ràng hoặc đảo ngược giả trong xu hướng giảm.
Về dừng lỗ, chiến lược này đặt cả đường dừng thường xuyên và đường dừng khẩn cấp. Khi RSI vượt qua đường dừng thường xuyên (đặc biệt là 86); Nếu giá giảm mạnh, không có điều kiện khi RSI vượt qua đường dừng khẩn cấp (đặc biệt là 73), để kiểm soát tổn thất tối đa.
Chiến lược này nói chung là một chiến lược đa đầu theo dõi xu hướng truyền thống hơn. Sử dụng RSI để xác định điểm đảo ngược, lọc MACD để đánh giá sai, EMA để đánh giá xu hướng lớn, kiểm soát rủi ro dừng lỗ. Chiến lược này đơn giản, trực quan, dễ hiểu, có một số lợi thế trong việc đánh giá sự đảo ngược của thị trường, có thể được sử dụng như một trong những chiến lược nhập cảnh của giao dịch định lượng.
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dravitch
//@version=4
strategy("RSI - BULL RUN (Improved)", overlay=true)
// Input
UseEmergency = input(true, "Use Emergency Exit?")
RSIlong = input(21, "RSI Long Cross")
RSIcloseLong = input(86, "RSI Close Long Position")
EmergencycloseLong = input(73, "RSI Emergency Close Long Position")
UseEMAFilter = input(true, "Use EMA Trend Filter")
EMAlength = input(200, "EMA Length for Trend Filter") // Utiliser 200 pour SMMA
// RSI
rsiValue = rsi(close, 14)
// MACD
[macdLine, signalLine, _] = macd(close, 12, 26, 9)
// EMA Trend Filter
emaTrend = sma(close, EMAlength) // Utiliser sma pour la SMMA (Simple Moving Average)
// Conditions pour les trades longs
trendUp = close > emaTrend
trendDown = close < emaTrend
longCondition = crossover(rsiValue, RSIlong) and trendDown or crossunder(macdLine, signalLine) and crossover(rsiValue, RSIlong)
longCloseCondition = crossunder(rsiValue, RSIcloseLong) and trendUp
emergencyLongCondition = crossunder(rsiValue, EmergencycloseLong)
// Plots
plot(rsiValue, color=color.white, linewidth=2, title="RSI")
// Strategy
if (longCondition)
strategy.entry("Long", strategy.long, alert_message='RSI Long Cross: LONG')
if (longCloseCondition)
strategy.close("Long", alert_message='RSI Close Long Position')
if (emergencyLongCondition and UseEmergency)
strategy.close("Long", alert_message='RSI Emergency Close Long')
// Plot EMA Trend Filter in a separate pane
plot(emaTrend, color=color.rgb(163, 0, 122), title="EMA Trend Filter", linewidth=2, style=plot.style_line, transp=0)
hline(0, "Zero Line", color=color.gray)