Stratégie de moyenne mobile avec stop loss à clôture dynamique


Date de création: 2024-01-29 15:52:43 Dernière modification: 2024-01-29 15:52:43
Copier: 0 Nombre de clics: 621
1
Suivre
1617
Abonnés

Stratégie de moyenne mobile avec stop loss à clôture dynamique

Aperçu

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.

Principe de stratégie

La stratégie est principalement composée des éléments suivants:

  1. L’ATR est calculé sur la base de la ligne de stop-loss longue et courte

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
  1. Une avancée pour déterminer la direction de la transaction

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:

    长仓止损线上方突破,做多
    短仓止损线下方突破,做空
  1. Retour sur le risque par rapport à l’arrêt et au stop

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.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Tracking dynamique des pertes et des pertes en temps réel

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.

  1. Il est également doté d’une fonction d’arrêt de perte et de jugement d’entrée.

La stratégie de stop loss est utilisée comme critère d’entrée et simplifie la logique de la stratégie.

  1. Résolution du risque/rendement

Il est important d’avoir un rapport de risque/rendement bien établi et de rechercher des bénéfices plus élevés.

  1. Facile à comprendre et à développer

La stratégie est structurée de manière simple, facile à comprendre et à optimiser.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les risques bilatéraux

Cette stratégie est une stratégie de négociation bilatérale, qui prend en charge les risques de survente et de sous-vente.

  1. Dépendance des paramètres ATR

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.

  1. Adaptation à la tendance du marché

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:

  1. Indicateur de tendance

Les indicateurs de tendance tels que les MA sont utilisés pour évaluer les tendances du marché et éviter les transactions négatives.

  1. Combinaison de paramètres d’optimisation

Optimisation des paramètres ATR et des paramètres RRR pour rendre les arrêts de perte et les arrêts plus raisonnables.

  1. Ajout de conditions de filtrage

Augmentation des conditions de filtrage du volume de transactions ou des indicateurs de volatilité pour assurer la qualité des transactions.

Direction d’optimisation

Il y a encore de la place pour optimiser cette stratégie:

  1. L’apprentissage combiné

L’utilisation de modèles d’apprentissage automatique pour prédire les tendances des prix et améliorer la précision d’entrée.

  1. Options pour créer un portefeuille sans risque

Utilisez la volatilité des variétés de couverture d’options pour construire un portefeuille sans risque de arbitrage.

  1. Arbitrage entre les différentes variétés

L’arbitrage statistique entre les différents marchés et les différentes variétés permet d’obtenir une Alpha stable.

  1. Algorithmes de négociation

Le trading algorithmique est utilisé pour effectuer des retours de stratégie et des transactions en direct.

Résumer

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.

Code source de la stratégie
/*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!")