La stratégie du double momentum utilise des indicateurs de momentum rapides et lents pour générer des signaux d'entrée et de sortie.
La stratégie permet de configurer le mode long/short ou long-only. Elle permet également d'activer le stop loss fixe ou de l'ignorer de sorte que la stratégie agit uniquement sur les signaux d'entrée et de sortie.
La stratégie utilise une dynamique de période rapide (défaut de 5 jours) et une dynamique de période lente (défaut de 10 jours).
Lorsque le momentum lent et le momentum rapide sont tous deux supérieurs à 0, un signal d'entrée long est généré.
Lorsque le momentum lent ou le momentum rapide descend en dessous de 0, un signal de sortie est généré.
De même, lorsque le momentum lent et le momentum rapide sont tous deux inférieurs à 0, un signal d'entrée court est généré.
Ainsi, la stratégie capte les changements de tendance en utilisant le croisement de deux indicateurs de dynamique avec des périodes différentes.
L'utilisation d'un double momentum permet une détection plus précise des changements de tendance et moins de faux signaux.
La dynamique de la période rapide réagit rapidement aux changements du marché, tandis que la période lente filtre le bruit.
Les modes long/short flexibles ou uniquement longs conviennent aux différentes préférences commerciales.
Le risque est contrôlé par un stop-loss facultatif.
La nature de réaction rapide le rend approprié pour le trading de tendance sur des délais quotidiens ou plus longs pour des gains démesurés.
Le double momentum repose sur des valeurs d'indicateur supérieures/inférieures à 0, qui présentent un certain décalage.
La stratégie est plus dépendante de la tendance et peut être moins performante sur les marchés à fourchette avec plus de fléchettes.
Ne pas utiliser le stop loss risque de faire de grosses pertes.
Un mauvais choix de symboles ou de délais peut entraîner de mauvais résultats.
Pour contrôler les risques, ajustez les périodes d'élan, utilisez un pourcentage de stop loss fixe raisonnable, sélectionnez des symboles fortement tendance et exécutez sur des délais quotidiens ou plus élevés.
La stratégie peut être améliorée de plusieurs façons:
Ajoutez des filtres tels que MACD ou RSI pour éviter les mauvais échanges aux points tournants de la tendance.
Ajouter une perte d'arrêt adaptative pour ajuster la distance d'arrêt en fonction de la volatilité du marché.
Optimiser les paramètres de l'élan pour différents symboles par l'optimisation par étapes, l'analyse progressive, etc.
Ajouter des règles de dimensionnement des positions pour ajuster la nouvelle taille des positions en fonction des performances passées.
Différencier les conditions de marché longues et courtes pour les entrées et sorties asymétriques.
La stratégie du double élan capture la direction de la tendance en utilisant un croisement de momentum rapide et lent. Utilisant des indicateurs simples pour détecter les changements de tendance, elle est adaptée à la conduite des tendances intradiennes ou multi-jours et à la génération de rendements excédentaires. Un bon contrôle du risque via un stop loss, une optimisation du symbole / paramètre peut améliorer la cohérence.
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © QuantCT //@version=4 strategy("Momentum Strategy Idea", shorttitle="Momentum", overlay=false, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_type=strategy.commission.percent, commission_value=0.075) // ____ Inputs fast_period = input(title="Fast Period", defval=5) slow_period = input(title="Slow Period", defval=10) long_only = input(title="Long Only", defval=false) slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0) use_sl = input(title="Use Stop-Loss", defval=false) // ____ Logic mom_fast = mom(close, fast_period) mom_slow = mom(close, slow_period) enter_long = (mom_slow > 0 and mom_fast > 0) exit_long = (mom_slow < 0 or mom_fast < 0) enter_short = (mom_slow < 0 and mom_fast < 0) exit_short = (mom_slow > 0 or mom_fast > 0) strategy.entry("Long", strategy.long, when=enter_long) strategy.close("Long", when=exit_long) if (not long_only) strategy.entry("Short", strategy.short, when=enter_short) strategy.close("Short", when=exit_short) // ____ SL sl_long = strategy.position_avg_price * (1- (slp/100)) sl_short = strategy.position_avg_price * (1 + (slp/100)) if (use_sl) strategy.exit(id="SL", from_entry="Long", stop=sl_long) strategy.exit(id="SL", from_entry="Short", stop=sl_short) // ____ Plots colors = enter_long ? #27D600 : enter_short ? #E30202 : color.orange mom_fast_plot = plot(mom_fast, color=colors) mom_slow_plot = plot(mom_slow, color=colors) fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)