Estrategia de trading de Bitcoin basada en RVI y EMA


Fecha de creación: 2024-02-22 13:50:17 Última modificación: 2024-02-22 13:50:17
Copiar: 0 Número de Visitas: 776
1
Seguir
1617
Seguidores

Estrategia de trading de Bitcoin basada en RVI y EMA

Descripción general

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.

Principio de estrategia

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Análisis de las ventajas

  1. La combinación de la tendencia y el indicador de sobrecompra y sobreventa evita falsas rupturas.

  2. La suspensión de pérdidas y pérdidas dinámicas es útil para entender el mercado.

  3. La calidad de la tendencia y el grado de sobrecompra y sobreventa, las señales de negociación son precisas.

  4. Los datos de detección son abundantes, los parámetros se optimizan y el disco duro funciona bien.

Análisis de riesgos

  1. 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.

  2. 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.

  3. 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.

Dirección de optimización

  1. 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.

  2. 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.

  3. Se pueden probar combinaciones de parámetros para diferentes variedades, seleccionar los mejores parámetros y mejorar la estabilidad de la estrategia.

Resumir

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.

Código Fuente de la Estrategia
/*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)