Chiến lược theo dõi xu hướng chéo giữa RSI và MA

Tác giả:ChaoZhang, Ngày: 2024-02-20 15:31:15
Tags:

img

Tổng quan

Chiến lược này xác định xu hướng thị trường và tín hiệu nhập cảnh bằng cách chéo giữa chỉ số RSI và hai đường trung bình động (MA) của các giai đoạn khác nhau.

Chiến lược logic

Chiến lược này sử dụng hai MA 12 và 26 giai đoạn. Khi MA nhanh 12 giai đoạn vượt qua trên MA chậm 26 giai đoạn, nó báo hiệu xu hướng tăng, và ngược lại. Chiến lược đi dài trên chéo vàng và đi ngắn trên chéo chết của hai MA.

Chỉ số RSI cũng được sử dụng để xác định các khu vực mua quá mức / bán quá mức. Chỉ khi RSI cao hơn MA 26 giai đoạn của nó, chiến lược sẽ mở các vị trí dài trên giao thoa vàng. Và chỉ khi RSI thấp hơn, nó sẽ mở các vị trí ngắn trên giao thoa chết. Điều này tránh các mục nhập buộc đối với các tình huống mua quá mức / bán quá mức và do đó kiểm soát rủi ro.

Phân tích lợi thế

Bằng cách kết hợp MAs và RSI để phân tích xu hướng và thời gian, chiến lược này có thể theo dõi các xu hướng hiệu quả. Bộ lọc RSI làm giảm tần suất giao dịch và tránh các whipsaws trong các thị trường dao động. Không sử dụng stop loss cho phép theo xu hướng đầy đủ cho lợi nhuận cao hơn.

Phân tích rủi ro

Nếu không có stop loss, lỗ có thể tăng lên trên các tín hiệu sai. Di chuyển khoảng cách lớn cũng có thể dẫn đến tổn thất lớn. Ngoài ra, các bộ lọc RSI đặt không đúng có thể gây ra các tín hiệu đầu vào tốt bị thiếu.

Xem xét sử dụng stop loss để kiểm soát lỗ tối đa. Điều chỉnh các thông số RSI để lọc tốt hơn. Đối với thị trường biến động, sử dụng MAs chậm hơn để đánh giá xu hướng.

Hướng dẫn tối ưu hóa

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  1. Kiểm tra các kết hợp MA của các giai đoạn khác nhau để tìm các thông số phù hợp nhất với điều kiện thị trường hiện tại.

  2. Tối ưu hóa thời gian RSI và logic lọc để có thời gian nhập tốt hơn.

  3. Thêm các chỉ số khác như khối lượng để ổn định hệ thống tốt hơn.

  4. Tối ưu hóa các chiến lược dừng lỗ để cân bằng theo xu hướng và kiểm soát rủi ro, ví dụ: dừng lại, dừng phần trăm, dừng động v.v.

Kết luận

Chiến lược này tương đối đơn giản và đơn giản, sử dụng MA crossover để xác định xu hướng và RSI để tránh nhập force, do đó theo dõi xu hướng cho lợi nhuận tốt.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Thêm nữa