Stratégie combinée d'indicateurs croisés de moyenne mobile et d'inversion

Auteur:ChaoZhang est là., Date: 2023-12-13 15h20 et 20h20
Les étiquettes:

img

Résumé

Cette stratégie intègre la moyenne mobile, l'indice de force relative et l'indice de canal des matières premières, formant une stratégie de suivi de tendance et d'indicateur combinée relativement complète.

Principe de stratégie

  1. Utilisez hl2 pour calculer le prix moyen.

  2. Calculer l'indicateur CCI de 14 périodes pour juger de la tendance majeure. Lorsque le CCI est supérieur à 0, la tendance est à la hausse. Lorsque celui-ci est inférieur à 0, la tendance est à la baisse.

  3. Calculez la ligne rapide de l'indicateur RSI à 14 périodes et la ligne lente de l'indicateur RSI à 50 périodes. Lorsque la ligne rapide traverse au-dessus de la ligne lente, un signal d'achat est généré. Lorsque la ligne rapide traverse au-dessous de la ligne lente, un signal de vente est généré.

  4. Les signaux de négociation réels ne sont générés que lorsque l'indicateur CCI correspond également à la direction du signal de l'indicateur RSI. C'est-à-dire, achetez uniquement lorsque l'indicateur CCI est supérieur à 0 et que l'indicateur RSI traverse la ligne rapide au-dessus de la ligne lente, et vendez uniquement lorsque l'indicateur CCI est inférieur à 0 et que l'indicateur RSI traverse la ligne rapide au-dessous de la ligne lente.

  5. Comparer le prix avec la moyenne mobile de 14 périodes de hl2 pour aider à juger de la tendance mineure, afin d'éviter de fausses ruptures. Un signal d'achat n'est généré que lorsque le prix est supérieur à la moyenne mobile de 14 périodes de hl2 et que l'indicateur RSI croise vers le haut. Un signal de vente n'est généré que lorsque le prix est inférieur à la moyenne mobile de 14 périodes de hl2 et que l'indicateur RSI croise vers le bas.

Analyse des avantages

  1. Cette stratégie intègre le jugement de tendance et les signaux d'inversion pour entrer à temps après le début de la tendance, et utilise des indicateurs de signaux d'inversion pour déterminer les points de sortie, obtenant ainsi de meilleurs rendements.

  2. L'indice des canaux de marchandises détermine avec précision les grandes tendances, évitant ainsi de faire de mauvais choix de direction des transactions.

  3. Les croisements de lignes rapides et lents de l'indice de force relative servent de signaux favorables fiables, évitant le problème de retard des moyennes mobiles, et peuvent capturer en temps opportun les renversements de prix.

  4. La comparaison des prix avec les lignes médianes peut filtrer davantage les fausses ruptures qui provoquent des signaux erronés.

  5. Dans l'ensemble, cette stratégie présente une bonne stabilité et présente de bons résultats en cas de fortes tendances.

Analyse des risques

  1. Cette stratégie est sensible aux variétés commerciales, nécessitant une optimisation des paramètres pour des variétés spécifiques.

  2. Les paramètres tels que les moyennes mobiles à 14 périodes et les moyennes mobiles à 50 périodes doivent être ajustés en fonction des différents marchés.

  3. Le fait de s'appuyer uniquement sur l'ICC pour déterminer la direction de la tendance majeure n'est toujours pas suffisamment parfait, avec un certain retard.

  4. La combinaison d'indicateurs de signal d'inversion est relativement importante, ce qui peut conduire à un certain degré de sur-optimisation.

Directions d'optimisation

  1. Envisagez d'ajouter plus d'indicateurs pour juger des tendances majeures, telles que le DMI, l'ADX, etc., afin de rendre les jugements de tendance plus précis.

  2. Augmenter la logique de stop loss. Par exemple, après qu'un signal d'inversion apparaisse, si le prix revient à une certaine amplitude, une sortie de stop loss peut être considérée pour réduire les pertes.

  3. Optimiser les paramètres pour les rendre plus adaptés à des variétés de négociation spécifiques. Par exemple, augmenter le paramètre de cycle de la ligne lente, ou ajuster la méthode de calcul du prix moyen, etc.

  4. Construire une combinaison d'optimisation des paramètres pour sélectionner les paramètres optimaux pour différentes variétés, ce qui peut grandement améliorer l'applicabilité des stratégies.

  5. Ajouter des indicateurs de momentum pour éviter des signaux trompeurs lorsque le momentum est insuffisant.

Conclusion

Le cadre global de cette stratégie est complet, intégrant des indicateurs de jugement de tendance et d'inversion, qui peuvent théoriquement obtenir d'excellentes performances. Mais dans l'application réelle, il a encore besoin d'optimisation des paramètres et des modèles pour les variétés de trading afin de réduire le risque de surajustement.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
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/
// © SuchitRaju

//@version=4
strategy("MA RSI CCI")

price_up = if(close > open and close > sma(hl2,14))
    1
else
    0

price_down = if(open > close and close < sma(hl2,14))
    1
else
    0
// 

cci_indicator = cci(hl2, 14)
// plot(cci_indicator, color=color.blue)

rsi_slow = sma(rsi(close, 14), 50)
// plot(rsi_slow, color=color.red)

rsi_fast = rsi(close, 14)
// plot(rsi_fast, color=color.green)

isCrossover = if(rsi_fast > rsi_slow and cci_indicator > 0)
    1
else
    0
// plotshape(isCrossover, style = shape.arrowup, color = color.green, size = size.huge)

isCrossunder = if(rsi_fast < rsi_slow and cci_indicator < 0)
    1
else
    0
// plotshape(isCrossunder, style = shape.arrowup, color = color.red, size = size.huge)

// start = timestamp("GMT-5", 2016,9,1,0,0)
// end = timestamp("GMT-5", 2017,9,1,0,0)

// strategy.entry("Long", strategy.long, 1, when = isCrossover and price_up)
// strategy.entry("Short", strategy.short, 1, when = isCrossunder and price_down)
// strategy.close("Long", when = isCrossunder and price_down)
// strategy.close("Short", when = isCrossover and price_up)

strategy.entry("Long", strategy.long, 1, when = isCrossover)
strategy.entry("Short", strategy.short, 1, when = isCrossunder)
strategy.close("Long", when = isCrossunder)
strategy.close("Short", when = isCrossover)

Plus de