
Chiến lược giao chéo đường trung bình RSI là một chiến lược được áp dụng cho giao dịch tiền điện tử. Chiến lược này áp dụng đường trung bình di chuyển cho chỉ số RSI và phát ra tín hiệu mua và bán dựa trên sự giao chéo của RSI với đường trung bình di chuyển của nó.
Chiến lược này đầu tiên tính RSI. RSI dựa trên sự thay đổi của giá trong một khoảng thời gian nhất định, phản ánh sức mạnh của giá. RSI lớn hơn 70 là vùng mua quá mức và nhỏ hơn 30 là vùng bán quá mức.
Sau đó, chiến lược này áp dụng moving average dựa trên chỉ số RSI. Moving average có thể lọc các biến động ngẫu nhiên để xác định xu hướng. Ở đây, RSI moving average được thiết lập trong 10 chu kỳ.
Khi RSI vượt qua đường trung bình di chuyển, nó được coi là một tín hiệu mua; khi RSI vượt qua đường trung bình di chuyển, nó được coi là một tín hiệu bán. Giao dịch dựa trên cả hai tín hiệu này.
Trong mã, đầu tiên tính toán chỉ số RSI của chu kỳ dài. Sau đó tính toán trung bình di chuyển của 10 chu kỳ RSI ma. Khi ma vượt qua rsi, mua; khi ma vượt qua rsi, bán.
Ngoài ra, mã cũng vẽ hình đường rsi, ma, và hình cột rsi-ma. vẽ đường phân chia rsi = 70, rsi = 30. Và đánh dấu mũi tên tín hiệu tương ứng trên biểu đồ khi mua và bán.
Đối với rủi ro, bạn có thể điều chỉnh các tham số để tối ưu hóa hiệu quả của chỉ số, cắt giảm vị trí phù hợp, thiết lập đường dừng lỗ và lọc tín hiệu với phân tích xu hướng.
Chiến lược giao dịch chéo RSI kết hợp các ưu điểm của chỉ số xu hướng và chỉ số lọc, tương đối thành thạo và đáng tin cậy. Lập luận của chiến lược đơn giản và dễ hiểu, thực hiện mã cũng hoàn chỉnh, nói chung là một chiến lược giao dịch tiền điện tử tốt hơn. Nhưng bất kỳ chiến lược nào cũng có nơi cần tối ưu hóa, cần phải liên tục kiểm tra và điều chỉnh, và hỗ trợ phán đoán xu hướng, để có được hiệu quả 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)
////////////////////////////////////////////////////////////////////////////////