
La stratégie de dynamique polycyclique de confirmation de graphique technique est un système de négociation basé sur la reconnaissance de la forme de plusieurs graphiques classiques et combiné avec la confirmation de la dynamique. La stratégie consiste principalement à identifier les formes techniques courantes sur le marché, telles que le sommet de la tête, le sommet de la tête, le double sommet, le double fond, le triangle (symétrique, ascendant, descendant), le drapeau, l’aigle, etc., et à confirmer les signaux d’entrée lors de la rupture de la forme.
Le principe central de la stratégie est d’identifier les différentes configurations graphiques à l’aide d’une série de fonctions conditionnelles et de confirmer les signaux de transaction lorsque le prix franchit des niveaux critiques:
Identification du haut et du bas des épaules: Identification de la structure caractéristique de la forme de l’épaule-tête en comparant la relation de position relative des points hauts/bas successifs. La forme de l’épaule-tête est formée lorsque le point haut 1 est plus grand que le point haut 0, 2, 3, 4 et que le point haut 0 est plus petit que les points hauts 2 et 3.
Identification à double sommet/double fond: Identifier les formes à deux sommets et à deux sommets en analysant les séquences de sommets et de sommets. Dans les formes à deux sommets, le sommet 1 doit être supérieur au sommet environnant; dans les formes à deux sommets, le sommet 1 doit être inférieur au sommet environnant.
Reconnaissance de forme triangulaire:
Identification du drapeau et du triangle: Identifier les modèles de variation continue en analysant les hauts et les bas.
Signaux de transaction confirmés:
Gestion des risques:
Identification systématique des formes: la stratégie permet d’identifier automatiquement de nombreuses formes de graphiques classiques en définissant une fonction conditionnelle explicite, réduisant ainsi le biais de jugement subjectif.
Mécanisme de confirmation du signalLa stratégie consiste non seulement à identifier les formes du graphique, mais aussi à exiger la confirmation de la rupture des niveaux critiques, réduisant ainsi le risque de fausse rupture.
Gestion dynamique des risques: Utilisez l’indicateur ATR pour définir des niveaux de stop-loss et de stop-loss dynamiques afin de rendre les contrôles de risque plus adaptés aux changements de la volatilité du marché.
Couverture multifonctionnelleLes stratégies comprennent de nombreux formats graphiques classiques, augmentant les opportunités de négociation et s’adaptant aux différents environnements de marché.
Présentation visuelle: La stratégie affiche les formes identifiées par la fonction plotshape sur le graphique, ce qui aide les traders à comprendre et à vérifier la logique de la stratégie.
Le risque est plus rentable que la rentabilitéLa stratégie impose un ATR de 3 fois le stop, 1,5 fois le stop, et un rapport de risque/rendement de 1:2, conformément aux principes d’une gestion efficace des risques.
Détection de forme avec une précision limitéeLes algorithmes actuels de reconnaissance de formes sont relativement simplifiés et peuvent entraîner des erreurs ou des omissions, en particulier dans des conditions de bruit élevé sur le marché.
Paramètre SensibilitéLes réglages ATR cycliques et les réglages de multiples de stop loss et de stop loss ont un impact significatif sur la performance de la stratégie et doivent être optimisés en fonction des différents marchés et des différentes périodes.
Risque de fausse percéeMalgré les mécanismes de confirmation, il existe toujours des faux-breechers sur le marché qui peuvent entraîner des pertes inutiles.
Reconnaissance répétée des formes: Certaines fonctions de reconnaissance de forme dans le code actuel ont une logique similaire (comme la tête, les épaules et les deux sommets), ce qui peut entraîner le déclenchement de plusieurs signaux dans la même situation de marché, augmentant la fréquence et le coût des transactions.
Manque de filtrage des tendances: la stratégie ne prend pas en compte la direction de la tendance générale du marché, ce qui peut générer un signal de revers dans une tendance forte, entraînant des transactions à l’envers.
Comment éviter les risques:
Amélioration de l’algorithme de reconnaissance des formes:
Ajouter une confirmation de transaction:
Filtrage des tendances:
Optimiser la gestion des risques:
Ajouter un filtrage de temps:
Analyse de plusieurs périodes:
Ces orientations d’optimisation améliorent considérablement la robustesse et l’efficacité de la stratégie, car:
La stratégie de confirmation de forme technique est un système de négociation systématique, de règles claires, qui génère des signaux de négociation en identifiant plusieurs formes de graphiques classiques et en combinant la confirmation de rupture. La stratégie utilise l’indicateur ATR pour la gestion dynamique du risque et définit un ratio de retour sur risque raisonnable. Bien que la version actuelle de l’algorithme de reconnaissance de forme soit relativement simplifiée, elle fournit une bonne base pour une optimisation ultérieure.
/*backtest
start: 2024-02-29 00:00:00
end: 2025-02-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Chart Pattern Strategy - Full Set", overlay=true)
// ATR settings for stop loss and take profit
atrLength = input.int(14, title="ATR Length")
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 1.5 // Stop loss 1.5 ATR
takeProfit = atrValue * 3 // Take profit 3 ATR
// Head and Shoulders Detection
isHeadAndShoulders() =>
high[1] > high[2] and high[1] > high[0] and high[1] > high[3] and high[1] > high[4] and high[0] < high[2] and high[0] < high[3]
// Double Top Detection
isDoubleTop() =>
high[1] > high[2] and high[1] > high[0] and high[1] > high[3] and high[1] > high[4] and high[0] < high[2] and high[0] < high[3]
// Double Bottom Detection
isDoubleBottom() =>
low[1] < low[2] and low[1] < low[0] and low[1] < low[3] and low[1] < low[4] and low[0] > low[2] and low[0] > low[3]
// Symmetrical Triangle Detection
isSymmetricalTriangle() =>
high[2] > high[1] and low[2] < low[1] and high[3] < high[2] and low[3] > low[2]
// Ascending Triangle Detection (Bullish)
isAscendingTriangle() =>
high[2] < high[1] and low[2] > low[1] and high[3] < high[2] and low[3] > low[2]
// Descending Triangle Detection (Bearish)
isDescendingTriangle() =>
high[2] > high[1] and low[2] < low[1] and high[3] < high[2] and low[3] < low[2]
// Flags/Pennants Detection
isFlagPattern() =>
high[1] < high[0] and low[1] > low[0] and high[2] < high[1] and low[2] < low[1]
// Entry Logic (Confirmation based on Breakouts)
longSignal = (isHeadAndShoulders() or isDoubleBottom() or isAscendingTriangle()) and close > high[1]
shortSignal = (isDoubleTop() or isDescendingTriangle() or isFlagPattern()) and close < low[1]
// Plotting Chart Patterns on the Chart
plotshape(isHeadAndShoulders(), title="Head and Shoulders", location=location.abovebar, color=color.red, style=shape.labelup, text="HS")
plotshape(isDoubleTop(), title="Double Top", location=location.abovebar, color=color.red, style=shape.labelup, text="DT")
plotshape(isDoubleBottom(), title="Double Bottom", location=location.belowbar, color=color.green, style=shape.labeldown, text="DB")
plotshape(isSymmetricalTriangle(), title="Symmetrical Triangle", location=location.top, color=color.blue, style=shape.triangledown, text="ST")
plotshape(isAscendingTriangle(), title="Ascending Triangle", location=location.belowbar, color=color.green, style=shape.labelup, text="AT")
plotshape(isDescendingTriangle(), title="Descending Triangle", location=location.abovebar, color=color.red, style=shape.labeldown, text="DT")
plotshape(isFlagPattern(), title="Flag Pattern", location=location.abovebar, color=color.orange, style=shape.triangledown, text="Flag")
// Executing Trades based on Patterns
if (longSignal)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=close - stopLoss, limit=close + takeProfit)
if (shortSignal)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=close + stopLoss, limit=close - takeProfit)