Chỉ báo động lượng RSI nắm bắt chiến lược giao dịch đảo ngược


Ngày tạo: 2024-01-03 12:09:48 sửa đổi lần cuối: 2024-01-03 12:09:48
sao chép: 1 Số nhấp chuột: 661
1
tập trung vào
1621
Người theo dõi

Chỉ báo động lượng RSI nắm bắt chiến lược giao dịch đảo ngược

Tổng quan

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

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

  1. Tính toán cường độ xu hướng của ADX trên khung thời gian cao. ADX tăng lên cho thấy xu hướng tăng lên.

  2. Xác định xu hướng của SMA trên khung thời gian cao. SMA tăng là giá tăng, SMA giảm là giá giảm.

  3. RSI được tính trên khung thời gian thấp để xác định hiện tượng quá mua quá bán. RSI cao hơn ngưỡng là quá mua, RSI thấp hơn ngưỡng là quá bán.

  4. Khi ADX tăng, SMA tăng, RSI khung thời gian thấp quá mua, cho rằng xu hướng đang tăng lên, thì có thể thả.

  5. Khi ADX tăng, SMA giảm, RSI bán quá mức trong khung thời gian thấp, cho rằng xu hướng đang tăng mạnh xuống, thì có thể làm nhiều hơn.

Phân tích lợi thế

  1. Sự kết hợp của sự phân tích xu hướng và giao dịch đảo ngược có thể nắm bắt cơ hội đảo ngược trong xu hướng lớn hơn.

  2. Sử dụng các chỉ số kết hợp trên các khung thời gian khác nhau có thể cải thiện độ tin cậy của tín hiệu.

  3. RSI chiến lược simplicity chính nó, dễ hiểu và thực hiện.

Phân tích rủi ro

  1. RSI có khả năng tạo ra tín hiệu giả, làm cho giao dịch bị mất mát. Có thể giảm xác suất tín hiệu giả bằng cách tối ưu hóa tham số.

  2. Việc đánh giá xu hướng chu kỳ lớn có thể bị sai, khiến chiến lược không phù hợp với môi trường thị trường đó.

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

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

  1. Kiểm tra thêm các kết hợp tham số để tìm kiếm sự phù hợp tốt nhất giữa tham số RSI và tham số ADX, SMA.

  2. Tăng hệ thống ngăn chặn để kiểm soát tổn thất đơn lẻ.

  3. Cân nhắc giảm vị thế khi dao động chậm, kết hợp với chỉ số biến động.

  4. Tối ưu hóa giá vào và ra cụ thể, chẳng hạn như giá cao nhất của một đường K trước khi phá vỡ vào khoảng trống.

Tóm tắt

Chiến lược này tích hợp các tín hiệu giao dịch định hướng và đảo ngược để tìm kiếm cơ hội đảo ngược địa phương trong xu hướng chu kỳ lớn. Nó có độ tin cậy cao hơn so với sử dụng RSI đơn lẻ, tránh bị đặt. Nói chung, đây là một chiến lược bảo thủ hơn, phù hợp với các nhà đầu tư giảm khả năng tín hiệu giả.

Mã nguồn 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)