Stratégie de suivi des tendances à plusieurs indicateurs

Auteur:ChaoZhang est là., Date: 23 février 2023
Les étiquettes:

Résumé

Cette stratégie intègre plusieurs indicateurs pour l'identification des tendances et génère des signaux de trading basés sur des changements de direction alignés.

La logique de la stratégie

Les principaux indicateurs sont les suivants:

  1. Vitesse moyenne mobile: reflète la dynamique des prix.

  2. STOCH: survendu/suracheté pour les changements de tendance.

  3. MACD: Changements de tendance à partir de moyennes mobiles doubles.

Les règles de négociation sont les suivantes:

  1. Une vitesse moyenne mobile plus élevée donne un signal haussier.

  2. STOCH dans la zone de surachat donne un signal baissier.

  3. Le croisement positif du MACD donne un signal haussier.

  4. Saisissez le nombre de fois où les deux indicateurs s'alignent.

  5. Sortez lorsque les signaux des indicateurs changent.

La combinaison évalue la tendance à partir de plusieurs dimensions, filtrant le bruit pour les signaux à forte conviction.

Les avantages

Comparée aux indicateurs uniques, la stratégie combinée présente les avantages suivants:

  1. La vue combinée améliore la précision.

  2. Le filtrage d'ensemble réduit les faux signaux.

  3. Inclut les indicateurs de tendance et d'inversion moyenne.

  4. Les signaux alignés ont une grande conviction, évitant de fausses fuites.

  5. Des règles simples et claires, faciles à mettre en œuvre.

  6. Un réglage flexible des paramètres, une robustesse.

  7. Applicable à différentes périodes.

  8. Peut entraîner les poids d'indicateur avec l'apprentissage automatique.

  9. La stabilité et la rentabilité sont globalement meilleures que pour les indicateurs individuels.

Les risques

Malgré les avantages, les risques à prendre en considération sont les suivants:

  1. Augmentation de la complexité avec plusieurs indicateurs.

  2. Optimisation et pondération de paramètres difficiles.

  3. Des signaux d'indicateur contradictoires peuvent apparaître.

  4. Il y a toujours un certain retard, on ne peut pas éviter toutes les pertes.

  5. Période d'attente unidirectionnelle incertaine avec facteur de chance.

  6. Les signaux d'ensemble ne peuvent pas éliminer les risques inhérents au trading de tendance.

  7. La fréquence élevée des échanges augmente les coûts de transaction.

  8. Il faut surveiller les rapports bénéfice/risque.

Améliorations

Sur la base de l'analyse, les améliorations peuvent inclure:

  1. Évaluer l'efficacité des indicateurs sur différents marchés.

  2. Ajouter des contrôles de robustesse des paramètres pour éviter le surajustement.

  3. Optimiser la pondération des indicateurs pour réduire les conflits.

  4. Mettre en place des arrêts pour limiter les pertes graves.

  5. Utilisez les sorties de temps pour contrôler les périodes de détention illimitées.

  6. Évaluer l'impact de la fréquence des transactions sur les coûts de transaction.

  7. Incorporer des contraintes de mesure du risque.

  8. Testez la robustesse sur plusieurs marchés.

  9. Valider en permanence l'efficacité de la stratégie.

Conclusion

Cette stratégie forme des signaux d'ensemble stables en intégrant plusieurs indicateurs pour l'évaluation de la tendance. Mais l'optimisation continue est la clé de toute stratégie, la surveillance des risques et la prévention du surajustement.


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// By TradeStation
//@version=5

strategy("Mov Avg Speed Strategy", overlay=true)

src = input(close, title="Source")

// MA Speed  
avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed")
roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed")
avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed")

// Stochastic
stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic")
smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic")
overbought = input.float(80, title="Stochastic Overbought", group="Stochastic")
oversold = input.float(20, title="Stochastic Oversold", group="Stochastic")

// MACD
fast_length = input(12, title="Fast Length", group="MACD")
slow_length = input(26, title="Slow Length", group="MACD")
macd_avg_length = input.int(9, title="MACD Avg Length",  minval=1, group="MACD")

// MA Speed
avg = ta.sma(src, avg_len)
roc = ta.roc(avg, roc_len)
avg_roc = ta.sma(roc, avg_roc_len)
avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 

// Stochastic k
k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k)
stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0

// MACD
fast_ma = ta.ema(src, fast_length)
slow_ma = ta.ema(src, slow_length)
macd = fast_ma - slow_ma
macd_avg = ta.ema(macd, macd_avg_length)
macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0

// set the signal couint
long_count = 0
short_count = 0

if macd_signal == 1
    long_count += 1

else if macd_signal == -1
    short_count += 1
 
if stochastic_signal == 1
    long_count += 1

else if stochastic_signal == -1
    short_count += 1
 
if avg_roc_signal == 1
    long_count += 1

else if avg_roc_signal == -1
    short_count += 1

if (long_count >= 2)
    strategy.entry("Long", strategy.long)

if (short_count >= 2)
    strategy.entry("Short", strategy.short)

Plus de