Stratégie de trading quantitatif à risque dynamique avec motif de fan pin à moyenne mobile triple

SMA EMA ATR PIN BAR Trailing Stop Dynamic Leverage
Date de création: 2025-05-14 11:07:47 Dernière modification: 2025-05-14 11:07:47
Copier: 2 Nombre de clics: 266
2
Suivre
319
Abonnés

Stratégie de trading quantitatif à risque dynamique avec motif de fan pin à moyenne mobile triple Stratégie de trading quantitatif à risque dynamique avec motif de fan pin à moyenne mobile triple

Aperçu

La stratégie est basée sur un système de confirmation de tendance formé de trois moyennes mobiles ((EMA rapide, EMA moyenne et SMA lente), combinant les formes de pointe classiques ((Pin Bar) en tant que signal d’entrée, et intégrant un mécanisme de contrôle du risque à plusieurs niveaux. La stratégie utilise la technologie de redessinage pour s’assurer que tous les signaux sont générés sur la base de données K-lignes confirmées, ce qui améliore efficacement la fiabilité du signal.

Principe de stratégie

La stratégie est basée sur les principes de négociation suivants:

  1. Système de confirmation de tendance à trois moyennes mobilesLa stratégie consiste à construire un environnement de tendance en utilisant des moyennes mobiles de trois cycles différents, ce qui nécessite une alignement de tendance clair entre les EMA rapides (default 6 cycles), les EMA moyennes (default 18 cycles) et les SMA lentes (default 50 cycles). Les tendances à plusieurs têtes nécessitent: EMA rapides > EMA moyennes > SMA lentes; les tendances à vide nécessitent: EMA rapides < EMA moyennes < SMA lentes.

  2. Reconnaissance de signaux de forme de brocheLa stratégie: après avoir établi la direction de la tendance, recherchez une forme de broche qui est en accord avec la direction de la tendance (Pin Bar) comme point d’entrée spécifique. La forme de broche exige que les lignes K représentent plus de 66% de la longueur totale, ce qui garantit une force de rétroaction suffisante.

  3. Mécanisme de confirmation du signal retardé: Pour éviter les problèmes de redessinage, la stratégie utilise des données de ligne K entièrement formées (confirmedClose, confirmedOpen, etc.) pour générer des signaux et retarder le signal de confirmation d’une ligne K, afin de s’assurer que la transaction est basée sur le comportement du marché confirmé.

  4. Système de gestion dynamique des risques

    • Contrôle du risque de fonds: calcul du montant du risque sur la base du pourcentage de risque (usr_risk) et du multiplicateur de levier définis par l’utilisateur
    • Formule de calcul de la position: montant à risque = capital total × pourcentage de risque × multiplicateur de levier
    • Unité de transaction spécifique calculée en fonction de la dynamique de la distance d’arrêt: unité = montant du risque ÷ distance d’arrêt
  5. Double protection contre les dommages

    • Stop fixe: protection initiale basée sur le multiplicateur ATR ((atr_mult)
    • Suivi des arrêts de perte: protection des bénéfices avec les paramètres slPoints et slOffset
  6. Contrôle de la fenêtre de temps

    • Mécanisme d’expiration du signal: annulation automatique du signal de retard par le paramètre ent_canc
    • Fonctionnalité de clôture automatique des positions le vendredi pour éviter les risques de défaillance le week-end

Avantages stratégiques

  1. Conception résistante à la peinture: la stratégie est entièrement basée sur les données de ligne K confirmées, évitant les problèmes de refonte des indicateurs courants et améliorant la cohérence des résultats de la rétroanalyse avec la performance du disque réel.

  2. Un système de contrôle des risques parfait

    • Prise en charge d’ajustements de levier de finesse de 0,1 à 100 fois pour s’adapter à différentes préférences de risque
    • Augmentation automatique des positions en cas d’augmentation des fonds et réduction automatique des positions en cas de retrait des fonds grâce à la maîtrise du pourcentage de risque des fonds
    • Le double frein offre plusieurs niveaux de protection des fonds
  3. Filtrage de qualité du signal

    • Le mécanisme de triple confirmation de tendance évite de négocier dans des tendances incertaines
    • La forme de l’épingle nécessite une proportion de faisceau de 66% pour filtrer les signaux faibles.
    • Les signaux doivent correspondre à la direction de la tendance pour réduire le risque de trading à contre-courant.
  4. Une gestion du temps souple

    • Le système d’alarme automatique permet d’éviter l’entrée d’un véhicule à un moment inapproprié
    • La liquidation automatique du vendredi pour éviter les risques du week-end
    • Fonctionnalité de levage automatique croisée des EMA de pointe pour répondre rapidement aux changements de tendance
  5. Gestion de position adaptative: Le système ajuste automatiquement la taille de la position en fonction de la volatilité du marché (ATR), réduit la position en cas de forte volatilité et augmente la position en cas de forte volatilité, ce qui permet un équilibre dynamique du risque.

Risque stratégique

  1. Une dépendance excessive à l’environnement de tendanceLa stratégie peut générer de fréquents faux signaux dans les marchés de couverture horizontale, entraînant des arrêts continus. Remède: Un filtre de force de tendance peut être ajouté, tel que l’indicateur ADX, pour négocier uniquement lorsque la force de tendance est suffisante.

  2. Limites du mode Pin Bar: Bien que la barre de broches soit un signal inversé puissant, elle peut apparaître fréquemment dans les marchés très volatils et n’a pas de signification pratique. Solution: Augmenter la confirmation de transaction ou augmenter les exigences de ratio de ligne d’ombre de la barre de broches.

  3. Risques liés au levierRésolution: Utilisez le levier de manière conservatrice, en recommandant de ne pas dépasser 5 fois la valeur initiale, et de l’ajuster en fonction des résultats des retours historiques.

  4. Risque d’optimisation des paramètres par rapport à la courbe: contient plusieurs paramètres réglables (cycle EMA, cycle ATR, etc.) qui exposent la stratégie à un risque d’optimisation excessive. Solution: tester la stabilité des paramètres sur plusieurs périodes de temps et sur le marché, en utilisant une analyse par étapes (paramètres de vérification Walk Forward).

  5. Réservation de risque: un ATR trop petit peut entraîner des arrêts fréquents, un ATR trop grand peut entraîner des pertes excessives. Solution: en fonction des caractéristiques du marché et du cycle de négociation, recherchez un point d’équilibre pour le paramètre d’arrêt, il est recommandé de tester plusieurs paramètres en combinaison avec des limites de risque de fonds.

Orientation de l’optimisation de la stratégie

  1. Augmenter le filtrage des conditions du marché

    • Ajout de conditions de filtrage de la volatilité, telles que le fait de juger si le marché est propice à la négociation en fonction du ratio ATR/prix
    • La fonctionnalité de reconnaissance des modèles régionaux de marché permet de distinguer les tendances des environnements de choc
    • Cette optimisation permet d’éviter de négocier dans des conditions de marché qui ne conviennent pas à la stratégie et d’améliorer les chances de succès.
  2. Amélioration de la qualité du signal

    • Augmentation des exigences de confirmation de transaction pour assurer une participation suffisante des signaux Pin Bar
    • Ajout d’une vérification de résistance au support des cours critiques, en privilégiant les signaux situés à proximité des cours importants
    • Cette optimisation permet d’améliorer considérablement la qualité et la fiabilité du signal.
  3. Les paramètres dynamiques s’adaptent

    • Adaptation automatique des paramètres en fonction de la volatilité du marché
    • Développement d’un système de stop-loss intelligent permettant d’ajuster la distance de stop-loss en fonction de la dynamique de la structure du marché
    • Cette optimisation permet de mieux adapter les stratégies aux différentes phases du marché et d’améliorer la stabilité à long terme.
  4. Coordonnées à cycles multiples

    • Ajouter des conditions de filtrage de tendance pour des périodes de temps plus longues
    • Mise en œuvre d’un mécanisme de confirmation synchrone des signaux de différentes périodes
    • La synchronisation des cycles de temps réduit le bruit et améliore la fiabilité du signal
  5. Optimisation de la gestion des fonds

    • Développement d’un système de position dynamique basé sur le profit/perte, en ajustant le ratio de risque en fonction du profit/perte attendu
    • Mise en œuvre d’un modèle de risque composé prenant en compte la volatilité du marché, l’intensité des tendances et la qualité des signaux
    • Cela permet de mieux maîtriser les risques dans différentes conditions de marché.

Résumer

La stratégie de trading quantifiée de risque dynamique en forme de triple moyenne mobile est un système de trading quantifié professionnel qui combine l’analyse technique multiple et la gestion des risques. En combinant la confirmation de tendance en forme de triple moyenne mobile avec l’identification de la forme de la barre d’épingle, la stratégie est capable de capturer des opportunités de trading de haute qualité dans des marchés à forte tendance.

Cette stratégie est la mieux adaptée pour être utilisée dans des environnements de marché clairement tendanciels et est particulièrement efficace pour les produits financiers à forte volatilité. Cependant, les utilisateurs doivent être conscients des limites de la stratégie dans le comptage horizontal du marché, ainsi que des risques potentiels liés à l’utilisation du levier et au paramétrage. Il y a encore beaucoup de place pour améliorer la stratégie par des orientations d’optimisation suggérées, telles que l’augmentation du filtrage de l’environnement de marché, l’amélioration de la qualité du signal et l’adaptation des paramètres.

Dans l’ensemble, il s’agit d’une stratégie de trading quantitative, structurée, à risque contrôlable et logiquement claire, qui convient aux traders expérimentés et qui peut être appliquée à la négociation en bourse après avoir été suffisamment testée. Avec des paramètres de configuration raisonnables et une utilisation prudente du levier, la stratégie a le potentiel d’être un outil puissant dans l’arsenal des traders.

Code source de la stratégie
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5

strategy("Rich Harvester", overlay=true, 
  initial_capital=200, 
  commission_type=strategy.commission.percent, 
  commission_value=0.1,
  slippage=2,
  default_qty_type=strategy.cash)

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 抗重绘核心修改(使用已确认K线数据)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
confirmedClose = close[1]
confirmedOpen = open[1]
confirmedHigh = high[1]
confirmedLow = low[1]

// User Input (新增参数)
leverage = input.float(title='杠杆倍数', minval=0.1, maxval=100.0, step=0.1, defval=1.0, group="★ 风险控制")

// User Input (原有参数完全保留)
usr_risk = input.int(title='Equity Risk (%)', minval=1, maxval=100, step=1, defval=3, confirm=false)
atr_mult = input.float(title='Stop Loss (x*ATR, Float)', minval=0.1, maxval=100, step=0.1, defval=0.5, confirm=false)
slPoints = input.int(title='Stop Loss Trail Points (Pips)', minval=1, maxval=1000, step=1, defval=1, confirm=false)
slOffset = input.int(title='Stop Loss Trail Offset (Pips)', minval=1, maxval=1000, step=1, defval=1, confirm=false)
sma_slow = input.int(title='Slow SMA (Period)', minval=1, maxval=500, step=1, defval=50, confirm=false)
ema_medm = input.int(title='Medm EMA (Period)', minval=1, maxval=500, step=1, defval=18, confirm=false)
ema_fast = input.int(title='Fast EMA (Period)', minval=1, maxval=500, step=1, defval=6, confirm=false)
atr_valu = input.int(title='ATR (Period)', minval=1, maxval=500, step=1, defval=14, confirm=false)
ent_canc = input.int(title='Cancel Entry After X Bars (Period)', minval=1, maxval=500, step=1, defval=3, confirm=false)

// Create Indicators (使用确认数据)
slowSMA = ta.sma(confirmedClose, sma_slow)
medmEMA = ta.ema(confirmedClose, ema_medm)
fastEMA = ta.ema(confirmedClose, ema_fast)
atr = ta.atr(atr_valu)[1]  // 使用前值

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 信号系统优化(延迟信号确认)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
bullishPinBar = (confirmedClose > confirmedOpen and (confirmedOpen - confirmedLow) > 0.66 * (confirmedHigh - confirmedLow)) or
              (confirmedClose < confirmedOpen and (confirmedClose - confirmedLow) > 0.66 * (confirmedHigh - confirmedLow))

bearishPinBar = (confirmedClose > confirmedOpen and (confirmedHigh - confirmedClose) > 0.66 * (confirmedHigh - confirmedLow)) or
               (confirmedClose < confirmedOpen and (confirmedHigh - confirmedOpen) > 0.66 * (confirmedHigh - confirmedLow))

// 趋势过滤条件(使用确认数据)
fanUpTrend = fastEMA > medmEMA and medmEMA > slowSMA
fanDnTrend = fastEMA < medmEMA and medmEMA < slowSMA

// 延迟信号确认(等待K线闭合)
longCondition = fanUpTrend and bullishPinBar[1]  // 延迟1根K线
shortCondition = fanDnTrend and bearishPinBar[1]

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 交易执行系统(仅修改风险计算部分)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity * leverage  // 添加杠杆影响
    stopLoss = confirmedLow - atr * atr_mult
    entryPrice = confirmedHigh
    units = risk / (entryPrice - stopLoss)
    strategy.entry('long', strategy.long, units, stop=entryPrice)
    strategy.exit('exit long', from_entry='long', trail_points=slPoints, trail_offset=slOffset)

entershort() =>
    risk = usr_risk * 0.01 * strategy.equity * leverage  // 添加杠杆影响
    stopLoss = confirmedHigh + atr * atr_mult
    entryPrice = confirmedLow
    units = risk / (stopLoss - entryPrice)
    strategy.entry('short', strategy.short, units, stop=entryPrice)
    strategy.exit('exit short', from_entry='short', trail_points=slPoints, trail_offset=slOffset)



// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 交易执行系统
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
if longCondition 
    enterlong()

if shortCondition 
    entershort()
strategy.cancel('long', ta.barssince(longCondition) > ent_canc)
strategy.cancel('short', ta.barssince(shortCondition) > ent_canc)

strategy.close_all(when=hour == 16 and dayofweek == dayofweek.friday, comment='exit all, market-closed')
strategy.close_all(when=ta.crossunder(fastEMA, medmEMA), comment='exit long, re-cross')
strategy.close_all(when=ta.crossover(fastEMA, medmEMA), comment='exit short, re-cross')

plot(fastEMA, "快EMA", color.new(#FF6B00, 0), 2)
plot(medmEMA, "中EMA", color.new(#0096FF, 0), 2)
plot(slowSMA, "慢SMA", color.new(#00C800, 0), 2)

plotshape(longCondition, "多信号", shape.labelup, location.belowbar, color=#00FF00, text="▲", textcolor=#FFFFFF)
plotshape(shortCondition, "空信号", shape.labeldown, location.abovebar, color=#FF0000, text="▼", textcolor=#FFFFFF)