Stratégie de stop loss suiveur Value Breakout : un robot de trading automatisé basé sur les valeurs extrêmes locales

TP SL TSL BTC 局部极值 追踪止损 挂单交易 时间过滤 价格突破
Date de création: 2025-04-07 13:52:57 Dernière modification: 2025-04-07 13:52:57
Copier: 0 Nombre de clics: 413
2
Suivre
319
Abonnés

Stratégie de stop loss suiveur Value Breakout : un robot de trading automatisé basé sur les valeurs extrêmes locales Stratégie de stop loss suiveur Value Breakout : un robot de trading automatisé basé sur les valeurs extrêmes locales

Aperçu

La stratégie de Stop Loss Tracking Breakthrough est un système de trading quantitatif conçu spécifiquement pour le trading d’actifs numériques qui capture les mouvements de rupture du marché en plaçant des ordres de clôture (” Stop Loss Buy “ et ” Stop Loss Sell “) à des extrêmes de prix locaux. La stratégie implémente également un mécanisme de Stop Loss Tracking qui bloque les gains une fois que la position atteint un niveau de profit prédéfini, c’est-à-dire qu’un mécanisme de protection est activé. Cette méthode combine les avantages de la négociation de rupture de prix avec la gestion des risques, offrant aux traders une solution de trading automatisée.

Principe de stratégie

