
La stratégie d’hypothèque dynamique de la chaîne de prix progressive intelligente est une stratégie de négociation en ligne longue basée sur la chaîne de prix de la chaîne de prix en mouvement, qui effectue des achats lorsque le prix tombe en dessous de la chaîne de prix et contrôle les risques de manière progressive. La stratégie prend en charge jusqu’à huit achats, avec une période de refroidissement entre les achats et un arrêt basé sur le prix d’entrée moyen ou un arrêt basé sur le contrôle des risques.
L’idée centrale de la stratégie est d’effectuer des achats lorsque les prix rebondissent jusqu’à la descente de la courbe de la courbe de la moyenne mobile, ce qui représente généralement une zone de survente à court terme, puis de réaliser des bénéfices lorsque les prix rebondissent jusqu’à la hausse, tout en établissant des arrêts raisonnables pour contrôler les risques. La stratégie tire parti des caractéristiques de la volatilité des prix, réduit le coût moyen par des achats en lots multiples et convient aux environnements de marché très volatils.
Les principes fondamentaux de cette stratégie reposent sur les éléments clés suivants:
Moyenne mobile de la bande de couverture:
Conditions d’entrée:
Conditions de jeu:
Gestion des positions:
Le jugement des tendances:
Contrôle progressif des risques: Cette stratégie utilise une méthode d’augmentation progressive des positions au lieu d’acheter toutes les positions en une fois, ce qui permet de répartir efficacement le risque d’entrée. Grâce à un maximum de 8 occasions d’augmentation des positions, le coût moyen est continuellement réduit dans une tendance à la baisse, ce qui augmente la probabilité de profit final.
Mécanisme d’entrée et de sortie automatisé: Les stratégies permettent de juger automatiquement les points d’entrée et de sortie en fonction d’indicateurs techniques clairs, réduisant ainsi les décisions commerciales émotionnelles liées à des jugements subjectifs.
Adaptation des paramètres avec souplesse: Les stratégies offrent de nombreux paramètres réglables, tels que la longueur de la ligne de couverture, le pourcentage de déviation, le pourcentage de stop loss et la période de refroidissement des achats, qui peuvent être optimisés en fonction des différentes conditions du marché.
La capacité à détecter les tendances: Les stratégies identifient les tendances en déterminant la direction de la ligne de référence et assouplissent les conditions d’achat de manière appropriée dans les tendances haussières, ce qui améliore la flexibilité et l’adaptabilité des stratégies.
Utilisation de la volatilité: Il est particulièrement adapté aux marchés très volatiles, où il est possible d’exploiter efficacement les fluctuations des prix pour faire des prises de position et des profits. Plus la volatilité est grande, plus le potentiel de gain de la stratégie est élevé.
Risque d’inversion de tendance: Dans une forte tendance à la baisse, les prix peuvent continuer à se briser, ce qui entraîne des pertes après plusieurs prises de position. Bien que des mécanismes de stop-loss aient été mis en place, dans des situations extrêmes, des pertes plus importantes peuvent être déclenchées.
Paramètre Sensibilité: La performance de la stratégie dépend fortement de la configuration des paramètres, et différents environnements de marché peuvent nécessiter différentes combinaisons de paramètres. Une configuration erronée des paramètres peut entraîner une survente ou une perte d’opportunités de trading.
Besoin de fonds: Comme la stratégie permet un maximum de huit achats, il est nécessaire d’avoir suffisamment de fonds pour soutenir plusieurs prises de position si le marché continue à baisser, ce qui peut être au-delà de la capacité d’un compte à petit capital.
Risques de réglage pendant la période de refroidissement: Une mauvaise configuration de la période de refroidissement peut entraîner la perte d’importantes opportunités d’achat ou la mise en place d’actions prématurées au mauvais moment.
Réservoir de risque: Si le pourcentage de freinage est trop élevé, vous risquez de manquer une opportunité de profit; si le pourcentage de freinage est trop bas, vous risquez de limiter l’espace de profit potentiel.
Ajustement des paramètres de bande passante dynamique: On peut envisager d’ajuster automatiquement le pourcentage de décalage de la bande passante en fonction de la volatilité du marché, en utilisant un décalage plus petit dans les marchés à faible volatilité et un décalage plus important dans les marchés à forte volatilité. Cela permet de mieux s’adapter aux différentes conditions du marché.
Ajout de filtres de tendance plus sophistiqués: Les stratégies actuelles utilisent une simple ligne de référence pour déterminer la direction de la tendance. On peut envisager d’ajouter des indicateurs de tendance plus complexes (comme le MACD, l’ADX, etc.) pour améliorer l’exactitude de la détermination de la tendance et éviter d’acheter prématurément dans une forte tendance à la baisse.
Système d’arrêt dynamique: Il est possible de modifier un stop loss à un pourcentage fixe en un mécanisme d’ajustement dynamique basé sur la volatilité du marché, par exemple en définissant un niveau de stop loss basé sur l’ATR (Average True Range).
Optimisation de la gestion des fonds: Il est possible d’attribuer des positions dynamiques au lieu d’acheter un montant fixe pour chaque achat. Par exemple, il est possible d’utiliser une plus petite proportion de fonds pour un premier achat et d’augmenter progressivement le montant d’achat à mesure que les prix continuent de baisser.
Ajouter un filtre de temps: Envisagez d’ajouter des conditions de filtrage basées sur le temps, d’éviter de négocier pendant les périodes de faible activité du marché ou d’identifier les périodes les plus favorables en fonction des statistiques historiques.
La stratégie d’hypothèque dynamique d’hypothèque progressive intelligente est une méthode de négociation systématique qui combine l’analyse technique et la gestion des risques. La stratégie identifie les opportunités d’achat potentielles à travers la bande de paquetage des moyennes mobiles, utilise l’hypothèque progressive pour réduire le coût moyen et définit des règles claires de contrôle des risques de stop loss.
La stratégie est particulièrement adaptée pour être utilisée dans des marchés très volatiles, et peut exploiter efficacement les fluctuations de prix pour créer des opportunités de profit. En même temps, il y a beaucoup de place pour l’amélioration de la stratégie grâce à l’optimisation des paramètres et à l’ajout de filtres supplémentaires. Cependant, les utilisateurs doivent être attentifs aux risques de la stratégie, en particulier le risque de pertes continues qui peut être présent dans une forte baisse, s’assurer qu’il y a suffisamment de fonds pour soutenir plusieurs prises de position et ajuster les paramètres en fonction des différentes conditions du marché.
Dans l’ensemble, la stratégie offre un cadre de trading systématisé, combinant des éléments de suivi des tendances et de trading contre-la-montre, réduisant les décisions émotionnelles par des règles claires et aidant à cultiver des habitudes de trading disciplinées. C’est une option de stratégie à considérer pour les traders qui cherchent à obtenir des rendements stables sur des marchés volatiles.
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("SmartScale Envelope DCA",
overlay=true,
pyramiding=8,
default_qty_type=strategy.cash,
default_qty_value=25, // Order size = $25 CAD
initial_capital=200, // Initial capital = $200 CAD
currency=currency.CAD) // Base currency = CAD
// === Inputs
len = input.int(13, title="Envelope Length", minval=1)
percent = input.float(6.6, title="Envelope % Offset", step=0.1) / 100
src = input(close, title="Source")
exponential = input(false)
stopLossPctInput = input.float(15.0, title="Stop Loss %", minval=0.1, step=0.1)
takeProfitPctInput = input.float(5.0, title="Take Profit % from Avg Entry", minval=0.1, step=0.1)
cooldown = input.int(7, title="Candles Between Buys") // moved to bottom
stopLossPct = stopLossPctInput / 100
takeProfitPct = takeProfitPctInput / 100
maxBuys = 8 // Hardcoded max buy-ins
// === Envelope Calculation
basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
upper = basis * (1 + percent)
lower = basis * (1 - percent)
// === Limit Backtest to Last 365 Days
startDate = timestamp("GMT-5", year(timenow), month(timenow), dayofmonth(timenow)) - 365 * 24 * 60 * 60 * 1000
inDateRange = time >= startDate
// === State Tracking
var float avgEntryPrice = na
var float lastBuyPrice = na
var int buyCount = 0
var int lastBuyBar = na
// === Trend Detection
isUptrend = basis > basis[1]
// === Entry Conditions
lowBelowLower = low < lower
cooldownPassed = na(lastBuyBar) or (bar_index - lastBuyBar >= cooldown)
belowAvgEntry = na(avgEntryPrice) or close < avgEntryPrice
lowerThanLastBuy = na(lastBuyPrice) or close < lastBuyPrice
allowBuyIn = (belowAvgEntry and lowerThanLastBuy) or isUptrend
highAboveUpper = high > upper
// === Exit Conditions
sellCondition = not na(avgEntryPrice) and close >= avgEntryPrice * (1 + takeProfitPct)
stopLossTriggered = not na(avgEntryPrice) and close <= avgEntryPrice * (1 - stopLossPct)
// === Buy Logic
if inDateRange and lowBelowLower and cooldownPassed and buyCount < maxBuys and allowBuyIn and (na(lastBuyPrice) or close <= lastBuyPrice)
buyCount += 1
strategy.entry("Buy in " + str.tostring(buyCount), strategy.long)
lastBuyBar := bar_index
lastBuyPrice := close
avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * (buyCount - 1) + close) / buyCount
// === Sell Logic
if strategy.position_size > 0 and highAboveUpper and sellCondition
strategy.close_all(comment="Take Profit")
avgEntryPrice := na
buyCount := 0
lastBuyBar := na
lastBuyPrice := na
// === Stop Loss Logic
if strategy.position_size > 0 and stopLossTriggered
strategy.close_all(comment="Stop Loss Hit")
avgEntryPrice := na
buyCount := 0
lastBuyBar := na
lastBuyPrice := na
// === Plot Envelope
plot(basis, "Basis", color=color.orange)
u = plot(upper, "Upper", color=color.blue)
l = plot(lower, "Lower", color=color.blue)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Envelope Background")
// === Plot Avg Entry Price
plot(strategy.position_size > 0 and not na(avgEntryPrice) ? avgEntryPrice : na,
title="Avg Entry Price",
color=color.rgb(173, 195, 226),
linewidth=2,
style=plot.style_line)