Stratégie de suivi des tendances basée sur le zigzag


Date de création: 2023-10-30 14:51:08 Dernière modification: 2023-10-30 14:51:08
Copier: 0 Nombre de clics: 843
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances basée sur le zigzag

Aperçu

Cette stratégie utilise les indicateurs ZigZag pour déterminer la direction d’une tendance et la suivre après la confirmation de la tendance.

Principe de stratégie

La stratégie utilise principalement l’indicateur ZigZag pour déterminer la direction de la tendance des prix. L’indicateur ZigZag est capable de filtrer le bruit du marché et de déterminer la direction des principales fluctuations des prix.

En particulier, la stratégie commence par calculer la valeur ZigZag, qui est le prix du sommet lorsque le prix atteint un sommet plus élevé; et le prix du bas lorsque le prix atteint un sommet plus bas. Ainsi, ZigZag reflète clairement la direction des principales fluctuations des prix.

La stratégie détermine la direction de la tendance en fonction de la valeur de ZigZag. Quand ZigZag est en hausse, il indique qu’il est en hausse; quand ZigZag est en baisse, il indique qu’il est en baisse.

Plus précisément, la stratégie consiste à ouvrir un ordre supplémentaire lorsque le virage ZigZag forme un nouveau haut, et à ouvrir un ordre vide lorsque le virage ZigZag forme un nouveau bas. La condition de placement est que le virage ZigZag se retourne à nouveau. Ainsi, une stratégie de trading automatique basée sur le jugement de la tendance ZigZag est réalisée.

Analyse des forces stratégiques

  • L’indicateur ZigZag est utilisé pour détecter les tendances, filtrer efficacement le bruit du marché et déterminer avec précision la direction des principales tendances.
  • Les points de virage ZigZag sont précis et permettent de créer facilement un meilleur temps d’entrée.
  • La stratégie de suivi des tendances est entièrement intégrée et ne nécessite aucun autre indicateur ou modèle complexe.
  • La logique de la stratégie est simple et claire, facile à comprendre et à modifier.
  • La fréquence de négociation de la stratégie de libre contrôle peut être ajustée par paramètres.

Analyse des risques

  • ZigZag n’est pas sensible à la conversion des courts-circuits des taureaux et des ours, et peut manquer des virages plus rapides.
  • Il n’y a pas de stratégie pour suivre les tendances et ne peut pas faire face aux pertes causées par une inversion de tendance.
  • Il n’y a pas de limite à la taille des pertes individuelles et le risque de pertes individuelles est élevé.
  • La stratégie est basée sur un seul indicateur et peut présenter un risque de suradaptation.

Le risque peut être réduit par:

  • Le risque de renversement de tendance est évalué en combinaison avec d’autres indicateurs.
  • Réduire le temps de détention de manière appropriée et arrêter les pertes en temps opportun.
  • L’ajout d’un module de gestion des fonds pour limiter les pertes individuelles.
  • L’augmentation des modèles d’apprentissage automatique et l’amélioration de la robustesse des stratégies.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Augmentation de la stratégie de stop loss pour contrôler le risque de perte unique. Stop loss mobile ou stop loss suspendu peuvent être configurés.

  2. Ajout d’un mécanisme de jugement de renversement de tendance. Vous pouvez ajouter des indicateurs tels que le MACD, la moyenne mobile, et fermer une position lorsque vous jugez que la tendance est en train de se renverser.

  3. Ajouter un module de réintégration. Si la tendance se poursuit, il est possible d’augmenter la position de manière appropriée afin de réaliser plus de profits.

  4. Ajout de modèles d’apprentissage automatique. Les modèles d’apprentissage en profondeur tels que LSTM peuvent être formés pour aider ZigZag à déterminer la direction des tendances.

  5. Optimisation des mécanismes de gestion des fonds. La taille des positions peut être optimisée en fonction des retraits ou de la théorie de la corrélation.

  6. Les paramètres d’optimisation globaux sont définis. Les paramètres d’optimisation peuvent être analysés à l’aide de la rétroaction historique et de la référence à des livres spécialisés, tels que la longueur de cycle de ZigZag.

Résumer

La stratégie utilise les indicateurs ZigZag pour déterminer la direction de la tendance et implémenter une stratégie de trading basée sur la tendance. La logique de la stratégie est simple et claire et facile à mettre en œuvre. Mais il existe également des problèmes tels que la dépendance à un seul indicateur et le risque de renversement de tendance.

Code source de la stratégie
/*backtest
start: 2022-10-23 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's ZZ Strategy v1.0", shorttitle = "ZZ str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title='Timeframe for ZigZag')
showzz = input(false, defval = false, title = "Show ZigZag")
showbg = input(false, defval = false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//ZigZag
zigzag() =>
    _isUp = close >= open
    _isDown = close <= open
    _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1])
    _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? highest(2) : _isDown[1] and _isUp and _direction[1] != 1 ? lowest(2) : na
useAltTF = true
zz = useAltTF ? (change(time(tf)) != 0 ? request.security(syminfo.tickerid, tf, zigzag()) : na) : zigzag()
zzcolor = showzz ? black : na
plot(zz, title = 'ZigZag', color = zzcolor, linewidth = 2)

//Levels
dot = zz > 0 ? zz : dot[1]
uplevel = dot > dot[1] ? dot : uplevel[1]
dnlevel = dot < dot[1] ? dot : dnlevel[1]
colorup = close[1] < uplevel[1] and uplevel == uplevel[1] ? lime : na
colordn = close[1] > dnlevel[1] and dnlevel == dnlevel[1] ? red : na
plot(uplevel, color = colorup, linewidth = 3)
plot(dnlevel, color = colordn, linewidth = 3)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size != size[1] ? blue : na
bgcolor(bgcol, transp = 50)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()