Cette stratégie est une stratégie de trading de tendance basée sur des moyennes mobiles. Elle utilise 3 moyennes mobiles avec des paramètres différents pour générer des signaux de trading. Elle va long lorsque le prix dépasse la moyenne mobile et va court lorsque le prix dépasse la moyenne mobile.
La stratégie calcule la moyenne mobile ma avec la longueur len à l'aide de la fonction sma. Elle calcule ensuite 3 lignes moyennes mobiles supplémentaires longline1, longline2, longline3 qui sont déplacées respectivement de -4%, -5%, -6% sur la base de ma.
Pour la génération de signaux longs, si la position actuelle est plate, elle va long avec 1 lot lorsque le prix traverse au-dessus de la longline1. Si déjà 1 lot long, elle ajoute 1 lot de plus lorsque le prix traverse au-dessus de la longline2. Si déjà 2 lots long, elle ajoute 1 lot de plus lorsque le prix traverse au-dessus de la longline3. La position longue maximale est de 3 lots.
Pour la génération de signaux courts, s'il est déjà long, il sort de toutes les positions longues lorsque le prix dépasse ma.
L'entrée par étapes permet à la stratégie de suivre la tendance.
Solution au risque:
La stratégie peut être optimisée dans les aspects suivants:
Ajouter d' autres indicateurs comme le MACD pour déterminer la force de la tendance
Optimiser les paramètres de moyenne mobile pour trouver la meilleure combinaison
Ajustez la taille et le rapport des lots d'entrée par étapes pour éviter de poursuivre des prix élevés
Ajouter un mécanisme de stop loss en mouvement basé sur ATR
Ajuster dynamiquement la taille de la position en fonction de la volatilité du marché, réduire la taille lorsque la volatilité est élevée
Paramètres d'essai sur différents produits pour trouver le symbole optimal
Développer un module de sortie pour envisager de tirer profit de certains modèles
Dans l'ensemble, la stratégie se base sur la direction de la tendance déterminée par les moyennes mobiles et les bénéfices des tendances via des entrées par étapes. Mais elle présente des problèmes de retard et des risques de poursuite de prix élevés. Nous pouvons l'optimiser en ajoutant des indicateurs auxiliaires, en optimisant les paramètres, en ajustant la taille de la position, en ajoutant un stop loss, etc., pour nous adapter aux différentes conditions du marché et obtenir des bénéfices stables.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Lenghs") src = input(ohlc4, title = "MA Source") longlevel1 = input(-4.0, title = "Long line 1") longlevel2 = input(-5.0, title = "Long line 2") longlevel3 = input(-6.0, title = "Long line 3") needoffset = input(true, title = "Offset") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult //Lines offset = needoffset ? 1 : 0 plot(ma, color = color.blue) plot(longline1, offset = offset, color = color.lime) plot(longline2, offset = offset, color = color.lime) plot(longline3, offset = offset, color = color.lime) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2)) if size > 0 strategy.entry("TP", strategy.short, 0, limit = ma)