Strategi perdagangan Bitcoin berdasarkan RVI dan EMA


Tarikh penciptaan: 2024-02-22 13:50:17 Akhirnya diubah suai: 2024-02-22 13:50:17
Salin: 0 Bilangan klik: 776
1
fokus pada
1617
Pengikut

Strategi perdagangan Bitcoin berdasarkan RVI dan EMA

Gambaran keseluruhan

Strategi ini dibina berdasarkan dua petunjuk RVI (Indeks Kekuatan Relatif) dan EMA (Indeks Rata-rata Bergerak Indeks). Ia membuat keuntungan pada RVI, melakukan lebih banyak pada EMA pantas di atas EMA perlahan, melakukan shorting pada EMA perlahan di atas EMA pantas, mewujudkan strategi perdagangan kuantitatif berdasarkan trend dan overbought oversold.

Prinsip Strategi

  1. Menggunakan RVI untuk menilai keadaan overbought dan oversold. Apabila garis penunjuk RVI melintasi garis isyaratnya, buat lebih banyak untuk isyarat overbought; Apabila di bawah garis penunjuk RVI melintasi garis isyaratnya, buat kosong untuk isyarat oversold.

  2. Menggunakan EMA ganda untuk menentukan arah trend. Apabila EMA cepat berada di atas EMA perlahan, ia adalah trend bullish. Apabila EMA perlahan berada di atas EMA cepat, ia adalah trend bearish.

  3. Hanya apabila RVI membenarkan keuntungan dan EMA menilai ia sebagai bearish, maka dilakukan operasi lebih banyak; hanya apabila RVI membenarkan keuntungan dan EMA menilai ia sebagai bearish, maka dilakukan operasi short term.

  4. Hentikan kerugian selepas melakukan lebih banyak berada di bawah titik terendah terkini atr*Jarak atrSL, penamat terletak di atas titik tertinggi yang paling dekat*jarak atrTP; stop loss selepas melakukan shorting terletak di atas titik tertinggi terkini*jarak atrSL, stop di bawah titik terendah terkini*jarak atrTP

Analisis kelebihan

  1. Menggabungkan trend dengan indikator overbought dan oversold untuk mengelakkan false breakout.

  2. Ia juga boleh digunakan untuk memantau pergerakan pergerakan dalam pasaran.

  3. Ia adalah satu-satunya cara untuk memastikan bahawa tanda-tanda perdagangan tepat, mempertimbangkan kualiti trend dan tahap overbought dan oversold.

  4. Data pengesanan mencukupi, parameter telah dioptimumkan, dan cakera berfungsi dengan baik.

Analisis risiko

  1. Dalam pasaran yang bergolak, penilaian EMA akan berubah dengan kerap, dan frekuensi dagangan mungkin terlalu tinggi.

  2. Parameter RVI dan kitaran EMA perlu dioptimumkan mengikut jenis perdagangan yang berbeza, jika tidak, keberkesanan perdagangan mungkin lebih buruk.

  3. Faktor henti rugi juga perlu disesuaikan dengan ketidaktentuan pasaran, jika tidak, risiko tidak dapat dikawal dengan berkesan.

Arah pengoptimuman

  1. Anda boleh mempertimbangkan untuk memasukkan lebih banyak penunjuk tambahan untuk menilai kualiti trend, seperti penunjuk gegaran, saluran garis Brin, dan sebagainya, untuk membuat keputusan perdagangan yang lebih tepat.

  2. Ia boleh digabungkan dengan penunjuk kadar turun naik seperti ATR untuk menyesuaikan jarak hentian hentian secara dinamik, dan meluaskan julat hentian hentian dengan sewajarnya apabila turun naik besar.

  3. Kombinasi parameter boleh diuji untuk pelbagai jenis, memilih parameter terbaik, meningkatkan kestabilan strategi.

ringkaskan

Strategi ini menggabungkan kelebihan RVI dan EMA untuk menilai overbought dan oversold, serta mempertimbangkan arah trend besar, dan mengelakkan perdagangan konflik. Sistem stop loss dinamik membantu untuk memahami arah utama pasaran. Dengan pengoptimuman parameter dan kawalan risiko yang ketat, strategi ini dapat memperoleh kadar pulangan pelaburan yang lebih stabil.

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