Identification des points de retournement multi-périodes et stratégies de trading automatisées

MAGIC-9/13 DRP CROSSOVER CONSECUTIVE PATTERNS STOP-LOSS TAKE-PROFIT
Date de création: 2025-06-13 13:58:08 Dernière modification: 2025-06-13 13:58:08
Copier: 0 Nombre de clics: 258
2
Suivre
319
Abonnés

Identification des points de retournement multi-périodes et stratégies de trading automatisées Identification des points de retournement multi-périodes et stratégies de trading automatisées

Aperçu

La stratégie est centrée sur la combinaison des concepts traditionnels d’analyse technique et des méthodes modernes de quantification, permettant d’identifier les points de retournement potentiels du marché en analysant le comportement des prix en continu, permettant ainsi d’entrer sur le marché au début des retournements de prix. Le système intègre des fonctionnalités de stop loss et de stop stop stop automatiques pour contrôler les risques et bloquer les bénéfices, tout en fournissant un affichage intuitif des signaux de transaction via des indicateurs visuels tels que les changements de couleur des étiquettes et des graphiques.

Principe de stratégie

Le principe central de cette stratégie est basé sur deux indicateurs techniques principaux: le mode Magic-913 et le point de retournement de direction (DRP).

  1. Reconnaissance du mode Magic-913:

    • Le système surveille le comportement des prix sur 9 cycles consécutifs pour trouver des modèles de prix cohérents
    • Modèle de point culminant ((high_9)): se forme lorsque le prix est 9 fois consécutivement supérieur au prix de clôture de ses 4 cycles précédents, mais ne satisfait pas la 10e fois
    • Modèle de bas point ((low_9)): se forme lorsque le prix est 9 fois consécutivement inférieur au prix de clôture de ses 4 cycles précédents, mais ne satisfait pas la 10e fois
  2. Le calcul du point de retournement de direction (DRP):

    • En analysant la relation entre les prix à l’intérieur de la longueur spécifiée et les prix avant la longueur de retour
    • Calculer le nombre d’augmentations (up_count): nombre de fois où le prix actuel est supérieur au prix de la période de rétrocession
    • Compte de baisse (down_count): nombre de fois où le prix actuel est inférieur au prix rétrograde
    • marqué comme point de retournement ascendant lorsque down_count est égal à la longueur définie (value 1)
    • marqué comme point de basculement inférieur lorsque up_count est égal à la longueur définie (value -1)
  3. Signal de transaction généré:

    • Signal d’achat: déclenché lorsqu’un mode low_9 est détecté et que le point d’inversion de direction passe de la valeur négative ou zéro vers le haut
    • Signal de vente: déclenchée lors de la détection d’un mode high_9 et d’une inversion de direction passant de la valeur positive ou zéro vers le bas
  4. Le mécanisme de gestion des risques:

    • Stop automatique: 10 points de stop dans le sens inverse du prix d’ouverture
    • Arrêt automatique: arrêt de 10 points dans la direction opposée au prix d’ouverture de la position
  5. Fonctions auxiliaires:

    • get_first_non_na_value: fonction qui obtient une valeur autre que NA
    • count_consecutive_occurrences: comptez le nombre d’occurrences de conditions consécutives
    • check_condition_occurrence: vérifie si la condition est présente dans une période donnée
    • filter_occurrences: nombre d’occurrences du filtre basé sur la période de rétroaction

