Chiến lược RSI theo xu hướng trung bình động


Ngày tạo: 2023-11-23 17:13:06 sửa đổi lần cuối: 2023-11-23 17:13:06
sao chép: 0 Số nhấp chuột: 626
1
tập trung vào
1617
Người theo dõi

Chiến lược RSI theo xu hướng trung bình động

Tổng quan

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.

Nguyên tắc chiến lược

Chiến lược này bao gồm ba phần chính:

  1. 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.

  2. 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.

  3. 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.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Kết hợp với các chỉ số đánh giá xu hướng và đánh giá mua bán quá mức, lọc ra tiếng ồn và nhận diện các điểm đảo ngược.
  2. Trong khi đó, xem xét xu hướng trong hai khoảng thời gian dài và ngắn, phán đoán chính xác hơn.
  3. Sử dụng trung bình di chuyển như một phương pháp dừng lỗ, bạn có thể thiết lập điểm dừng lỗ dựa trên mức độ biến động của thị trường.
  4. Điều kiện nhập cảnh nghiêm ngặt, có thể ngăn chặn đột nhập giả.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro:

  1. Nếu thị trường có những biến động lâu dài, sẽ mở ra một lượng lớn các giao dịch không có giá trị. Giải pháp là thêm các điều kiện lọc để tránh các giao dịch vô nghĩa.
  2. Có một số rủi ro về độ trễ thời gian. Giải pháp là rút ngắn thích hợp các tham số chu kỳ của đường trung bình di chuyển.
  3. Hiệu quả của tín hiệu RSI sẽ bị ảnh hưởng bởi cổ phiếu và thị trường. Giải pháp là kết hợp các yếu tố khác như hình dạng đường K để đánh giá hiệu quả.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thêm thêm các điều kiện vi sóng, chẳng hạn như số lượng giao tiếp, hình dạng đường K, để nâng cao hiệu quả của tín hiệu.
  2. Tối ưu hóa chu kỳ tham số của các moving average và RSI để phù hợp hơn với các đặc điểm của các cổ phiếu khác nhau.
  3. Xây dựng trung bình di chuyển động, tự động điều chỉnh các tham số theo biến động thị trường và sở thích rủi ro.
  4. Sử dụng các công nghệ tiên tiến hơn như học máy để đánh giá xu hướng thị trường và tăng độ chính xác.

Tóm tắt

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.

Mã nguồn chiến lược
/*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)