Stratégie de négociation quantitative basée sur un indicateur de vortex amélioré

Auteur:ChaoZhang est là., Date: 2023-11-14 14:40:54 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est une version améliorée de la stratégie de l'indicateur de vortex. Basée sur l'indicateur de vortex d'origine, elle intègre plusieurs nouvelles fonctionnalités, y compris le déclenchement des transactions basées sur le seuil, l'assouplissement des lignes de vortex avec l'EMA, l'ajout de stop loss et de profit, la mise en œuvre de stratégies longues, courtes ou longues / courtes, etc. Elle convient aux investisseurs qui souhaitent appliquer l'indicateur de vortex amélioré dans le trading quantitatif.

Principaux

L'indicateur de vortex traditionnel forme des lignes de vortex positives et négatives en calculant la somme absolue des fluctuations de prix. Lorsque la ligne positive traverse au-dessus de la ligne négative, elle envoie un signal d'achat. Lorsque la ligne négative traverse en dessous de la ligne positive, elle envoie un signal de vente.

Cette stratégie apporte les améliorations suivantes à l'indicateur de vortex traditionnel:

  1. Au lieu de se fier uniquement aux croisements de lignes, il introduit le concept de seuil. Les transactions ne sont déclenchées que lorsque l'écart entre les lignes positives et négatives dépasse un seuil prédéfini. Cela aide à filtrer les petits croisements insignifiants.

  2. Les lignes de vortex sont lissées avec de l'EMA pour réduire les tremblements de courbe.

  3. Des fonctionnalités de stop loss et de take profit sont ajoutées.

  4. Les traders peuvent choisir entre des stratégies longues uniquement, courtes uniquement ou longues/courtes pour répondre à différents besoins.

Grâce à ces améliorations, la stratégie peut détecter les tendances de manière plus fiable et se débrouille bien dans les backtests.

Analyse des avantages

  1. L'indicateur de vortex amélioré filtre les signaux non valides et évite les fausses pauses.

  2. L'utilisation de seuil pour les signaux au lieu de simples croisements peut détecter plus fiablement les points d'inversion de tendance.

  3. Les caractéristiques stop loss/take profit permettent de préétablir des ratios profit/perte pour contrôler les risques pour chaque transaction, conformément aux principes de négociation rationnelle.

  4. Le choix entre le long-only, le short-only ou le long/short offre une flexibilité pour s'adapter aux différentes étapes du marché et répondre aux besoins des différents opérateurs.

  5. La stratégie comporte des paramètres bien conçus et de bons résultats de backtest, ce qui lui confère une valeur pratique.

Analyse des risques

  1. La stratégie fonctionne principalement pour les marchés en tendance.

  2. Les lignes vortex sont intrinsèquement sensibles aux fluctuations de prix.

  3. Si le seuil est trop élevé, il peut manquer les transactions.

  4. Les traders doivent être attentifs à ce risque.

Directions d'optimisation

  1. Considérez la combinaison avec d'autres indicateurs pour une confirmation du signal et des jugements plus complets.

  2. Testez la sensibilité des paramètres sur différents stocks et optimisez les paramètres.

  3. Rechercher des techniques de stop loss adaptatives pour ajuster les arrêts le long de la tendance principale.

  4. Introduire l'apprentissage automatique, etc. pour optimiser automatiquement les paramètres.

  5. Examiner les méthodes d'indexation basées sur cette stratégie pour élargir la capacité.

Conclusion

Cette stratégie apporte de multiples améliorations par rapport à l'indicateur de vortex traditionnel et constitue un système de trading quantitatif relativement mature et fiable. Combinant le filtrage des tendances et le contrôle des risques, elle évite les risques de surentraînement des transactions dispersées et utilise les capacités de capture des tendances de l'indicateur lui-même. Avec une optimisation des paramètres et des techniques de combinaison, la stratégie peut être rendue plus stable et réactive.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Plus de