
Chiến lược theo dõi xu hướng RSI là một chiến lược giao dịch tự động của cổ phiếu sử dụng phân tích xu hướng và đồng thời sử dụng các chỉ số mua bán quá mức. Chiến lược này sử dụng trung bình di chuyển đơn giản để xác định hướng xu hướng của thị trường và kết hợp với chỉ số RSI tương đối mạnh để phát ra tín hiệu giao dịch để xác định và theo dõi xu hướng.
Chiến lược này bao gồm ba phần chính:
Xác định xu hướng: tính trung bình di chuyển đơn giản 200 ngày cho xu hướng dài hạn, tính trung bình di chuyển đơn giản 30 ngày và 50 ngày cho xu hướng ngắn hạn. Khi đường trung bình di chuyển ngắn hạn đi qua đường trung bình di chuyển dài hạn là tín hiệu lạc quan, đi xuống là tín hiệu giảm giá, đánh giá xu hướng ngắn hạn của thị trường.
Xác định quá mua quá bán: Xây dựng chỉ số RSI 14 ngày, RSI cao hơn 80 là vùng quá mua, thấp hơn 20 là vùng quá bán. Khi chỉ số RSI giảm từ vùng quá mua hoặc tăng từ vùng quá bán, tín hiệu giao dịch được phát ra.
Vào và ra khỏi thị trường: Khi đánh giá tín hiệu mua quá mức, nếu tín hiệu của tín hiệu đánh giá xu hướng phù hợp, thì nhập vào là nhiều / trống. Khi đường giao thoa vàng giữa đường trung bình di chuyển ngắn hạn và dài hạn xảy ra, đánh giá xu hướng đảo ngược, khi đó vị trí bán ra.
Với chiến lược này, bạn có thể tham gia kịp thời khi giá cổ phiếu đảo ngược, đồng thời kết hợp xu hướng để lọc một số giao dịch tiếng ồn, tương đối tốt trong việc kiểm soát rút lui.
Chiến lược này có một số ưu điểm:
Chiến lược này cũng có một số rủi ro:
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược RSI theo dõi xu hướng là một chiến lược rất thực tế, kết hợp với phân tích xu hướng và chỉ số mua bán quá mức, lọc một phần tiếng ồn thị trường, làm cho tín hiệu giao dịch chính xác và hiệu quả hơn. Bằng cách liên tục tối ưu hóa các phương tiện và tham số, chiến lược này có thể trở thành một hệ thống giao dịch lâu dài có lợi nhuận ổn định.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mattehalen
// INPUT per TIMEFRAME
// 5min = Legnth = 9, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 4, LongMA = 10
// 30min = Legnth = 7, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 10, LongMA = 20
strategy("Mathias & Christer Timeframe RSI", shorttitle="M&C_RSI",overlay=true, process_orders_on_close = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input(9, title="Length", type=input.integer)
src = input(ohlc4, title="Source", type=input.source)
//show4h = input(true, title="show 4h", type=input.bool)
maxLoss = input(3000)
rsiCurrent = rsi(src, len)
//rsi4h = security(syminfo.ticker, "240", rsi(src, len))
rsi4h = rsi(src, len)
//--------------------------------------------------
//MA
trendMAInput = input(200, title="trendMA", type=input.integer)
shortMAInput = input(30, title="shortMA", type=input.integer)
longMAInput = input(50, title="longMA", type=input.integer)
trendMA = ema(close,trendMAInput)
shortMA = ema(close,shortMAInput)
longMA = ema(close,longMAInput)
plot(trendMA, color=color.black, linewidth=5)
plot(shortMA, color=color.red, linewidth=2)
plot(longMA, color=color.green, linewidth=2)
bgcolor(crossunder(shortMA,longMA) ? color.black : na, transp=10)
//--------------------------------------------------
//RSI
BuySignalBarssince = barssince(rsi4h[1]<rsi4h[0] and rsi4h[1]<20)
BuySignal = (rsi4h[1]<rsi4h[0] and rsi4h[1]<20 and BuySignalBarssince[1]>10)
BuySignalOut = crossunder(longMA[1],shortMA[1])
bgcolor(BuySignal ? color.green : na, transp=70)
bgcolor(BuySignalOut ? color.green : na, transp=10)
SellSignalBarssince = barssince(rsi4h[1]>rsi4h[0] and rsi4h[1]>80)
SellSignal = (rsi4h[1]>rsi4h[0] and rsi4h[1]>80 and SellSignalBarssince[1]>10)
SellSignalOut = crossunder(shortMA[1],longMA[1])
bgcolor(SellSignal ? color.red : na, transp=70)
bgcolor(SellSignalOut ? color.red : na, transp=10)
if BuySignal
strategy.close("short", comment = "Exit short")
strategy.entry("long", true)
strategy.exit("Max Loss", "long", loss = maxLoss)
if BuySignalOut
strategy.close("long", comment = "Exit Long")
if SellSignal
// Enter trade and issue exit order on max loss.
strategy.close("long", comment = "Exit Long")
strategy.entry("short", false)
strategy.exit("Max Loss", "short", loss = maxLoss)
if SellSignalOut
// Force trade exit.
strategy.close("short", comment = "Exit short")
//--------------------------------------------------
//ATR
MyAtr = atr(10)
AtrFactor = 10
mySLBuy = close[BuySignalBarssince]
mySLSell = close[SellSignalBarssince]
plotchar(BuySignal, "BuySignal", "⬆", location.belowbar, color.lime,size =size.huge )
plotchar(BuySignalOut, "BuySignalOut", "█", location.belowbar, color.lime,size =size.small)
plotchar(SellSignal, "SellSignal", "⬇", location.abovebar ,color.red,size =size.huge)
plotchar(SellSignalOut, "SellSignalOut", "█", location.abovebar, color.red,size =size.small)