Chiến lược này được thiết kế cho thị trường tiền điện tử, sử dụng sự kết hợp của các chỉ số RSI và RVI thời gian cực kỳ dài để xác định các bước vào và ra.
Cụ thể, các mục nhập dài được thực hiện khi RVI hiển thị vùng mua, và RSI siêu dài vượt qua mức mua quá mức.
Lợi thế của chiến lược này là RSI cực dài có thể xác định chính xác hơn xu hướng để tránh whipsaws. RVI giúp đo áp lực mua / bán cho độ chính xác nhập cảnh cao hơn. Phương pháp dừng lỗ cho phép cắt lỗ kịp thời để giảm giảm.
Tuy nhiên, cả RSI và RVI đều có vấn đề chậm trễ, và không thể nhanh chóng nắm bắt các điểm chuyển đổi. Các thông số nới lỏng hoặc dừng di chuyển là cần thiết để thích nghi với các đỉnh. Ngoài ra, RSI có khả năng hạn chế trong việc giải mã hành động giá phức tạp.
Tóm lại, chiến lược theo dõi đường cong RSI tiền điện tử có thể tạo ra kết quả tốt khi kết hợp với các động thái xu hướng mạnh mẽ. Nhưng quản lý vị trí tích cực, điều chỉnh tham số và giám sát các nguyên tắc cơ bản vẫn rất cần thiết cho các nhà giao dịch để đạt được lợi nhuận ổn định lâu dài.
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 strategy(title="Crypto RSI + RVI Strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.03, pyramiding=1 ) Period = input(100, minval=1) BuyZone = input(49, minval=1) SellZone = input(50, minval=1) length=Period MA_s=0.0 pos=0.0 possig=0.0 nU=0.0 nD=0.0 nRes=0.0 ob=SellZone os=BuyZone WiMA(src, length) => MA_s=0.0 MA_s:=(src + nz(MA_s[1] * (length-1)))/length MA_s calc_rsi_volume(fv, length) => up=iff(fv>fv[1],abs(fv-fv[1])*volume,0) dn=iff(fv<fv[1],abs(fv-fv[1])*volume,0) upt=WiMA(up,length) dnt=WiMA(dn,length) 100*(upt/(upt+dnt)) rsi_v = calc_rsi_volume(close, length) // u=plot(ob) // l=plot(os) // fill(u,l,color.red) // plot(50) // plot(rsi_v, color=color.red, linewidth=1) reverse = input(false, title="Trade reverse") xPrice = close StdDev = stdev(xPrice, Period) d = iff(close > close[1], 0, StdDev) u = iff(close > close[1], StdDev, 0) nU := (13 * nz(nU[1],0) + u) / 14 nD := (13 * nz(nD[1],0) + d) / 14 nRes := 100 * nU / (nU + nD) pos := iff(nRes < BuyZone, -1, iff(nRes > SellZone, 1, nz(pos[1], 0))) possig := iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) long=crossover (rsi_v,ob) and (possig == 1) short=crossunder(rsi_v,os) and (possig == -1) g(v, p) => round(v * (pow(10, p))) / pow(10, p) risk = input(100) leverage = input(2.5) c = g((strategy.equity * leverage / open) * (risk / 100), 4) strategy.entry("long",1,c,when=long) strategy.close("long",when=short) //strategy.entry("short",0,when=short) // ------------------------- Strategy Logic --------------------------------- // var longOpeneda = false var shortOpeneda = false var int timeOfBuya = na longCondition= long and not longOpeneda if longCondition longOpeneda := true timeOfBuya := time longExitSignala = short exitLongCondition = longOpeneda[1] and longExitSignala if exitLongCondition longOpeneda := false timeOfBuya := na //plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.color.green, size=size.tiny, title="BUY", text="BUY", textcolor=color.color.white) //plotshape(exitLongCondition, style=shape.labeldown, location=location.abovebar, color=color.color.red, size=size.tiny, title="SELL", text="SELL", textcolor=color.color.white) sl=input(0.2) tp=input(1.0) strategy.exit("long_tp/sl", "long", profit=close * tp / syminfo.mintick, loss=close * sl / syminfo.mintick, comment='long_tp/sl', alert_message = 'closelong') strategy.exit("short_tp/sl", "short", profit=close * tp / syminfo.mintick, loss=close * sl / syminfo.mintick, comment='short_tp/sl', alert_message = 'closeshort')