Chiến lược chéo giữa đường trung bình di chuyển và RSI

Tác giả:ChaoZhang, Ngày: 2024-02-01 11:48:51
Tags:

img

Chiến lược này tích hợp hai chỉ số trung bình động và chỉ số RSI để xây dựng một chiến lược giao dịch chéo giữa các vị trí dài và ngắn. Nó có thể nắm bắt xu hướng trung và dài hạn trong khi tránh giao dịch ồn ào không cần thiết với các chỉ số ngắn hạn.

Chiến lược logic

Chiến lược này áp dụng hai bộ trung bình động, bao gồm trung bình động nhanh (EMA 59 và EMA 82) và trung bình động chậm (EMA 96 và EMA 95). Nó đi dài khi giá vượt qua EMA nhanh, và đi ngắn khi giá vượt qua EMA nhanh. Trong khi đó, khu vực mua quá và bán quá của chỉ số RSI được sử dụng để xác nhận tín hiệu giao dịch và dừng lỗ.

Cụ thể, khi EMA nhanh vượt qua EMA chậm, một tín hiệu dài được tạo ra. Nếu RSI dưới 30 (khu vực quá bán) tại thời điểm này, mua dài. Khi EMA nhanh vượt qua EMA chậm, một tín hiệu ngắn được tạo ra. Nếu RSI vượt quá 70 (khu vực quá mua) tại thời điểm này, mua ngắn.

Lợi thế của việc sử dụng đường trung bình động kép là nhận ra tốt hơn những thay đổi trong xu hướng trung hạn đến dài hạn.

Ưu điểm

  • Khám phá xu hướng trung và dài hạn bằng trung bình di chuyển kép
  • Giao dịch tiếng ồn lọc với chỉ số RSI
  • Kết hợp giao dịch theo xu hướng và trung bình đảo ngược
  • Logic đơn giản và rõ ràng

Phân tích rủi ro

  • Trong các thị trường chủ yếu bị giới hạn phạm vi, tín hiệu trung bình động có thể bị ảnh hưởng
  • Chỉ số RSI cũng thất bại trong một số điều kiện thị trường
  • Đặt dừng lỗ cần thận trọng để tránh quá lỏng lẻo hoặc quá chặt chẽ

Các lĩnh vực cải tiến

  • Kiểm tra các kết hợp trung bình động chu kỳ dài hơn
  • Hãy thử điều chỉnh các tham số khác nhau ví dụ như ngưỡng của các khu vực mua quá mức / bán quá mức RSI
  • Thêm các bộ lọc bổ sung như khối lượng giao dịch
  • Tối ưu hóa chiến lược dừng lỗ, kết hợp dừng lỗ động với ATR vv

Tóm lại

Chiến lược này tích hợp xu hướng theo sau của trung bình di chuyển kép và trung bình đảo ngược giao dịch của chỉ số RSI. Các EMA kép theo dõi hướng xu hướng trung và dài hạn, trong khi RSI xác nhận tính hợp lệ của tín hiệu giao dịch và dừng lỗ. Đây là một chiến lược chéo đơn giản và thực tế giữa dài và ngắn. Nó có thể được điều chỉnh cho các môi trường thị trường khác nhau thông qua điều chỉnh và tối ưu hóa tham số.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD)

//A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket.
// hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both
// Performance 

n=input(title="period",defval=500)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)



// RSi and Moving averages

length = input( 14 )
overSold = input( 70)
overBought = input( 30)
point = 0.0001
dev= 2

fastLength = input(59)
fastLengthL = input(82)
slowLength = input(96)
slowLengthL = input(95)
price = close

mafast = ema(price, fastLength)
mafastL= ema(price, fastLengthL)
maslow = ema(price, slowLength)
maslowL = ema(price, slowLengthL)
vrsi = rsi(price, length)
cShort =  (crossunder(vrsi, overBought))

condDown = n2 >= n1
condUp = condDown != true
closeLong =  (crossover(vrsi, overSold))
closeShort = cShort 


// Strategy Logic
longCondition = n1> n2
shortCondition = longCondition != true

col =condUp ? lime : condDown ? red : yellow
plot(n1,color=col,linewidth=3)


if (not na(vrsi))
    if shortCondition    
        if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-SHORT", strategy.short, comment="short")
strategy.close("SYS-SHORT", when=closeShort) //output logic

if (not na(vrsi))
    if longCondition // swing condition          
        if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-LONG", strategy.long, comment="long")
strategy.close("SYS-LONG", when=closeLong) //output logic


// Stop Loss 


sl = input(75)
Stop = sl * 10
Q = 100


strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop)
strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa