
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.
Gunakan RVI untuk menilai overbought dan oversold. Lakukan overbought saat melewati garis sinyal RVI; kosongkan oversold saat melewati garis sinyal RVI.
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.
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.
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
Dengan menggunakan indikator overbought dan oversold, kita bisa menghindari false breakout.
Stop Loss Stop Stop Dinamis, yang membantu untuk memahami situasi yang lebih besar.
Selain itu, ada juga beberapa indikator yang dapat digunakan untuk menentukan harga yang akan dipasarkan.
Data pengetesan cukup, parameter yang dioptimalkan, kinerja yang baik dari hard disk.
Dalam pasar yang bergejolak besar, EMA menilai tren yang sering berubah, dan frekuensi perdagangan mungkin terlalu tinggi.
Parameter RVI dan siklus EMA perlu dioptimalkan untuk varietas perdagangan yang berbeda, jika tidak, efektivitas perdagangan mungkin lebih buruk.
Stop loss juga harus diatur secara rasional berdasarkan volatilitas pasar, jika tidak, risiko tidak dapat dikontrol secara efektif.
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.
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.
Kombinasi parameter dapat diuji untuk varietas yang berbeda, memilih parameter terbaik, meningkatkan stabilitas strategi.
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.
/*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)