Strategi mengikuti tren berdasarkan Renko dan indeks kekuatan relatif


Tanggal Pembuatan: 2024-02-04 15:49:19 Akhirnya memodifikasi: 2024-02-04 15:49:19
menyalin: 1 Jumlah klik: 686
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan Renko dan indeks kekuatan relatif

Ringkasan

Strategi ini menggabungkan Renko Chart dan Relative Vibration Index (RVI) untuk menangkap sebagian besar tren utama di pasar.

Prinsip Strategi

Strategi menggunakan 9 ATR untuk membangun Renko Ridge, dengan warna hijau untuk membangun Ridge baru ketika harga penutupan melampaui titik tinggi Renko Ridge sebelumnya; dengan warna merah untuk membangun Ridge baru ketika harga penutupan berada di bawah titik rendah Renko Ridge sebelumnya. Kombinasi RVI menentukan arah tren.

Indikator RVI digunakan untuk menilai kekuatan relatif dari kekuatan multihead dan kekuatan overhead. Nilai RVI berfluktuasi antara 0-1, lebih tinggi dari 0,5 berarti kekuatan multihead lebih kuat dari kekuatan overhead; kurang dari 0,5 berarti kekuatan overhead lebih kuat dari kekuatan multihead. Ketika RVI melintasi rata-rata pergerakan gesernya, kekuatan overhead melemah, kekuatan multihead meningkat, memberi sinyal lebih banyak; ketika RVI melintasi rata-rata pergerakan gesernya, kekuatan multihead melemah, kekuatan overhead meningkat, memberi sinyal lebih banyak.

Komposisi Renko berorientasi ke arah RVI dan melakukan beberapa sinyal shorting, masuk ke posisi multihead atau short head.

Keunggulan Strategis

  1. Renko mengisolasi pergerakan pasar yang normal, hanya memperhatikan perubahan harga yang lebih besar, dan menghindari kecurigaan.
  2. Indikator RVI menilai waktu terjadinya pembalikan tren dan mengunci sinyal perdagangan lebih lanjut.
  3. Kombinasi dari dua indikator yang disaring, dapat secara efektif menangkap tren utama pasar dan memfilter beberapa kebisingan.

Analisis risiko

  1. Ukuran Renko sangat berpengaruh pada frekuensi transaksi, sehingga tidak ada kesempatan untuk melakukan transaksi, sedangkan jika renko terlalu kecil maka frekuensi transaksi dan biaya transaksi akan meningkat.
  2. Setting parameter indikator RVI yang tidak tepat juga dapat menyebabkan sinyal yang hilang atau memperbesar sinyal palsu.
  3. Filter indikator ganda akan melewatkan sinyal tertentu dan tidak dapat menangkap keseluruhan situasi.

Arah optimasi

  1. Dimensi Renko yang dioptimalkan secara dinamis untuk menyesuaikan diri dengan fluktuasi pasar.
  2. Optimalkan parameter indikator RVI untuk mencari titik keseimbangan optimal.
  3. Cobalah berbagai varietas dan kombinasi parameter siklus untuk menilai stabilitas.

Meringkaskan

Strategi ini menggabungkan keunggulan dari dua jenis indikator yang berbeda, dengan tujuan untuk menangkap tren utama pasar. Stabilitas yang lebih tinggi dapat diperoleh dengan mengoptimalkan parameter Renko dan RVI.

Kode Sumber Strategi
/*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")