Renko và Chỉ số sức mạnh tương đối Xu hướng theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-04 15:49:19
Tags:

img

Tổng quan

Chiến lược này kết hợp các biểu đồ Renko và Chỉ số sức mạnh tương đối (RVI) để nắm bắt hầu hết các xu hướng thị trường chính.

Chiến lược logic

Chiến lược xây dựng gạch Renko dựa trên 9 thời kỳ ATR. Một gạch xanh mới được xây dựng khi giá đóng vượt quá mức cao của gạch trước. Một gạch đỏ mới được xây dựng khi giá đóng giảm xuống dưới mức thấp của gạch trước.

RVI dao động giữa 0-1 để đo sức mạnh tương đối giữa áp lực mua và bán. Trên 0,5 đại diện cho áp lực mua mạnh hơn trong khi dưới 0,5 đại diện cho áp lực bán mạnh hơn. RVI vượt qua trên đường trung bình di chuyển trơn tru của nó cung cấp tín hiệu mua khi áp lực bán giảm. RVI vượt dưới cung cấp tín hiệu bán khi áp lực mua giảm.

Kết hợp hướng Renko và tín hiệu RVI để nhập vào các vị trí dài hoặc ngắn.

Ưu điểm

  1. Đồ gạch Renko lọc ra tiếng ồn thị trường bình thường và chỉ phản ứng với sự biến động giá đáng kể, tránh những cú đập.
  2. RVI giúp xác định sự đảo ngược xu hướng, xác nhận thêm các tín hiệu giao dịch.
  3. Kết hợp hai chỉ số lọc ra một số tiếng ồn và cho phép nắm bắt các xu hướng chính.

Rủi ro

  1. Kích thước gạch trực tiếp ảnh hưởng đến tần suất giao dịch. Gạch quá lớn có thể bỏ lỡ cơ hội trong khi quá nhỏ làm tăng chi phí.
  2. Các thông số RVI không chính xác có thể gây ra tín hiệu bị mất hoặc nhiều tín hiệu sai.
  3. Việc lọc hai lần sẽ đánh mất cơ hội giao dịch.

Tăng cường

  1. Kích thước gạch động để thích nghi với biến động thay đổi.
  2. Tối ưu hóa các thông số RVI để tìm sự cân bằng tốt nhất.
  3. Kiểm tra sự ổn định trên các biểu tượng và khung thời gian khác nhau.

Kết luận

Chiến lược này kết hợp hai loại chỉ số khác nhau để nắm bắt các xu hướng chính. Tăng cường tối ưu hóa các thông số Renko và RVI có thể cải thiện sự ổn định. Không có mô hình nào hoàn hảo và thiếu một số giao dịch là không thể tránh khỏi. Người dùng cần đánh giá sở thích rủi ro của riêng họ và chọn sự kết hợp biểu tượng / thông số thích hợp.


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

//@version=3
strategy("Lancelot RR Strategy", overlay=false)
p=9
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
RVI=denom!=0?num/denom:0
RVIsig=(RVI+ 2*RVI[1] + 2*RVI[2] + RVI[3])/6

rvicloselongcondition = crossunder(RVI, RVIsig)
rvicloseshortcondition = crossover(RVI, RVIsig)

plot(RVI,color=green,style=line,linewidth=1)
plot(RVIsig,color=red,style=line,linewidth=1)
bgcolor(rvicloseshortcondition ? green : na, transp = 75)
bgcolor(rvicloselongcondition ? red : na, transp = 75)

///Renko///
TF = input(title='TimeFrame', defval="D")
ATRlength = input(title="ATR length",  defval=9, minval=2, maxval=100)
SMAlength = input(title="SMA length",  defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length",  defval=20, minval=2, maxval=100)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, atr(ATRlength))
SMA = request.security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = na
RENKODN = na
H = na
COLOR = na
BUY = na
SELL = na
UP = na
DN = na
CHANGE = na

RENKOUP := na(RENKOUP[1]) ? ((HIGH+LOW)/2)+(ATR/2) : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? ((HIGH+LOW)/2)-(ATR/2) : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP-RENKODN : RENKOUP[1]-RENKODN[1]
COLOR := na(COLOR[1]) ? white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if(not CHANGE and close >= RENKOUP[1]+H*3)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*3
    RENKODN := RENKOUP[1]+ATR*2
    COLOR := lime
    SELL := 0
    BUY := BUY+3

if(not CHANGE and close >= RENKOUP[1]+H*2)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*2
    RENKODN := RENKOUP[1]+ATR
    COLOR := lime
    SELL := 0
    BUY := BUY+2

if(not CHANGE and close >= RENKOUP[1]+H)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR
    RENKODN := RENKOUP[1]
    COLOR := lime
    SELL := 0
    BUY := BUY+1

if(not CHANGE and close <= RENKODN[1]-H*3)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*3
    RENKOUP := RENKODN[1]-ATR*2
    COLOR := red
    BUY := 0
    SELL := SELL+3

if(not CHANGE and close <= RENKODN[1]-H*2)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*2
    RENKOUP := RENKODN[1]-ATR
    COLOR := red
    BUY := 0
    SELL := SELL+2

if(not CHANGE and close <= RENKODN[1]-H)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR
    RENKOUP := RENKODN[1]
    COLOR := red
    BUY := 0
    SELL := SELL+1
    
plotshape(UP, style=shape.arrowup, location=location.bottom, size=size.normal)

renkolongcondition = UP
renkoshortcondition = DN

///Long Entry///
longcondition = UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = rvicloselongcondition
if (closeconditionlong)
    strategy.close("Long")

Thêm nữa