Estratégia de negociação de Bitcoin baseada em RVI e EMA


Data de criação: 2024-02-22 13:50:17 última modificação: 2024-02-22 13:50:17
cópia: 0 Cliques: 776
1
focar em
1617
Seguidores

Estratégia de negociação de Bitcoin baseada em RVI e EMA

Visão geral

A estratégia baseia-se em dois indicadores: RVI (Índice de Força Relativa) e EMA (Índice de Média Móvel do Índice). Ela permite que o RVI faça lucro, fazendo um aumento no EMA rápido acima do EMA lento, fazendo um corte no EMA lento acima do EMA rápido, realizando uma estratégia de negociação quantitativa baseada em tendências e sobrecompra e sobrevenda.

Princípio da estratégia

  1. O RVI é usado para determinar sobrecompra e sobrevenda. Quando o indicador RVI atravessa sua linha de sinal, faz mais para o sinal de sobrecompra; Quando o indicador RVI atravessa sua linha de sinal, faz espaço para o sinal de sobrevenda.

  2. Usar a dupla EMA para determinar a direção da tendência. Quando a EMA rápida está acima da EMA lenta, é uma tendência de baixa. Quando a EMA lenta está acima da EMA rápida, é uma tendência de baixa.

  3. A operação de multiplicação só é executada quando o RVI cede e a EMA julga que é pessimista; a operação de shorting só é executada quando o RVI cede e a EMA julga que é pessimista.

  4. O ponto de parada após o excesso está abaixo do ponto mais baixo mais recente*atrSL distância, paragem acima do ponto mais próximo de atr*atrTP distância; o stop loss após o shorting está acima do ponto mais próximo atr*atrSL distância, paragem abaixo do ponto mais baixo atr*atrTP distância

Análise de vantagens

  1. Combinando tendências com indicadores de sobrecompra e sobrevenda, evite falsas rupturas.

  2. O Stop Loss Stop Stop Dinâmico é útil para entender o que está acontecendo.

  3. Os sinais de negociação são precisos, levando em conta a qualidade da tendência e o grau de sobrecompra e sobrevenda.

  4. Os dados de detecção são abundantes, os parâmetros são otimizados e o disco rígido está funcionando bem.

Análise de Riscos

  1. Em mercados de grande amplitude, a tendência de avaliação da EMA muda com frequência e a frequência de negociação pode ser excessiva.

  2. Os parâmetros RVI e o ciclo EMA precisam ser otimizados para diferentes variedades de negociação, caso contrário, a eficácia da negociação pode ser pior.

  3. O coeficiente de suspensão de perdas também precisa ser razoavelmente ajustado de acordo com a volatilidade do mercado, caso contrário, o risco não pode ser efetivamente controlado.

Direção de otimização

  1. Pode-se considerar a inclusão de mais indicadores auxiliares para avaliar a qualidade da tendência, como o indicador de choque, o canal de linhas de Brin, etc., para que as decisões de negociação sejam mais precisas.

  2. Pode-se combinar um indicador de taxa de flutuação como o ATR para ajustar dinamicamente a distância de suspensão de parada, ampliando adequadamente a faixa de parada em caso de grande flutuação.

  3. Pode testar combinações de parâmetros para diferentes variedades, selecionando os melhores parâmetros e aumentando a estabilidade da estratégia.

Resumir

A estratégia combina os benefícios do RVI e do EMA para evitar o conflito de negociações, ao mesmo tempo em que leva em conta a direção da tendência geral para determinar a sobrevenda e a sobrevenda. O mecanismo de stop loss dinâmico é útil para entender a direção principal do mercado. Com a otimização dos parâmetros e o controle rigoroso do risco, a estratégia pode obter uma taxa de retorno do investimento mais estável.

Código-fonte da estratégia
/*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)