Chỉ số động lực RSI Chiến lược giao dịch đảo ngược

Tác giả:ChaoZhang, Ngày: 2024-01-03 12:09:48
Tags:

img

Tổng quan

Chiến lược này đầu tiên tính ADX và SMA trên các khung thời gian cao hơn để xác định hướng xu hướng và thay đổi. Sau đó RSI được tính trên các khung thời gian thấp hơn để xác định các điều kiện mua quá mức và bán quá mức để tạo ra các tín hiệu giao dịch.

Chiến lược logic

  1. ADX trên khung thời gian cao hơn đánh giá sức mạnh của xu hướng. ADX tăng đại diện cho xu hướng tăng cường.

  2. SMA trên các khung thời gian cao hơn đánh giá hướng của xu hướng.

  3. RSI trên khung thời gian thấp hơn đánh giá các điều kiện mua quá mức và bán quá mức.

  4. Khi ADX tăng, SMA tăng, và RSI mua quá mức trong khung thời gian thấp hơn, nó được coi là xu hướng tăng đang tăng cường, đi ngắn ở đây.

  5. Khi ADX tăng, SMA giảm, và RSI quá bán trên khung thời gian thấp hơn, nó được coi là xu hướng giảm đang tăng cường, đi dài ở đây.

Phân tích lợi thế

  1. Kết hợp phán đoán xu hướng và giao dịch đảo ngược, có thể nắm bắt các cơ hội đảo ngược trong các xu hướng chính.

  2. Sử dụng các chỉ số trên các khung thời gian, cải thiện độ tin cậy của tín hiệu.

  3. Chiến lược RSI rất đơn giản để hiểu và thực hiện.

Phân tích rủi ro

  1. Khả năng tín hiệu RSI sai, gây ra thua lỗ giao dịch.

  2. Phán quyết xu hướng chu kỳ chính có thể sai, làm cho chiến lược không phù hợp với điều kiện thị trường. Có thể xem xét nhiều chỉ số hơn để đánh giá xu hướng.

  3. Tần suất giao dịch có khả năng cao, ảnh hưởng đến lợi nhuận do chi phí giao dịch. Có thể điều chỉnh các thông số RSI để giảm số lượng giao dịch.

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

  1. Kiểm tra nhiều kết hợp tham số hơn để tìm sự phù hợp tối ưu giữa các tham số RSI và ADX, SMA.

  2. Thêm cơ chế dừng lỗ để kiểm soát lỗ giao dịch duy nhất.

  3. Xem xét chỉ số biến động để giảm kích thước vị trí khi biến động thấp.

  4. Tối ưu hóa các mức giá nhập và xuất cụ thể, chẳng hạn như đi ngắn khi phá vỡ các mức cao trước đó.

Kết luận

Chiến lược này kết hợp đánh giá xu hướng và tín hiệu đảo ngược để tìm sự đảo ngược địa phương trong các xu hướng chính. So với chỉ sử dụng chỉ số RSI, nó đáng tin cậy hơn và tránh bị mắc kẹt. Nhìn chung, một chiến lược tương đối bảo thủ phù hợp với các nhà đầu tư tìm cách giảm tín hiệu sai. Kiểm tra tham số hơn nữa và tối ưu hóa cơ chế có thể cải thiện hiệu suất chiến lược.


/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RSI scalping", overlay=true)

CustSession 	= input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0	= input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )

RSI = rsi(close, 7)

res		=	CustSession ? SessionTF0 : period

o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)

 // ADX higher time frame
dirmov(len) =>
	up = change(h)
	down = -change(l)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truer = request.security(syminfo.tickerid, res, tr)
	truerange = rma(truer, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len

ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2]  > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising 

if (longCondition)
    strategy.entry("Long entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

Thêm nữa