Stratégie de trading Bitcoin basée sur RVI et EMA


Date de création: 2024-02-22 13:50:17 Dernière modification: 2024-02-22 13:50:17
Copier: 0 Nombre de clics: 776
1
Suivre
1617
Abonnés

Stratégie de trading Bitcoin basée sur RVI et EMA

Aperçu

La stratégie est basée sur deux indicateurs: le RVI (indice de force relative) et l’EMA (moyenne mobile de l’indice). Elle permet d’effectuer une stratégie de négociation quantitative basée sur la tendance et sur les sur-achats et les sur-ventes, en faisant des gains sur les EMA rapides au cours de la période de concession du RVI, et des pertes sur les EMA rapides au cours de la période de concession des EMA rapides.

Principe de stratégie

  1. Utilisez le RVI pour juger de la situation de survente. Faites plus pour le signal de survente lorsque vous traversez la ligne de signal sur la ligne de l’indicateur RVI; faites plus pour le signal de survente lorsque vous traversez la ligne de signal sous la ligne de l’indicateur RVI.

  2. Utilisez les deux EMA pour déterminer la direction de la tendance. Lorsque l’EMA rapide est au-dessus de l’EMA lente, c’est une tendance à la hausse.

  3. La multiplication n’est effectuée que lorsque le RVI est favorable et que l’EMA le juge négatif; la dépréciation n’est effectuée que lorsque le RVI est favorable et que l’EMA le juge négatif.

  4. le stop loss après avoir fait plus est au-dessous du plus bas récentatr*la distance atrSL, l’arrêt est situé au-dessus du point le plus élevé atr*la distance atrTP; le stop-loss après le short est situé au-dessus du plus haut récent atr*la distance atrSL, l’arrêt est situé au-dessous du point le plus bas*La distance est de ∂rTP.

Analyse des avantages

  1. Le nombre de fausses ruptures a été réduit à un chiffre d’affaires annuel de 2,1 millions d’euros.

  2. Le stop-loss dynamique est utile pour avoir une meilleure compréhension de la situation.

  3. Les signaux de transaction sont précis, tout en tenant compte de la qualité de la tendance et de la sur-achat/sur-vente.

  4. Les données de détection sont suffisantes, les paramètres sont optimisés et le disque fonctionne bien.

Analyse des risques

  1. Dans les marchés à forte volatilité, les jugements de l’EMA changent fréquemment et la fréquence des transactions peut être trop élevée.

  2. Les paramètres RVI et les cycles EMA doivent être optimisés pour les différentes variétés de transactions, sinon l’efficacité des transactions peut être médiocre.

  3. Le coefficient d’arrêt de perte doit également être raisonnablement ajusté en fonction de la volatilité du marché, sans quoi il est impossible de contrôler efficacement le risque.

Direction d’optimisation

  1. L’ajout d’indicateurs auxiliaires, tels que l’indicateur de choc, le canal de la ligne de Brin, etc., peut être envisagé pour rendre les décisions de négociation plus précises.

  2. Il est possible de combiner des indicateurs de volatilité tels que l’ATR pour ajuster dynamiquement la distance d’arrêt de perte et élargir la plage d’arrêt de manière appropriée en cas de forte volatilité.

  3. Les combinaisons de paramètres peuvent être testées pour différentes variétés, afin de choisir les meilleurs paramètres et d’améliorer la stabilité de la stratégie.

Résumer

La stratégie combine les avantages de l’indicateur RVI et de l’indicateur EMA, en tenant compte de la direction de la tendance générale tout en jugeant les surachats et les survente, pour éviter les transactions conflictuelles. Le mécanisme de stop-loss dynamique est propice à la prise de conscience de la direction principale de la tendance. Après optimisation des paramètres et un contrôle strict du risque, la stratégie peut obtenir un rendement relativement stable.

Code source de la stratégie
/*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)