
Aperçu
Cette stratégie est un système de négociation à bas retrait quantifié combinant un filtre de portée (Range Filter) et une amplitude d’onde réelle moyenne (ATR). Elle identifie la direction de la tendance à travers le filtre de portée, tout en utilisant l’ATR pour ajuster dynamiquement la taille de la position et la mise en place d’un stop-loss, afin de contrôler efficacement le risque. La stratégie exige que le prix franchisse deux périodes consécutives de filtres de portée avant de confirmer la tendance.
Principe de stratégie
Le principe central de cette stratégie est la combinaison de l’identification des tendances des filtres de portée et du système de gestion des risques ATR:
Calcul du filtre de portée:
- Commencez par calculer une moyenne mobile simple (SMA) de prix comme ligne centrale.
- On calcule ensuite une moyenne mobile de la valeur absolue de la variation du prix par rapport à cette ligne centrale, en tant que gamme de fluctuation.
- En haut de la trajectoire = ligne centrale + amplitude de fluctuation
- Basse orbite = ligne centrale - gamme de fluctuation
Conditions de confirmation de la tendance:
- Tendance à la hausse: les prix ont terminé deux cycles consécutifs au-dessus de la barre
- Baisse: les prix sont en dessous de la barre pour deux cycles consécutifs
- Ce mécanisme de double confirmation réduit les faux signaux.
Position dynamique ATR:
- Utilisation de l’ATR pour mesurer la volatilité du marché actuel
- Formule de calcul de la position: (Fonds sur compte * Pourcentage de risque) / (ATR * Points)
- Plus le marché est volatile, plus la position est petite; moins le marché est volatile, plus la position est grande
Arrêt de la traînée ATR:
- Le stop loss multiple est réglé sur le prix actuel - (ATR * multiples)
- Le stop loss est réglé sur le prix actuel + (ATR * multiples)
- La ligne de stop-loss se déplace avec le prix dans une direction favorable, bloquant les bénéfices
Avantages stratégiques
Une grande capacité d’adaptation:
- Les filtres de portée s’adaptent automatiquement aux caractéristiques fluctuantes de différents cycles de marché
- Le mécanisme d’ajustement de position ATR permet à la stratégie de s’adapter automatiquement à différents environnements de volatilité
Une excellente gestion des risques:
- Pourcentage de risque fixe par transaction (par défaut 1%)
- Taille de position ajustée en fonction des fluctuations du marché
- Le blocage de suivi est efficace pour verrouiller les bénéfices et limiter les pertes.
Qualité du signal:
- Le mécanisme de double confirmation ((deux cycles consécutifs de rupture) réduit le faux signal
- Les filtres de portée sont efficaces pour filtrer le bruit du marché et identifier les tendances réelles
Caractéristiques de basse rétraction:
- Le stop-loss de suivi limite la perte maximale d’une seule transaction
- Le réglage conservateur des paramètres de risque (risque de 1%) a réduit le retrait global
- Les positions dynamiques diminuent automatiquement pendant les périodes de forte volatilité, réduisant le risque
Transparent et personnalisable:
- Les paramètres de la stratégie sont clairs et logiques
- Les paramètres peuvent être ajustés en fonction des différents marchés et des préférences de risque individuelles
Risque stratégique
Le marché horizontal est en baisse:
- Dans un marché de consolidation sans tendance, il est possible de générer fréquemment de faux signaux de rupture.
- Solution: Ajouter des filtres de tendance supplémentaires ou augmenter le nombre de cycles de confirmation
Le risque d’une reprise rapide:
- Le stop-loss de suivi peut ne pas être en place à temps en cas d’une reprise soudaine de la tendance forte.
- Solution: augmentation de l’indicateur de volatilité ou réduction de la distance de retard
Paramètre Sensibilité:
- Le choix des cycles de filtrage de portée et des multiples ATR a un impact significatif sur la performance de la stratégie
- Solution: effectuer un retour d’expérience complet et trouver une combinaison de paramètres solide
Risque de pertes consécutives:
- Même si le risque est bien maîtrisé pour chaque transaction, des transactions à perte consécutives peuvent entraîner des retraits plus importants.
- Solution: définir une limite de pertes maximales consécutives ou ajouter un filtre d’environnement de marché
Les points de glissement et les frais de traitement:
- Dans les transactions en direct, les points de glissement et les commissions peuvent avoir un impact significatif sur la performance de la stratégie.
- Solution: ajouter des frais raisonnables et des estimations de points de glissement dans les retours, pour garder suffisamment de marge de profit
Orientation de l’optimisation de la stratégie
Ajouter un filtre d’environnement de marché:
- On peut introduire des indicateurs de volatilité (comme la bande passante de Bollinger) pour identifier l’état du marché
- Suspension de la négociation ou ajustement des paramètres dans un marché à faible volatilité ou en liquidation
- Cela réduirait les faux signaux dans les marchés horizontaux et améliorerait la probabilité de victoire globale.
Optimiser le cycle du filtre de portée:
- Envisager d’utiliser des cycles d’adaptation plutôt que des cycles fixes
- Les cycles de filtrage peuvent être ajustés automatiquement en fonction des fluctuations du marché
- Cela permettra aux stratégies de mieux s’adapter aux différentes phases du marché
Introduction d’une confirmation à plusieurs périodes:
- Augmentation des conditions de confirmation de tendance sur une période plus longue
- Ne négociez que dans la direction de la tendance majeure et évitez de négocier à contre-courant.
- Cela améliorera considérablement la qualité du signal et le taux de réussite.
Modification dynamique du coefficient ATR:
- ATR multiplié par le stop loss suivi d’un ajustement dynamique basé sur les caractéristiques de la volatilité du marché
- Un plus petit multiple est utilisé dans les marchés à faible volatilité, un plus grand multiple dans les marchés à forte volatilité
- Cela améliorerait l’efficacité et la flexibilité de l’arrêt des pertes.
Ajout d’un mécanisme de retrait basé sur le temps:
- Définition de la durée maximale de détention
- Si le prix ne se déplace pas dans la direction prévue pendant un certain temps, forcer une position de levage
- Cela permet d’éviter que les fonds restent bloqués dans des transactions inefficaces pendant une longue période.
Résumer
La stratégie du filtre à double confirmation de portée combinant un système de position ATR dynamique et un système d’arrêt de suivi est une stratégie de négociation quantitative axée sur le contrôle du risque. Elle identifie la direction de la tendance à travers le filtre à portée, nécessite deux cycles consécutifs de ruptures pour confirmer le signal, utilise l’ATR pour ajuster dynamiquement la taille de la position et le paramètre de suivi, contrôlant efficacement le risque de chaque transaction dans un pourcentage prédéfini. Les principaux avantages de la stratégie résident dans la forte adaptabilité et l’excellente capacité de contrôle du risque, particulièrement adaptée aux marchés à forte volatilité mais avec une tendance évidente.
Code source de la stratégie
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true,
pyramiding=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, commission_type=strategy.commission.percent,
commission_value=0.1, initial_capital=10000)
// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")
// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter
// Calculate ATR
atr = ta.atr(atrPeriod)
// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]
// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)
// Strategy logic
if (upTrend)
strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
if (downTrend)
strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)
// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)
// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")