Strategi ini didasarkan pada indikator RVI (Relative Vigor Index) dan EMA (Exponential Moving Average).
Gunakan RVI untuk menilai kondisi overbought dan oversold. Ketika garis indikator RVI melintasi di atas garis sinyalnya, itu adalah sinyal overbought untuk pergi panjang. Ketika garis RVI melintasi di bawah garis sinyalnya, itu adalah sinyal oversold untuk pergi pendek.
Gunakan EMA ganda untuk menentukan arah tren. Ketika EMA cepat di atas EMA lambat, itu adalah tren bullish. Ketika EMA lambat di atas EMA cepat, itu adalah tren bearish.
Hanya pergi panjang ketika RVI memberikan sinyal masuk dan EMA menunjukkan tren bullish. Hanya pergi pendek ketika RVI memberikan sinyal masuk dan EMA menunjukkan tren bearish.
Stop loss setelah pergi panjang diatur di bawah terendah baru-baru ini dengan jarak atratrSL, dan mengambil keuntungan ditetapkan di atas tinggi baru-baru ini dengan jarak atrAtrTP. Stop loss setelah pergi pendek diatur di atas tinggi baru-baru ini dengan jarak atratrSL, dan mengambil keuntungan ditetapkan di bawah terendah baru-baru ini dengan jarak atratrTP.
Menggabungkan indikator tren dan oversold overbought menghindari false breakout.
Stop loss dan take profit yang dinamis membantu menangkap gerakan besar.
Mengimbangi kualitas tren dan tingkat overbought/oversold, meningkatkan akurasi sinyal.
Pengujian backtesting yang luas, parameter yang dioptimalkan, kinerja perdagangan yang baik.
Perubahan tren yang sering dinilai oleh EMA selama pasar berkisar dapat menyebabkan overtrading.
Parameter RVI dan periode EMA perlu dioptimalkan untuk instrumen perdagangan yang berbeda, jika tidak, kinerja dapat terganggu.
Koefisien stop loss dan take profit harus ditetapkan secara wajar berdasarkan volatilitas pasar, jika tidak risiko tidak dapat dikendalikan secara efektif.
Lebih banyak indikator menilai kualitas tren dapat ditambahkan, seperti osilator, Bollinger Bands dll, untuk membuat keputusan perdagangan lebih tepat.
Jarak stop loss/take profit dapat disesuaikan secara dinamis berdasarkan ukuran volatilitas seperti ATR, memungkinkan stop yang lebih luas selama periode volatilitas tinggi.
Kombinasi parameter dapat diuji dan dioptimalkan secara terpisah untuk instrumen yang berbeda untuk meningkatkan ketahanan strategi.
Strategi ini menggabungkan kekuatan indikator RVI dan EMA, menilai tingkat overbought/oversold sambil menghormati arah tren utama, menghindari perdagangan yang bertentangan. Mekanisme stop loss/take profit dinamis membantu menangkap pergerakan dalam arah tren utama. Melalui optimasi parameter dan kontrol risiko yang ketat, strategi ini dapat mencapai pengembalian yang relatif stabil. Masih ada ruang untuk penyesuaian dan optimasi lebih lanjut dalam aplikasi perdagangan nyata. Pedagang dapat membuat modifikasi khusus berdasarkan preferensi risiko dan karakteristik instrumen mereka sendiri.
/*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)