Renko dan Trend Indeks Kekuatan Relatif Mengikut Strategi

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

img

Ringkasan

Strategi ini menggabungkan carta Renko dan Indeks Kekuatan Relatif (RVI) untuk menangkap kebanyakan trend pasaran utama.

Logika Strategi

Strategi ini membina batu bata Renko berdasarkan 9 tempoh ATR. Batu bata hijau baru dibina apabila harga penutupan melebihi harga tinggi batu bata sebelumnya. Batu bata merah baru dibina apabila harga penutupan jatuh di bawah harga rendah batu bata sebelumnya. Arah trend ditentukan oleh penunjuk RVI.

RVI berayun antara 0-1 untuk mengukur kekuatan relatif antara tekanan membeli dan menjual. Di atas 0.5 mewakili tekanan membeli yang lebih kuat manakala di bawah 0.5 mewakili tekanan penjualan yang lebih kuat. RVI melintasi di atas purata bergerak yang lancar memberikan isyarat beli apabila tekanan jual berkurangan. RVI melintasi di bawah memberikan isyarat jual apabila tekanan membeli berkurangan.

Gabungkan arah batu bata Renko dan isyarat RVI untuk memasuki kedudukan panjang atau pendek.

Kelebihan

  1. Peranti Renko menyaring bunyi pasaran biasa dan hanya bertindak balas terhadap pergerakan harga yang signifikan, mengelakkan whipsaws.
  2. RVI membantu mengenal pasti pembalikan trend, seterusnya mengesahkan isyarat perdagangan.
  3. Menggabungkan dua penunjuk menapis beberapa bunyi bising dan membolehkan menangkap trend utama.

Risiko

  1. Saiz bata secara langsung mempengaruhi kekerapan perdagangan. bata yang terlalu besar mungkin kehilangan peluang sementara terlalu kecil meningkatkan kos.
  2. Parameter RVI yang tidak betul boleh menyebabkan isyarat yang hilang atau lebih banyak isyarat palsu.
  3. Penapisan berganda kehilangan beberapa peluang perdagangan.

Peningkatan

  1. Saiz bata dinamik untuk menyesuaikan perubahan turun naik.
  2. Mengoptimumkan parameter RVI untuk mencari keseimbangan terbaik.
  3. Uji kestabilan merentasi simbol dan jangka masa yang berbeza.

Kesimpulan

Strategi ini menggabungkan dua jenis penunjuk yang berbeza untuk menangkap trend utama. Pengoptimuman lanjut pada parameter Renko dan RVI dapat meningkatkan kestabilan. Tiada model yang sempurna dan kehilangan beberapa perdagangan tidak dapat dielakkan. Pengguna perlu menilai keutamaan risiko mereka sendiri dan memilih kombinasi simbol / parameter yang betul.


/*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 lanjut