Renko dan Relative Vigor Index Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-04 15:49:19
Tag:

img

Gambaran umum

Strategi ini menggabungkan grafik Renko dan Relative Vigor Index (RVI) untuk menangkap sebagian besar tren pasar utama.

Logika Strategi

Strategi ini membangun batu bata Renko berdasarkan 9 periode ATR. Batu bata hijau baru dibangun ketika harga penutupan melebihi tinggi batu bata sebelumnya. Batu bata merah baru dibangun ketika harga penutupan jatuh di bawah rendah batu bata sebelumnya. Arah tren ditentukan oleh indikator RVI.

RVI berosilasi antara 0-1 untuk mengukur kekuatan relatif antara tekanan pembelian dan penjualan. Di atas 0,5 mewakili tekanan pembelian yang lebih kuat sementara di bawah 0,5 mewakili tekanan penjualan yang lebih kuat.

Gabungkan arah batu bata Renko dan sinyal RVI untuk memasukkan posisi panjang atau pendek sesuai.

Keuntungan

  1. Batu bata Renko menyaring kebisingan pasar normal dan hanya bereaksi terhadap pergerakan harga yang signifikan, menghindari whipsaws.
  2. RVI membantu mengidentifikasi pembalikan tren, selanjutnya mengkonfirmasi sinyal perdagangan.
  3. Menggabungkan dua indikator menyaring beberapa kebisingan dan memungkinkan menangkap tren utama.

Risiko

  1. Ukuran batu bata secara langsung mempengaruhi frekuensi perdagangan. batu bata yang terlalu besar dapat kehilangan kesempatan sementara yang terlalu kecil meningkatkan biaya.
  2. Parameter RVI yang tidak benar dapat menyebabkan sinyal hilang atau lebih banyak sinyal palsu.
  3. Penyaringan ganda melewatkan beberapa kesempatan perdagangan.

Peningkatan

  1. Ukuran bata dinamis untuk menyesuaikan perubahan volatilitas.
  2. Optimalkan parameter RVI untuk menemukan keseimbangan terbaik.
  3. Uji stabilitas di berbagai simbol dan kerangka waktu.

Kesimpulan

Strategi ini menggabungkan dua jenis indikator yang berbeda untuk menangkap tren utama. Optimasi lebih lanjut pada parameter Renko dan RVI dapat meningkatkan stabilitas. Tidak ada model yang sempurna dan kehilangan beberapa perdagangan tidak dapat dihindari. Pengguna perlu menilai preferensi risiko mereka sendiri dan memilih kombinasi simbol / parameter yang tepat.


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

Lebih banyak