
Cette stratégie utilise la logique du trailing stop dynamique pour calculer la ligne de perte de la position longue et courte en fonction de l’ATR et de la valeur maximale du prix. En combinaison avec l’idée de la sortie de Chandelier, la direction de la position longue et courte est déterminée en fonction de la direction de la ligne de perte.
La stratégie a le double rôle de juger des signaux d’arrêt et d’entrée.
La stratégie est principalement composée des éléments suivants:
Calculer l’ATR en temps réel en fonction de la longueur et du multiple des périodes d’ATR définis par l’utilisateur. Calculer ensuite une ligne de stop-loss longue et courte en fonction de l’ATR et des valeurs maximales du prix:
longStop = 最高价 - ATR
shortStop = 最低价 + ATR
Comparer le stop-loss d’une ligne K précédente avec le stop-loss de la ligne K actuelle. Si le stop-loss de la ligne K actuelle est franchi, un signal de transaction est émis:
长仓止损线上方突破,做多
短仓止损线下方突破,做空
L’ATR est utilisé pour calculer la distance d’arrêt et la distance d’arrêt en fonction du ratio de retour sur risque par rapport au ratio de récompense par risque (riskRewardRatio) défini par l’utilisateur. Il y a aussi des ordres de stop-loss et des ordres de stop-loss lors de l’ouverture d’une position.
Cette stratégie présente les avantages suivants:
La stratégie utilise un suivi dynamique des lignes de stop-loss pour arrêter les pertes en temps opportun et contrôler le risque de baisse.
La stratégie de stop loss est utilisée comme critère d’entrée et simplifie la logique de la stratégie.
Il est important d’avoir un rapport de risque/rendement bien établi et de rechercher des bénéfices plus élevés.
La stratégie est structurée de manière simple, facile à comprendre et à optimiser.
Cette stratégie comporte aussi des risques:
Cette stratégie est une stratégie de négociation bilatérale, qui prend en charge les risques de survente et de sous-vente.
La configuration des paramètres ATR affecte directement la ligne de stop-loss et la fréquence des transactions. Une configuration incorrecte peut entraîner un stop-loss trop souple ou une fréquence de transaction trop élevée.
Cette stratégie est plus adaptée aux situations de rupture après correction de la moyenne que pour les scénarios trop tendanciels.
Les risques ci-dessus peuvent être optimisés par:
Les indicateurs de tendance tels que les MA sont utilisés pour évaluer les tendances du marché et éviter les transactions négatives.
Optimisation des paramètres ATR et des paramètres RRR pour rendre les arrêts de perte et les arrêts plus raisonnables.
Augmentation des conditions de filtrage du volume de transactions ou des indicateurs de volatilité pour assurer la qualité des transactions.
Il y a encore de la place pour optimiser cette stratégie:
L’utilisation de modèles d’apprentissage automatique pour prédire les tendances des prix et améliorer la précision d’entrée.
Utilisez la volatilité des variétés de couverture d’options pour construire un portefeuille sans risque de arbitrage.
L’arbitrage statistique entre les différents marchés et les différentes variétés permet d’obtenir une Alpha stable.
Le trading algorithmique est utilisé pour effectuer des retours de stratégie et des transactions en direct.
Cet article analyse en profondeur une stratégie de trading quantitatif basée sur le suivi dynamique des arrêts de perte. Cette stratégie a à la fois des fonctions de gestion des arrêts et de jugement des signaux de négociation, permettant de contrôler efficacement les risques. Nous analysons également les avantages de la stratégie, les risques potentiels et les idées d’optimisation ultérieures.
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)
// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)
// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr
// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1
// Entry Signals
if (longCondition)
strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')
// Alerts
if (dir != dir[1])
strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")