Strategi mengikut arah aliran berdasarkan Renko dan indeks kekuatan relatif


Tarikh penciptaan: 2024-02-04 15:49:19 Akhirnya diubah suai: 2024-02-04 15:49:19
Salin: 1 Bilangan klik: 686
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan Renko dan indeks kekuatan relatif

Gambaran keseluruhan

Strategi ini menggabungkan Renko Graph dan Relative Vibration Index (RVI) sebagai dua petunjuk, dengan tujuan untuk menangkap sebahagian besar trend utama pasaran. Ia digunakan untuk jenis utama seperti Bitcoin, Hinges dan sebagainya.

Prinsip Strategi

Strategi menggunakan 9 ATR untuk membina Renko Bars, membina Bars baru apabila harga penutupan melebihi titik tertinggi Renko Bars sebelumnya, warna hijau; membina Bars baru apabila harga penutupan adalah lebih rendah daripada titik rendah Renko Bars sebelumnya, warna merah.

Indeks RVI digunakan untuk menilai intensiti relatif kekuatan multihead dan kekuatan hulu udara. Nilai RVI berfluktuasi antara 0-1, lebih tinggi daripada 0.5 bermaksud kekuatan multihead lebih kuat daripada hulu udara; kurang daripada 0.5 bermaksud kekuatan hulu udara lebih kuat daripada hulu udara. Apabila RVI melintasi rata-rata bergerak yang meluncur, ia melemahkan kekuatan hulu udara, kekuatan multihead meningkat, memberi lebih banyak isyarat; apabila RVI melintasi rata-rata bergerak yang meluncur, ia melemahkan kekuatan multihead, kekuatan hulu udara meningkat, memberi lebih banyak isyarat.

Menerusi arah Renko yang digabungkan dengan RVI untuk memberi isyarat tambahan untuk memasuki kedudukan berbilang atau kosong.

Kelebihan Strategik

  1. Renko cuba mengasingkan pergerakan pasaran yang biasa dan hanya memberi perhatian kepada perubahan harga yang lebih besar untuk mengelakkan daripada terjejas.
  2. Indeks RVI menilai masa berlakunya pembalikan trend dan mengunci isyarat perdagangan lebih lanjut.
  3. Gabungan kedua-dua penunjuk penapisan yang berkesan untuk menangkap trend utama pasaran dan menapis sebahagian daripada bunyi.

Analisis risiko

  1. Saiz Renko yang terlalu besar akan memberi kesan kepada kekerapan dagangan, dan yang terlalu kecil akan meningkatkan kekerapan dagangan dan yuran.
  2. Tetapan parameter penunjuk RVI yang tidak betul juga boleh menyebabkan isyarat yang terlewat atau isyarat palsu yang diperbesar.
  3. Penapisan dua kali ganda akan terlepas beberapa isyarat dan tidak dapat menangkap keseluruhan keadaan.

Arah pengoptimuman

  1. Untuk mengoptimumkan saiz Renko secara dinamik, ia akan menyesuaikan diri dengan turun naik pasaran.
  2. Mengoptimumkan parameter penunjuk RVI untuk mencari titik keseimbangan terbaik.
  3. Cuba pelbagai jenis dan kombinasi parameter kitaran untuk menilai kestabilan.

ringkaskan

Strategi ini menggabungkan kelebihan dua jenis penunjuk yang berbeza, dengan tujuan untuk menangkap trend utama pasaran. Dengan mengoptimumkan parameter Renko dan RVI, kestabilan yang lebih tinggi dapat diperoleh.

Kod 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")