Avantages stratégiques

  1. Identification précoce du retournement de marché: grâce à la combinaison du mode Magic-913 et des points de retournement de direction, il est possible de capturer les signaux au début d’un retournement de marché, offrant ainsi un meilleur moment d’entrée.

  2. Mécanisme de confirmation multiple: la stratégie exige que deux conditions indépendantes soient remplies simultanément ((le mode Magic et la direction inverse traversant le point de basculement), ce qui réduit la probabilité de faux signaux et améliore la qualité des transactions.

  3. Contrôle automatisé des risquesLa fonction Stop Loss et Stop Stop est intégrée, ce qui permet de contrôler le risque d’une transaction sans intervention manuelle et d’éviter les décisions de trading émotionnelles.

  4. Signaux de négociation visuelsLes signaux de négociation sont visuellement affichés par les étiquettes et les changements de couleur des graphiques, ce qui permet aux traders d’identifier rapidement les opportunités de négociation potentielles.

  5. Ajustabilité des paramètres: La stratégie offre des options d’ajustement de deux paramètres clés, la longueur et la longueur de rétrocession, permettant aux traders d’optimiser en fonction des différentes conditions du marché et des variétés de transactions.

  6. La robustesse du traitement des données: contient un mécanisme de traitement des valeurs NA, ce qui améliore la stabilité de la stratégie dans diverses conditions de données.

  7. Adaptabilité cyclique: La stratégie peut être appliquée à des graphiques de différentes périodes de temps, allant de graphiques de minutes à des graphiques de jour, offrant une sélection de cadres de temps de négociation flexibles.

Risque stratégique

  1. Paramètre SensibilitéLa performance de la stratégie dépend fortement des paramètres de longueur et de longueur de rétrocession, différents environnements de marché peuvent nécessiter différentes combinaisons de paramètres, les paramètres incorrects peuvent entraîner des transactions excessives ou des opportunités de transactions manquées. La solution: effectuer un retour d’expérience complet et créer une matrice d’optimisation des paramètres pour différentes conditions de marché.

  2. Risque de fluctuation du marché: dans les marchés à forte volatilité, le paramètre de stop loss fixé à 10 points peut être trop petit, ce qui entraîne un déclenchement fréquent; dans les marchés à faible volatilité, ce paramètre peut être trop grand. Solution: le paramètre de stop loss est basé sur une valeur dynamique de la volatilité du marché (comme l’ATR) et non sur un nombre de points fixes.

  3. Les tendances du marchéLa stratégie est principalement axée sur la conception des points de retournement, qui peuvent générer des signaux erronés fréquents dans les marchés en forte tendance. La solution: Ajouter un filtre de tendance, qui déclenche un signal de transaction uniquement lorsqu’il est confirmé que le marché n’est pas en forte tendance.

  4. Les points de glissement et les risques de liquidité: Dans les marchés moins liquides, le prix d’exécution peut être significativement différent du prix de signal. Solution: augmenter les conditions de filtrage de la liquidité ou prendre en compte les facteurs de glissement lors de l’exécution des ordres.

  5. Le risque d’une suradaptation: la stratégie utilise plusieurs conditions et paramètres, il peut y avoir un risque de sur-adaptation des données historiques. Solution: la robustesse de la stratégie est vérifiée à l’aide de tests hors échantillon et de tests avant.

  6. Accumulation de signaux en continu: Dans certaines conditions de marché, il est possible de générer plusieurs signaux dans la même direction en continu, ce qui entraîne une position excessive. Solution: Mettre en place un mécanisme de filtrage des signaux, limitant le nombre de signaux dans la même direction exécutés dans un court laps de temps.

  7. Limite de stop-loss fixeLa solution: mettre en place un mécanisme d’arrêt-arrêt dynamique basé sur les fluctuations du marché, ou adopter une stratégie de suivi des pertes.

Orientation de l’optimisation de la stratégie

  1. Ajustement des paramètres dynamiques:

    • Un mécanisme permettant d’ajuster automatiquement les paramètres length_input et lookback_length en fonction des fluctuations du marché
    • Principe: Différents paramètres nécessitent une sensibilité différente dans des environnements à taux de volatilité différents, et l’ajustement dynamique peut améliorer l’adaptabilité de la stratégie
    • Méthode d’implémentation: formule permettant d’ajuster les paramètres de conception ATR basés sur les N cycles les plus récents
  2. Ajouter un filtre de tendance:

    • Indicateurs de reconnaissance de tendance intégrés (comme les moyennes mobiles, l’ADX, etc.) qui exécutent des transactions uniquement si elles sont conformes à la direction de la tendance
    • Principe: les stratégies de retournement sont généralement moins efficaces dans les marchés où la tendance est évidente et les filtres de tendance réduisent les faux signaux
    • Méthode de mise en œuvre: ajouter des moyennes mobiles à long terme comme référence pour la direction de la tendance, faire plus uniquement lorsque le prix est au-dessus de la moyenne, faire moins que lorsque le prix est au-dessous de la moyenne
  3. Optimiser le mécanisme de stop loss et de take profit:

    • Remplacement du réglage des points fixes par un arrêt de perte dynamique basé sur la volatilité
    • Principe: les taux de volatilité varient considérablement d’une période à l’autre et les points fixes ne peuvent pas s’adapter à toutes les conditions du marché
    • Méthode d’implémentation: paramétrage d’un point d’arrêt de perte en utilisant le multiple de l’ATR, par exemple 1,5 fois l’ATR comme arrêt et 3 fois l’ATR comme arrêt
  4. Augmenter le filtrage du volume des transactions:

    • Prendre en compte le facteur volume et exécuter le signal uniquement si le volume est confirmé
    • Principe: le volume de transactions est un facteur important de confirmation de l’efficacité des variations de prix, ce qui réduit les fausses ruptures
    • Méthode d’implémentation: vérifier si le volume de transactions au moment de l’apparition du signal est supérieur au volume de transactions moyen des N cycles précédents
  5. Filtrage de temps réalisé:

    • Évitez de négocier pendant une période donnée (par exemple, avant ou après l’ouverture ou la fermeture du marché ou avant la publication de données économiques importantes)
    • Principe: une volatilité anormale ou une orientation incertaine pendant certaines périodes et un risque de transaction élevé
    • Méthode de mise en œuvre: augmentation du jugement des conditions temporelles, interdiction de la génération de nouveaux signaux pendant les périodes de risque élevé
  6. Ajout de fonctionnalités de gestion de position:

    • Taille de position ajustée dynamiquement en fonction de la volatilité du marché et du niveau de risque du compte
    • Principe: les positions fixes ne peuvent pas s’adapter à différents environnements de risque, les positions dynamiques permettent de maîtriser les risques tout en maintenant les gains attendus
    • Méthode de mise en œuvre: Formule de calcul de position basée sur le pourcentage de retrait maximal
  7. Mise en œuvre de la notation d’intensité du signal:

    • Attribuer un score de force à chaque signal de transaction, n’exécutant que les signaux supérieurs à la barre
    • Principe: tous les signaux qui remplissent les conditions ne sont pas de la même qualité, le système de notation peut filtrer les signaux de haute qualité
    • Méthode de mise en œuvre: un score composite calculé sur la base de facteurs tels que la distance du prix par rapport à la moyenne, la clarté du mode Magic et l’intensité du point de basculement
  8. Augmentation de la reconnaissance des marchés concernés:

    • Introduction de données relatives aux marchés ou aux indices comme condition de confirmation supplémentaire
    • Principe: La confirmation de la cohérence des marchés concernés améliore la fiabilité du signal
    • Méthode de mise en œuvre: vérifier si les principaux indices ou les marchés concernés montrent des signes de reprise similaires

Résumer

La stratégie d’identification des points de retournement multicycliques et de négociation automatique est un système de négociation quantifié basé sur un portefeuille d’indicateurs techniques, combiné à une analyse des points de retournement directionnels par la reconnaissance du modèle Magic-913, pour capturer les opportunités de retournement potentiels du marché. Le principal avantage de cette stratégie réside dans son mécanisme de confirmation multiple et ses fonctions de gestion du risque intégrées, qui permettent de fournir des signaux de négociation relativement fiables au début des retournements du marché, tout en contrôlant les risques grâce à l’automatisation des arrêts de perte.

Cependant, la stratégie est également confrontée à des limitations telles que la sensibilité des paramètres, l’adaptabilité à l’environnement du marché et les arrêts de perte fixes. Des mesures d’optimisation telles que la mise en œuvre d’ajustements de paramètres dynamiques, l’ajout de filtres de tendance, l’optimisation du mécanisme d’arrêt de perte et l’augmentation de la confirmation du volume des transactions peuvent considérablement améliorer l’adaptabilité et la stabilité des performances de la stratégie.

Pour les traders, la stratégie fournit un cadre pour capturer systématiquement les points de retournement du marché, mais nécessite toujours un ajustement et une optimisation raisonnables des paramètres en combinaison avec les préférences de risque personnelles et la compréhension du marché. Dans le processus de mise en œuvre, il est recommandé d’effectuer d’abord des tests approfondis dans un environnement simulé pour comprendre les caractéristiques de performance de la stratégie dans différents environnements de marché, puis d’appliquer progressivement la stratégie aux transactions en temps réel.

Code source de la stratégie
/*backtest
start: 2025-06-05 00:00:00
end: 2025-06-05 15:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('L3 Magic-9/13 Strategy', overlay=true, max_bars_back=4000, max_labels_count=500)

// 输入参数
length_input = input.int(title='Length', defval=9, minval=1)
lookback_length = input.int(title='Lookback Length', defval=4, minval=1)

// 获取第一个非 NA 值的函数
get_first_non_na_value(values, length) =>
    result = float(na)
    if length >= 1
        for i = 0 to length - 1
            if na(result) or not na(values[i])
                result := values[i]
    result

// 计算连续条件出现次数的函数
count_consecutive_occurrences(condition, length) =>
    count = 0
    for i = 1 to length
        if condition[i - 1]
            count += 1
    count

// 检查条件是否在给定周期内出现的函数
check_condition_occurrence(condition, length) =>
    occurrence = count_consecutive_occurrences(condition, length) != 0 ? 1 : 0
    occurrence

// 基于回溯周期过滤出现次数的函数
filter_occurrences(condition, lookback_period) =>
    output = 0.0
    temp = 0
    for i = lookback_period to 0
        if temp > 0
            output := 0.0
            temp := temp[1] - 1
        else
            if not condition[i]
                output := 0.0
            else
                output := 1.0
                temp := lookback_period + 1
    output_bool = output == 1 ? true : false
    output_bool

// Magic-9/13 逻辑
high_9 = count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 10) == 9
low_9 = count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 10) == 9

// 计算方向反转点
up_count = 0
down_count = 0
for i = 0 to length_input - 1
    up_count += (nz(close[i]) > nz(close[i + lookback_length]) ? 1 : 0)
    down_count += (nz(close[i]) < nz(close[i + lookback_length]) ? 1 : 0)

directional_reversal_point = down_count == length_input ? 1 : up_count == length_input ? -1 : 0

// 定义交易信号
buy_signal = check_condition_occurrence(low_9, 2) and ta.crossover(directional_reversal_point, 0)
sell_signal = check_condition_occurrence(high_9, 2) and ta.crossunder(directional_reversal_point, 0)

// 执行交易
if (buy_signal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit", "Buy", limit=close + 10 * syminfo.pointvalue, stop=close - 10 * syminfo.pointvalue)

if (sell_signal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit", "Sell", limit=close - 10 * syminfo.pointvalue, stop=close + 10 * syminfo.pointvalue)

// 绘制标签
labels = buy_signal ? label.new(bar_index, low, 'B', color=color.new(color.red, 40), textcolor=color.white, style=label.style_label_up, yloc=yloc.price, size=size.small) : sell_signal ? label.new(bar_index, high, 'S', color=color.new(color.lime, 40), textcolor=color.white, style=label.style_label_down, yloc=yloc.price, size=size.small) : na

// 绘制蜡烛图颜色
signal = directional_reversal_point > 0 or up_count > down_count ? 1 : directional_reversal_point < 0 or down_count > up_count ? -1 : 0
drp_color = signal > 0 ? color.green : signal < 0 ? color.red : color.black
barcolor(drp_color)