Chiến lược theo xu hướng cho RSI và MA giao nhau


Ngày tạo: 2024-02-20 15:31:15 sửa đổi lần cuối: 2024-02-20 15:31:15
sao chép: 1 Số nhấp chuột: 850
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng cho RSI và MA giao nhau

Tổng quan

Chiến lược này đánh giá xu hướng thị trường và thời gian đầu vào của entrada bằng cách chéo các chỉ số RSI với đường trung bình MA của hai chu kỳ khác nhau. Chiến lược chỉ làm nhiều hơn khi RSI cao hơn đường trung bình 26 chu kỳ của chính nó, khi RSI thấp hơn đường trung bình 26 chu kỳ của chính nó, để kiểm soát rủi ro.

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

Chiến lược này sử dụng hai đường trung bình MA 12 chu kỳ và 26 chu kỳ. Khi đường nhanh 12 chu kỳ đi qua đường chậm 26 chu kỳ, giá trị thị trường được coi là đi vào xu hướng tăng; Khi đường nhanh đi qua đường chậm, giá trị thị trường được coi là đi vào xu hướng giảm.

Trong khi đó, chiến lược giới thiệu các chỉ số RSI để đánh giá vùng quá mua quá bán. Chỉ khi RSI cao hơn đường trung bình 26 chu kỳ của chính nó, nó sẽ mở thêm vị trí khi giao dịch vàng xảy ra trên đường trung bình; Chỉ khi RSI thấp hơn đường trung bình 26 chu kỳ của chính nó, nó sẽ mở vị trí trống khi giao dịch chết xảy ra trên đường trung bình. Điều này có thể tránh việc mở vị trí ép buộc trong trường hợp giao dịch được mua quá hoặc bán quá, do đó kiểm soát rủi ro.

Phân tích lợi thế

Chiến lược này kết hợp đường trung bình và chỉ số RSI để xác định xu hướng và thời gian nhập cảnh, có thể theo dõi xu hướng hiệu quả. Việc giới thiệu chỉ số RSI như là điều kiện lọc, có thể làm giảm số lần mở vị trí và tránh bị mắc kẹt trong tình huống biến động. Không thiết lập dừng lỗ, có thể theo dõi xu hướng đầy đủ để đạt được thu nhập cao hơn.

Phân tích rủi ro

Do không đặt dừng lỗ, nếu đánh giá sai, thiệt hại có thể được tăng lên. Nếu thị trường tăng mạnh, có thể gây ra thiệt hại lớn hơn. Ngoài ra, điều kiện lọc RSI nếu được thiết lập không đúng, có thể bỏ lỡ thời gian nhập cảnh tốt hơn.

Bạn có thể xem xét thiết lập dừng lỗ để kiểm soát tổn thất tối đa. Bạn có thể điều chỉnh các tham số của RSI để tìm các điều kiện lọc tốt hơn. Nếu thị trường có nhiều biến động, bạn có thể điều chỉnh các tham số của đường trung bình để sử dụng đường trung bình chậm hơn để đánh giá xu hướng.

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

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

  1. Kiểm tra kết hợp đường trung bình MA của các chu kỳ khác nhau để tìm các tham số đường trung bình phù hợp hơn với các đặc điểm của thị trường hiện tại.

  2. Kiểm tra các tham số chu kỳ khác nhau của RSI, các điều kiện lọc khác nhau, tối ưu hóa thời gian nhập cảnh.

  3. Thêm các chỉ số khác hoặc điều kiện lọc để tăng sự ổn định của hệ thống. Ví dụ: Thêm chỉ số năng lượng, chỉ số khối lượng giao dịch, các chỉ số liên quan đến phán đoán xu hướng.

  4. Tối ưu hóa chiến lược dừng lỗ, kiểm soát rủi ro trong khi theo dõi xu hướng. Các chiến lược dừng lỗ như theo dõi dừng lỗ, dừng phần trăm và dừng động có thể được thử nghiệm.

Tóm tắt

Chiến lược này nói chung là đơn giản và trực tiếp, bằng cách đánh giá xu hướng bằng đường ngang, RSI tránh buộc phải mở vị trí, do đó theo dõi xu hướng để đạt được lợi nhuận tốt hơn. Có thể cải thiện thêm chiến lược này bằng cách tối ưu hóa tham số, thêm các chỉ số khác để phù hợp hơn với môi trường thị trường phức tạp và biến động.

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