Système de balance des tendances de Welles Wilder

Auteur:ChaoZhang est là., Date: 23 septembre 2023 à 15h30
Les étiquettes:

Résumé

Il s'agit du système de point de balance de tendance original créé par Welles Wilder en 1978, avec des règles trouvées dans son livre New Concepts in Technical Trading Systems.

La logique de la stratégie

Les principales composantes et règles sont les suivantes:

  1. Indicateur de dynamique: Calcule la variation des prix sur N périodes pour déterminer la tendance.

  2. Condition longue: dynamique croissante sur les deux périodes actuelles et précédentes.

  3. Condition courte: baisse de l'élan au cours de la période en cours et des deux périodes précédentes.

  4. Stop loss: prix moyen de la journée précédente ± fourchette de la journée précédente.

  5. Profit: 2 * prix moyen de la journée précédente - bas (long) ou haut (short) de la journée précédente.

  6. Sorties avec arrêt ou cible après entrée.

La stratégie utilise directement la dynamique pour identifier les tendances et une approche structurée stop/target pour contrôler les risques et former un système de suivi des tendances robuste.

Les avantages

Comparé aux autres stratégies de suivi des tendances, les principaux avantages sont les suivants:

  1. Un calcul de momentum simple, facile à mettre en œuvre.

  2. Filtres à combinaison de plusieurs périodes.

  3. L'arrêt-cible est solide.

  4. Limites de perte par transaction.

  5. Le retrait est contrôlable, les bénéfices sont clairs.

  6. Facile à utiliser et flexible.

  7. Paramètres réglables pour différents marchés.

  8. Une logique intuitive et simple.

  9. Dans l'ensemble, une bonne stabilité et un bon contrôle des risques.

Les risques

Cependant, les risques sont les suivants:

  1. Le décalage de vitesse peut manquer des virages clés.

  2. Les performances dépendent du réglage des paramètres.

  3. Pas de filtre de volume, risque d'être piégé.

  4. Les réglages stop/cible sont rigides, peuvent échouer en pratique.

  5. Période de rétro-essai limitée, besoin de vérifier la robustesse à long terme.

  6. La taille fixe manque d'ajustement dynamique.

  7. Un espace d'optimisation limité, un alpha incertain.

  8. Besoin de surveiller les rapports bénéfice/risque et l'ajustement de la courbe.

Améliorations

À la lumière de l'analyse, les améliorations peuvent inclure:

  1. Je teste différents calculs de momentum.

  2. J'ajoute une confirmation de volume.

  3. Optimisation des paramètres d'arrêt / cible.

  4. Introduction de l'apprentissage automatique pour les signaux dynamiques.

  5. Évaluation de la robustesse des produits et des délais.

  6. Construire des modèles dynamiques de dimensionnement de la position.

  7. Définition de la limite maximale de tirage tolérable.

  8. Optimisation des stratégies de gestion des risques.

  9. Tests arrière continus pour éviter les surajustements.

Conclusion

En résumé, il s'agit d'un système de suivi des tendances relativement simple et direct. Mais l'optimisation continue et les tests de robustesse sont essentiels pour que toute stratégie reste adaptable.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 



Plus de