La stratégie est basée sur les principes de la gestion du risque dynamique et du comportement des prix, et sa logique centrale peut être divisée en plusieurs éléments clés:

  1. Identification des extrêmes locaux: la stratégie utilise une fenêtre de temps définie (paramètre BarsN) pour calculer les hauts et les bas locaux comme points de rupture potentiels. Plus précisément, elle utilise une ligne K de BarsN * 2 + 1) pour déterminer les hauts et les bas locaux.

  2. Paramètres de la liste

    • BuyStop (arrêt d’achat): Lorsque le prix actuel est inférieur au sommet local moins la distance de la commande de la zone de protection, un stop-loss est placé à la position du sommet local.
    • SellStop: vente d’un stop loss lorsque le prix actuel est supérieur au point bas local plus la distance de l’ordre de la zone de réserve.
  3. Filtre par temps: La stratégie permet aux traders de définir des heures de négociation et de négocier uniquement dans la plage horaire spécifiée, ce qui permet d’éviter les périodes de négociation indésirables.

  4. Calcul du niveau de profit et de pertes

    • Le point d’arrêt (TP): est calculé en pourcentage du prix actuel (TPasPctBTC).
    • Stop loss (SL): calculé en pourcentage du prix actuel (SLasPctBTC).
    • Distance de commande de la zone de sécurité: jusqu’à la moitié du point d’arrêt pour empêcher le déclenchement prématuré de la commande.
  5. Suivi des mécanismes de coupe

    • Les points de déclenchement (TriggerPoints): Lorsque les gains atteignent ce niveau, les arrêts de suivi des pertes entrent en vigueur.
    • Distance de suivi ((TslPoints): distance entre le stop loss et le prix actuel.
    • Pour les positions à plusieurs titres, le prix d’arrêt est le prix actuel moins la distance de suivi lorsque le profit dépasse le point de déclenchement.
    • Pour les positions à découvert, le prix d’arrêt est le prix actuel plus la distance de suivi lorsque le profit dépasse le point de déclenchement.

Avantages stratégiques

Après une analyse approfondie du code, la stratégie présente les avantages suivants:

  1. Capture automatique des événementsLa stratégie permet de capturer automatiquement les mouvements de rupture des prix en fixant les enchères aux niveaux de prix critiques, sans avoir à surveiller manuellement le marché.

  2. Gestion dynamique des risquesLe système d’arrêt et de perte est basé sur le pourcentage du prix actuel, ce qui rend la gestion des risques plus flexible et s’adapte aux différents niveaux de prix.

  3. Mécanisme de protection des bénéficesLa fonction de suivi des arrêts de perte permet à la stratégie de bloquer efficacement les bénéfices déjà réalisés tout en conservant une marge de profit.

  4. Fonction de filtrage du temps: Permet aux traders de choisir les meilleurs moments de négociation en fonction des caractéristiques du marché et d’éviter de négocier pendant des périodes de faible volatilité ou imprévisibles.

  5. Très adaptable: les paramètres de la stratégie peuvent être ajustés en fonction des conditions du marché, par exemple en ajustant la fenêtre de calcul des extrêmes locaux, le pourcentage de stop-loss, etc., afin de s’adapter à différents environnements de marché.

  6. Une discipline stricteIl s’agit d’une stratégie d’automatisation qui élimine l’influence des facteurs émotionnels sur les décisions de négociation et exécute les transactions strictement selon des règles prédéfinies.

Risque stratégique

Bien que cette stratégie présente de nombreux avantages, elle comporte des risques et des limites potentiels:

  1. Risque de fausse percée: le marché peut produire de fausses ruptures, ce qui conduit la stratégie à entrer dans des transactions indésirables. La solution consiste à augmenter les indicateurs de confirmation ou à ajuster la taille de la distance de l’ordre par rapport à la zone de protection afin de réduire la probabilité de déclenchement de fausses ruptures.

  2. Paramètre Sensibilité: La performance de la stratégie dépend fortement des paramètres tels que BarsN, TPasPctBTC et SLasPctBTC. Des paramètres inappropriés peuvent entraîner une mauvaise performance. Il est recommandé de trouver la combinaison optimale de paramètres en faisant des retours.

  3. Une gestion de fonds incomplète: Bien que le paramètre RiskPercent soit défini dans le code, il n’est pas réellement appliqué pour le calcul de la taille de la position.

  4. La capacité de réaction aux situations extrêmes est limitée: Dans des conditions de marché extrêmes ou très volatiles, les simples ruptures de seuils locaux et des arrêts de pourcentage fixes peuvent ne pas suffire à gérer efficacement le risque.

  5. Points de glissement et délais d’exécution: Dans les transactions réelles, l’exécution des ordres peut rencontrer des points de glissement ou des retards, ce qui affecte la performance de la stratégie.

  6. La dépendance au marché uniqueLes stratégies sont conçues pour des actifs spécifiques et peuvent ne pas s’appliquer à d’autres actifs ayant des caractéristiques de marché différentes.

Orientation de l’optimisation de la stratégie

L’analyse du code permet d’optimiser cette stratégie dans les directions suivantes:

  1. Gestion dynamique des positions: réalisation d’un calcul dynamique de la taille de position basé sur les paramètres RiskPercent, ajustement de la taille de la position en fonction de la taille du compte et du risque du marché actuel, pour un contrôle plus précis du risque.

  2. Mécanisme de confirmation multipleIntroduction d’indicateurs techniques supplémentaires comme confirmation de rupture, tels que la rupture de volume de transaction, l’indicateur de dynamique ou l’indicateur de tendance, afin de réduire les transactions de fausse rupture.

  3. Paramètres d’adaptation: introduire des paramètres qui s’adaptent automatiquement en fonction de la volatilité du marché ou d’autres caractéristiques du marché, permettant ainsi à la stratégie de mieux s’adapter aux différentes conditions du marché.

  4. Stratégie de blocage par lots: mise en place d’un système de blocage par lots permettant à certaines positions de se retirer à différents niveaux de profit, permettant de bloquer une partie des profits tout en conservant une plus grande marge de profit.

  5. Filtre sur l’état du marchéLe système de négociation est basé sur le principe de l’équilibre: augmentation de l’état du marché (trend, oscillation, etc.), ajustement des paramètres de la stratégie ou arrêt des transactions en fonction des différentes conditions du marché.

  6. Optimisation des pertes: la réalisation d’un stop-loss dynamique basé sur l’ATR ou d’autres indicateurs de volatilité rend le stop-loss plus raisonnable.

  7. Cadre de rétroaction et d’optimisation: développer un cadre de rétroaction plus complet, évaluer la performance des stratégies à différentes périodes et avec différents paramètres, et rechercher la combinaison optimale de paramètres.

Résumer

La stratégie de traçabilité de rupture de valeur est un système de négociation automatisé sophistiqué qui permet de gérer le risque en capturant les ruptures d’extrême valeur locales et en appliquant la traçabilité de rupture de valeur. Son avantage central réside dans l’exécution automatisée, la gestion dynamique du risque et la protection des bénéfices, ce qui en fait un outil de négociation potentiellement efficace.

Cependant, l’efficacité d’une stratégie dépend fortement des paramètres et des conditions du marché. La robustesse et l’adaptabilité d’une stratégie peuvent être considérablement améliorées par la mise en œuvre des mesures d’optimisation recommandées, telles que la gestion dynamique des positions, le mécanisme de confirmation multiple et les paramètres d’adaptation.

Pour les traders, il est recommandé de faire un retour d’expérience suffisant avant l’application en direct, de trouver la combinaison de paramètres la plus adaptée à l’environnement de marché actuel et d’envisager de la combiner avec d’autres outils d’analyse pour confirmer les signaux de trading. En même temps, surveiller et évaluer en permanence la performance de la stratégie, en ajustant les paramètres en temps opportun en fonction des changements du marché pour maintenir l’efficacité de la stratégie.

Code source de la stratégie
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-06 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("BTC Trading Robot", overlay=true, pyramiding=1, initial_capital=100000)

//============== Input Groups ==============//
// Trading Profile
group_trading = "BTC"
systemType = input.int(1, title="Trading System (1:BTC)", group=group_trading)

// Common Trading Inputs
group_common = "Trading Inputs"
RiskPercent   = input.float(4.0, title="Risk as % of trading capital", group=group_common)
TradeComment  = input.string("BTC trading robot", title="Trade Comment", group=group_common)
SHInput       = input.int(0, title="Start Hour (0 = no filter)", group=group_common)
EHInput       = input.int(0, title="End Hour (0 = no filter)", group=group_common)

// Gold Related Inputs
group_BTC = "BTC Related Input"
TPasPctBTC         = input.float(0.2, title="TP as % of Price", group=group_BTC)
SLasPctBTC         = input.float(0.1, title="SL as % of Price", group=group_BTC)
TSLasPctofTPBTC   = input.float(5.0, title="Trail SL as % of TP", group=group_BTC)
TSLTgrasPctofTPBTC = input.float(7.0, title="Trail Tgra  SL as % of TP", group=group_BTC)

// Other parameters
BarsN = 5
OrderDistPoints = 100.0

//============== Calculate Trade Parameters ==============//
var float Tppoints = 0.0
var float Slpoints = 0.0
var float TslTriggerPoints = 0.0
var float TslPoints = 0.0

price = close

// Adjust parameters based on system type (using 1 for Gold)
if systemType == 1
    Tppoints := price * TPasPctBTC
    Slpoints := price * SLasPctBTC
    OrderDistPoints := Tppoints / 2.0
    TslPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0
    TslTriggerPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0

//============== Time Filter ==============//
currentHour = hour(time)
inSession = true
if SHInput != 0 and currentHour < SHInput
    inSession := false
if EHInput != 0 and currentHour >= EHInput
    inSession := false

//============== Find Local High and Low ==============//
localHigh = ta.highest(high, BarsN * 2 + 1)
localLow  = ta.lowest(low,  BarsN * 2 + 1)

//============== Entry Orders ==============//
if inSession and strategy.position_size == 0
    // For a BuyStop order: only submit if current price is less than the desired entry level minus a buffer.
    if price < localHigh - OrderDistPoints * syminfo.mintick
        strategy.order("BuyStop", strategy.long, stop=localHigh, comment="BuyStop")
    // For a SellStop order: only submit if current price is greater than the desired entry level plus a buffer.
    if price > localLow + OrderDistPoints * syminfo.mintick
        strategy.order("SellStop", strategy.short, stop=localLow, comment="SellStop")
    
//============== Trailing Stop Logic ==============//
if strategy.position_size > 0  // Long positions
    longProfit = price - strategy.position_avg_price
    if longProfit > TslTriggerPoints * syminfo.mintick
        strategy.exit("Long Exit", from_entry="BuyStop", stop=price - TslPoints * syminfo.mintick, limit=strategy.position_avg_price + Tppoints * syminfo.mintick)
        
if strategy.position_size < 0  // Short positions
    shortProfit = strategy.position_avg_price - price
    if shortProfit > TslTriggerPoints * syminfo.mintick
        strategy.exit("Short Exit", from_entry="SellStop", stop=price + TslPoints * syminfo.mintick, limit=strategy.position_avg_price - Tppoints * syminfo.mintick)