
La estrategia se basa en dos indicadores: el RVI (indice de fuerza relativa) y el EMA (medios móviles del índice). Se realiza una estrategia de negociación cuantitativa basada en tendencias y sobrecompras sobrevendidas en el RVI, con ganancias en el EMA rápido por encima del EMA lento, y en el EMA lento por encima del EMA rápido.
Utiliza el RVI para determinar sobreventa y sobreventa. Cuando el indicador RVI cruza su línea de señal, hace más para la señal de sobreventa; cuando el indicador RVI cruza su línea de señal, hace espacio para la señal de sobreventa.
Utilice el doble EMA para determinar la dirección de la tendencia. Cuando el EMA rápido está por encima del EMA lento es una tendencia alcista, y cuando el EMA lento está por encima del EMA rápido es una tendencia bajista.
Solo se realiza una operación de plusvalía cuando el RVI concede un beneficio y la EMA lo determina como positivo; solo se realiza una operación de descubierto cuando el RVI concede un beneficio y la EMA lo determina como negativo.
El límite de pérdidas después de hacer más está por debajo de los mínimos más recientesatr*atrSL la distancia, la barrera se encuentra por encima de la altura más cercanaatr*atrTP distancia; el stop loss después de la desvalorización está por encima del punto más alto más recienteatr*atrSL la distancia, la parada está por debajo del punto más bajo*La distancia atrTP.
La combinación de la tendencia y el indicador de sobrecompra y sobreventa evita falsas rupturas.
La suspensión de pérdidas y pérdidas dinámicas es útil para entender el mercado.
La calidad de la tendencia y el grado de sobrecompra y sobreventa, las señales de negociación son precisas.
Los datos de detección son abundantes, los parámetros se optimizan y el disco duro funciona bien.
En un mercado con grandes fluctuaciones, las tendencias de los juicios de la EMA cambian con frecuencia y la frecuencia de las operaciones puede ser demasiado alta.
Los parámetros RVI y el ciclo EMA deben optimizarse para las diferentes variedades de transacciones, de lo contrario, la efectividad de las transacciones puede ser inferior.
El factor de parada de pérdidas también debe ajustarse razonablemente en función de la volatilidad del mercado, de lo contrario no se puede controlar el riesgo de manera efectiva.
Se puede considerar la inclusión de más indicadores auxiliares para determinar la calidad de la tendencia, como el indicador de la oscilación, el canal de la línea de Bryn, etc., para que las decisiones de negociación sean más precisas.
Se puede combinar con un indicador de volatilidad como ATR para ajustar dinámicamente la distancia de parada de pérdidas y ampliar adecuadamente el rango de pérdidas en caso de grandes fluctuaciones.
Se pueden probar combinaciones de parámetros para diferentes variedades, seleccionar los mejores parámetros y mejorar la estabilidad de la estrategia.
La estrategia combina las ventajas del indicador RVI y el indicador EMA, al mismo tiempo que toma en cuenta la dirección de la tendencia general para determinar la sobrecompra y la sobreventa, evitando el conflicto de operaciones. El mecanismo dinámico de stop loss es favorable para comprender la dirección principal de la situación. Después de la optimización de los parámetros y el control estricto del riesgo, la estrategia puede obtener un rendimiento de inversión más estable.
/*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)