RSI Moving Average Crossover chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-07 15:35:58
Tags:

img

Tổng quan

Chiến lược chéo trung bình di chuyển RSI là một chiến lược được sử dụng chủ yếu cho giao dịch tiền điện tử. Nó áp dụng một trung bình di chuyển cho chỉ số RSI và giao dịch dựa trên các chéo giữa chỉ số RSI và trung bình di chuyển của nó. Nó cũng bao gồm chỉ số mà nó được làm từ.

Chiến lược logic

Chiến lược đầu tiên tính toán chỉ số RSI. Chỉ số RSI phản ánh sức mạnh của giá dựa trên các chuyển động tăng và giảm trong một khoảng thời gian nhất định. RSI trên 70 được coi là mua quá mức và dưới 30 là bán quá mức.

Sau đó, chiến lược áp dụng một trung bình động cho chỉ số RSI. Trung bình động có thể lọc ra các biến động ngẫu nhiên và xác định hướng xu hướng.

Khi chỉ số RSI vượt trên đường trung bình động, nó được coi là tín hiệu mua. Khi chỉ số RSI vượt dưới đường trung bình động, nó được coi là tín hiệu bán. Giao dịch được thực hiện theo hai tín hiệu này.

Trong mã, chỉ số RSI với thời gian dài được tính toán đầu tiên. Sau đó, ma trung bình động 10 giai đoạn của RSI được tính toán. Khi ma vượt trên rsi, nó sẽ mua. Khi ma vượt dưới rsi, nó sẽ bán.

Ngoài ra, mã vẽ biểu đồ đường cho rsi và ma, cũng như biểu đồ cột cho rsi-ma. Các đường chia cho rsi = 70 và rsi = 30 cũng được vẽ. Các mũi tên tín hiệu tương ứng được đánh dấu trên biểu đồ khi mua hoặc bán.

Phân tích lợi thế

  • Chỉ số RSI có thể đánh giá các điều kiện mua quá mức và bán quá mức. Trung bình động có thể lọc ra các biến động ngẫu nhiên. Sự kết hợp của cả hai có thể xác định các điểm đảo ngược xu hướng.

  • RSI chuyển trung bình chéo là một ý tưởng chiến lược giao dịch tương đối trưởng thành có thể lọc ra một số tín hiệu sai.

  • Mã chiến lược đơn giản và rõ ràng, dễ hiểu.

  • Chiến lược này hoạt động tốt cho tiền điện tử với xu hướng tương đối rõ ràng.

Phân tích rủi ro

  • RSI không chính xác và các thông số trung bình động có thể tạo ra quá nhiều tín hiệu sai.

  • Chỉ dựa vào các chỉ số chéo nhau không thể tránh hoàn toàn bị mắc kẹt.

  • Chi phí giao dịch có thể có một số tác động đến lợi nhuận.

  • Sự biến động cao của thị trường tiền điện tử cần phải cảnh giác để ngăn chặn rủi ro mất mát.

Để giải quyết rủi ro, các tham số có thể được điều chỉnh để tối ưu hóa các chỉ số, kích thước vị trí có thể được giảm, dừng lỗ có thể được thiết lập và phân tích xu hướng có thể được sử dụng để lọc tín hiệu.

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

  • Nghiên cứu sự kết hợp tối ưu của chỉ số RSI và trung bình động dưới các thông số thời gian khác nhau.

  • Tăng kích thước vị trí khi xu hướng mạnh và giảm khi xu hướng không rõ ràng.

  • Thiết lập stop loss động để theo dõi xu hướng.

  • Khám phá việc kết hợp chỉ số RSI với các chỉ số khác để tạo ra các tín hiệu giao dịch mới.

  • Khám phá các mô hình học máy dựa trên chiến lược này để cải thiện tỷ lệ thắng.

Tóm lại

Chiến lược chéo trung bình chuyển động RSI kết hợp các lợi thế của các chỉ số xu hướng và lọc, tương đối trưởng thành và đáng tin cậy. Logic chiến lược đơn giản và rõ ràng, và việc thực hiện mã cũng khá hoàn chỉnh. Nhìn chung, đây là một chiến lược giao dịch tiền điện tử khá tốt. Nhưng mọi chiến lược đều cần tối ưu hóa. Nó đòi hỏi kiểm tra và điều chỉnh liên tục, kết hợp với phân tích xu hướng, để đạt được hiệu suất chiến lược tốt hơn.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////













Thêm nữa