Strategi perdagangan Bitcoin berdasarkan RVI dan EMA


Tanggal Pembuatan: 2024-02-22 13:50:17 Akhirnya memodifikasi: 2024-02-22 13:50:17
menyalin: 0 Jumlah klik: 776
1
fokus pada
1617
Pengikut

Strategi perdagangan Bitcoin berdasarkan RVI dan EMA

Ringkasan

Strategi ini didasarkan pada dua indikator RVI (Indeks Relatif Intensitas) dan EMA (Indeks Moving Average). Strategi ini dilakukan pada saat RVI menguntungkan, di EMA cepat di atas EMA lambat, di EMA lambat di atas EMA cepat, untuk mencapai strategi perdagangan kuantitatif yang didasarkan pada tren dan overbought oversold.

Prinsip Strategi

  1. Gunakan RVI untuk menilai overbought dan oversold. Lakukan overbought saat melewati garis sinyal RVI; kosongkan oversold saat melewati garis sinyal RVI.

  2. Menggunakan EMA ganda untuk menentukan arah tren. Ketika EMA cepat di atas EMA lambat adalah tren bullish, dan ketika EMA lambat di atas EMA cepat adalah tren bearish.

  3. Hanya jika RVI membiarkan keuntungan dan EMA menilai sebagai bearish, melakukan operasi lebih banyak; hanya jika RVI membiarkan keuntungan dan EMA menilai sebagai bearish, melakukan operasi shorting.

  4. Stop loss setelah melakukan overshoot berada di bawah titik terendah terbaru*atrSL jarak, stopover berada di atas titik tertinggi terdekatatr*jarak atrTP; stop loss setelah shorting berada di atas titik tertinggi terdekat*atrSL jarak, stop stop berada di bawah titik terendah terdekatatr*jarak atrTP

Analisis Keunggulan

  1. Dengan menggunakan indikator overbought dan oversold, kita bisa menghindari false breakout.

  2. Stop Loss Stop Stop Dinamis, yang membantu untuk memahami situasi yang lebih besar.

  3. Selain itu, ada juga beberapa indikator yang dapat digunakan untuk menentukan harga yang akan dipasarkan.

  4. Data pengetesan cukup, parameter yang dioptimalkan, kinerja yang baik dari hard disk.

Analisis risiko

  1. Dalam pasar yang bergejolak besar, EMA menilai tren yang sering berubah, dan frekuensi perdagangan mungkin terlalu tinggi.

  2. Parameter RVI dan siklus EMA perlu dioptimalkan untuk varietas perdagangan yang berbeda, jika tidak, efektivitas perdagangan mungkin lebih buruk.

  3. Stop loss juga harus diatur secara rasional berdasarkan volatilitas pasar, jika tidak, risiko tidak dapat dikontrol secara efektif.

Arah optimasi

  1. Anda dapat mempertimbangkan untuk menambahkan lebih banyak indikator tambahan untuk menilai kualitas tren, seperti indikator getaran, saluran Brinline, dan lain-lain, untuk membuat keputusan perdagangan yang lebih akurat.

  2. Anda dapat mengkombinasikan indikator volatilitas seperti ATR untuk menyesuaikan jarak stop loss secara dinamis, dan memperluas jangkauan stop loss dengan tepat ketika ada fluktuasi besar.

  3. Kombinasi parameter dapat diuji untuk varietas yang berbeda, memilih parameter terbaik, meningkatkan stabilitas strategi.

Meringkaskan

Strategi ini menggabungkan keunggulan indikator RVI dan indikator EMA, untuk menilai overbought dan oversold, serta mempertimbangkan arah tren besar, untuk menghindari perdagangan konflik. Sistem stop loss dinamis membantu untuk memahami arah utama pasar. Dengan pengoptimalan parameter dan kontrol risiko yang ketat, strategi ini dapat menghasilkan tingkat pengembalian investasi yang relatif stabil.

Kode Sumber Strategi
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//this strategy works well on h4 (btc or eth)


//@version=5
strategy(title="Relative Vigor Index", shorttitle="RVGI",overlay=true)
//indicator(title="Relative Vigor Index", shorttitle="RVGI", format=format.price, precision=4, timeframe="", timeframe_gaps=true)
len = input.int(4, title="Length rvi", minval=1)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
offset = input.int(0, "Offset rvi", minval = -500, maxval = 500)


atrlength = input.int(19,title="Atr Length",minval=1)
ema1 =  input.int(95,title="Long EMA rapida",minval=1,step=10)
ema2 =  input.int(200,title="Long EMA lenta",minval=1,step=10)

atrSL = input.float(2.0,title="Atr SL", step=0.1)
atrTP = input.float(1.0,title="Atr TP", step=0.1)

atr = ta.atr(atrlength)
esalcista = low > ta.ema(close,ema1) and ta.ema(close,ema1) > ta.ema(close,ema2)
bajista = high < ta.ema(close,ema1) and ta.ema(close,ema1) < ta.ema(close,ema2)


//plot(high + atr)
//plot(low - atr)

//strategy.entry("compra",strategy.long, when=ta.crossover(rvi,sig))
//strategy.close("compra",when=ta.crossunder(rvi,sig))

//plot(rvi, color=#008000, title="RVGI", offset = offset)
//plot(sig, color=#FF0000, title="Signal", offset = offset)
//plotshape(true,style=shape.xcross)

var TP = 0.0
var SL = 0.0

comprado = strategy.position_size>0
vendido = strategy.position_size<0

crucepositivo = ta.crossover(rvi,sig)
crucenegativo = ta.crossunder(rvi,sig)

if comprado
    // ver SL
    if low < SL
        strategy.close("BUY",comment="SL")
        
        
if comprado    
    //ver tp
    if high > TP
        strategy.close("BUY",comment="TP")
        
       
    
    
    
if not comprado and not vendido
    if crucepositivo and esalcista
        strategy.entry("BUY",strategy.long)
        SL := low - (atr * atrSL)
        TP := high + (atr * atrTP)
        alert("BUY",alert.freq_once_per_bar)



//---------------

if vendido
    // ver SL
    if high > SL
        strategy.close("SELL",comment="SL")
        
        
if vendido    
    //ver tp
    if low < TP
        strategy.close("SELL",comment="TP")
        
       

if not vendido and not comprado
    if crucenegativo and bajista
        strategy.entry("SELL",strategy.short)
        SL := high + (atr * atrSL)
        TP := low - (atr * atrTP)
        alert("SELL",alert.freq_once_per_bar)







//----------------

//plotshape(comprado,style=shape.xcross)
plot( comprado ? SL : na, color=color.red,style=plot.style_circles)
plot( comprado ? TP : na, color=color.blue,style=plot.style_circles)

plot( ta.ema(close,ema1),color=color.orange)
plot( ta.ema(close,ema2),color=color.yellow)


plot( vendido ? SL : na, color=color.red,style=plot.style_circles)
plot( vendido ? TP : na, color=color.blue,style=plot.style_circles)