Analyse de la stratégie d'arbitrage de l'élan

Auteur:ChaoZhang est là., Date: 2023-10-25 11:10:59 Je suis désolé
Les étiquettes:

img

Nom de la stratégie

En fonction des caractéristiques clés de cette stratégie, je l'appelle Momentum Arbitrage Strategy.

II. Vue d'ensemble de la stratégie

Cette stratégie génère des signaux de négociation en calculant l'oscillateur de dynamique de Chande et en fixant des seuils supérieurs et inférieurs, formant des opportunités d'arbitrage pour les bénéfices.

III. La logique de la stratégie

Le code définit d'abord les paramètres Length, TopBand et LowBand, où Length représente le nombre de jours pour le calcul du momentum, et TopBand et LowBand représentent les seuils supérieur et inférieur.

Il calcule ensuite la dynamique absolue xMom sur les derniers jours de longueur, et la moyenne mobile simple de xMom sur les jours de longueur, xSMA_mom.

Après cela, il calcule le momentum cumulé sur les jours de longueur, xMomLength.

Ensuite, il calcule l'oscillateur de momentum nRes, qui est égal à xMomLength divisé par xSMA_mom puis multiplié par Length, amplifié par 100.

Sur la base de la comparaison entre nRes et les seuils, il détermine la direction longue ou courte et la stocke en pos.

Enfin, il ajuste le pos en fonction de l'activation du reverse trading, génère un signal de trading possig et crée des entrées longues/courtes.

IV. Points forts de la stratégie

  1. Identifier les points tournants potentiels de la tendance à l'aide de l'indicateur de dynamique, ce qui favorise la capture de tendance.

  2. Former des signaux longs/courts clairs combinés à un filtrage des seuils, évitant ainsi de faire de mauvais trades.

  3. Appliquer une logique de négociation inverse pour obtenir des opportunités d'inversion.

  4. Grand espace de paramètres réglable, peut être optimisé pour différents produits et délais.

  5. Les paramètres visualisés sont intuitifs, faciles à comprendre la logique de trading.

V. Risques stratégiques

  1. Il ne faut considérer que la dynamique, peut manquer des opportunités formées par d'autres indicateurs techniques.

  2. La rupture de l'élan ne représente pas nécessairement un renversement de tendance, il existe un risque de mauvais jugement.

  3. Bien que le reverse trading ait un potentiel de profit, il peut aussi amplifier les pertes.

  4. L'optimisation incorrecte des paramètres peut entraîner une survente ou une absence des meilleurs points d'entrée.

  5. Il faut filtrer les distorsions de momentum causées par des événements soudains.

Les risques peuvent être contrôlés en combinant d'autres indicateurs tels que la tendance et la volatilité pour confirmer la fiabilité du signal, en ajustant les paramètres pour réduire la fréquence des transactions, en assoupissant correctement le stop loss, etc.

VI. Directions de l'optimisation de la stratégie

  1. Ajouter d'autres filtres d'indicateurs techniques pour améliorer la précision du signal.

Confirmez que le prix de clôture est supérieur au système de moyenne mobile ou que la volatilité est dans la plage normale avant de déclencher les signaux de dynamique.

  1. Optimiser les paramètres en fonction des caractéristiques du produit.

Pour les produits plus volatils, assouplir la plage de seuil normale pour réduire la fréquence des échanges.

  1. Optimisation de plusieurs délais basée sur différentes périodes.

Utilisez une durée de période plus courte pour les transactions intradiennes à très court terme.

  1. Réglez la condition de divergence inférieure.

Pour les signaux d'achat, exigez que le prix soit au-dessus du creux précédent pour éviter de faux signaux d'inversion.

VII. Conclusion

La stratégie identifie principalement les renversements de tendance à court terme à travers l'indicateur de dynamique, avec un filtrage de paramètres pour générer des signaux commerciaux, un suivi de la tendance d'équilibrage et une capture du renversement.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
pos = iff(nRes > TopBand, 1,
	   iff(nRes <= LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
         iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue)
plot(nRes, color=blue, title="CMO")

Plus de