Chiến lược giao dịch chỉ báo phân kỳ dài và ngắn RSI


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

Chiến lược giao dịch chỉ báo phân kỳ dài và ngắn RSI

Tổng quan

Chiến lược này đánh giá xu hướng không gian của thị trường và đưa ra quyết định giao dịch bằng cách tính toán sự chênh lệch không gian của chỉ số RSI. Cụ thể, nó sẽ đánh giá các tín hiệu không đầu ẩn khi RSI tạo ra mức thấp thấp hơn nhưng giá tạo ra mức thấp cao hơn; và đánh giá các tín hiệu không đầu ẩn khi RSI tạo ra mức cao hơn nhưng giá tạo ra mức cao thấp hơn.

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

Chiến lược này chủ yếu dựa trên lý thuyết chênh lệch đa khoảng của chỉ số RSI. Khi RSI và giá tạo ra sự chênh lệch ngược lại, nó báo hiệu sự đảo ngược tiềm ẩn của thị trường. Cụ thể là bốn trường hợp sau:

  1. Tín hiệu đa đầu bình thường: RSI hình thành mức thấp cao hơn, giá hình thành mức thấp hơn. Điều này cho thấy người mua đã đẩy RSI lên nhưng không hoàn toàn phản ánh trên giá, cho thấy sức mạnh đa đầu tăng lên.

  2. Tín hiệu đa đầu ẩn: RSI hình thành mức thấp thấp hơn, giá hình thành mức thấp cao hơn. Điều này cho thấy giá bán đã đẩy RSI xuống nhưng không hoàn toàn phản ánh trên giá, cho thấy sức mạnh đa đầu tăng lên.

  3. Tín hiệu đầu trống bình thường: RSI hình thành điểm cao thấp hơn, giá hình thành điểm cao hơn. Điều này cho thấy giá bán đã đẩy giá lên nhưng không được phản ánh hoàn toàn trên RSI, cho thấy sức mạnh đầu trống tăng lên.

  4. Tín hiệu HID HID: RSI hình thành điểm cao cao hơn, giá hình thành điểm cao thấp hơn. Điều này cho thấy người mua đã đẩy RSI lên nhưng không hoàn toàn phản ánh trên giá, cho thấy sức mạnh HID tăng lên.

Xác định xu hướng tiềm năng của thị trường và tăng cường sức mạnh mua bán dựa trên sự khác biệt trên để đưa ra chiến lược giao dịch.

Lợi thế chiến lược

  1. Sử dụng lý thuyết chênh lệch đa khoảng của RSI để đánh giá xu hướng tiềm năng của thị trường.
  2. Trong khi đó, kết hợp với giá cả hoạt động như xác nhận, tránh tạo ra tín hiệu tiếng ồn.
  3. Các nhà đầu tư có thể bắt được các tín hiệu quan trọng trước khi thị trường thay đổi nhanh chóng, và đưa ra phán đoán trước khi dự đoán xảy ra.
  4. Giao diện này có thể được sử dụng cho các thiết bị khác nhau.
  5. Các tham số có thể tùy chỉnh để thích ứng với các môi trường thị trường khác nhau.

Rủi ro chiến lược

  1. Sự khác biệt giữa chỉ số RSI và giá không nhất thiết là dấu hiệu của sự đảo ngược, nhưng có thể là sự cân bằng bình thường.
  2. Các tín hiệu ẩn có thể gây ra sai lầm khi tương đối lớn so với tiếng ồn.
  3. Các tín hiệu cần được kết hợp với nhiều chỉ số hoặc các phương pháp phân tích kỹ thuật để xác nhận.
  4. Các thông số tín hiệu không được thiết lập đúng cũng có thể ảnh hưởng đến phán đoán.

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

  1. Tăng MACD, KDJ và các chỉ số khác kết hợp với chỉ số RSI để xác định tín hiệu tín hiệu đầu vào.
  2. Tăng chiến lược dừng lỗ và giảm tổn thất đơn lẻ.
  3. Cài đặt tham số tối ưu hóa, chẳng hạn như tìm các tham số chu kỳ RSI phù hợp hơn.
  4. Thêm thuật toán học máy để đào tạo tính chính xác của tín hiệu nhập.
  5. Thêm hoạt động thời gian thực của websocket để giảm sự chậm trễ xác nhận tín hiệu.

Tóm tắt

Chiến lược này chủ yếu dựa vào sự phân biệt đa luồng của RSI để đánh giá xu hướng đa luồng tiềm ẩn của thị trường, bằng cách nắm bắt sự thay đổi sức mạnh tương đối của giá mua và bán trong chuyển động giá, dự đoán thực hiện giao dịch đảo ngược. Có một số chức năng dự báo tiên phong. Nhưng cũng có một số rủi ro tín hiệu tiếng ồn.

Mã nguồn chiến lược
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Divergence Indicator")
len = input.int(title="RSI Period", minval=1, defval=20)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=true)
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = ta.rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#2962FF)
hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))

plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low

oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) 
// bull : 상승 Condition : 조건
bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스?
strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond)
// strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 70)) 
plot(
     plFound ? osc[lbR] : na,
     offset=-lbR,
     title="Regular Bullish",
     linewidth=2,
     color=(bullCond ? bullColor : noneColor)
     )

plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond)
// strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 70))
plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor)
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High

oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1)
// bear : 하락 
bearCond = plotBear and priceHH and oscLH and phFound
strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond)
// strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor)
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High

oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High

priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond)
// strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor)
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )