Stratégie adaptative de stop-profit et de stop-loss dynamique à double moyenne mobile croisée

SMA MA SL TP ATR
Date de création: 2024-11-18 15:32:26 Dernière modification: 2024-11-18 15:54:16
Copier: 0 Nombre de clics: 505
1
Suivre
1617
Abonnés

Stratégie adaptative de stop-profit et de stop-loss dynamique à double moyenne mobile croisée

Aperçu

La stratégie est un système de trading quantitatif basé sur des signaux de croisement bihomogène, qui identifie les changements de tendance du marché par la croisement des moyennes mobiles à court et à long terme, et combine la gestion dynamique des arrêts de perte pour contrôler les risques. La stratégie utilise des ordres de marché pour les transactions, qui liquident automatiquement les positions existantes et ouvrent de nouvelles positions lorsque le signal est déclenché, pour protéger les fonds en définissant des points d’arrêt de perte.

Principe de stratégie

La stratégie utilise une moyenne mobile simple (SMA) de deux périodes différentes comme base principale du signal de négociation. Lorsque la courte moyenne court sur la moyenne longue, le système génère un signal de multiplication; lorsque la courte moyenne court sur la moyenne longue, le système génère un signal de rupture.

Avantages stratégiques

  1. La clarté du mécanisme de signalement - le croisement bi-homogène est un indicateur technique classique, le signal est clair et facile à comprendre
  2. Gestion des risques - contrôle des risques de chaque transaction par un stop-loss dynamique
  3. Automatisation élevée - exécution automatique du processus de reconnaissance des signaux à la gestion des positions
  4. Adaptabilité - peut être ajusté par paramètres pour s’adapter à différents environnements de marché
  5. Structure simple - logique claire du code, facile à entretenir et à optimiser
  6. Surveillance en temps réel - Mise en place de rappels de transaction pour suivre la mise en œuvre de la stratégie

Risque stratégique

  1. Risque de choc du marché - les transactions fréquentes peuvent entraîner des pertes dans des conditions de choc dans la zone
  2. Risque de glissement - la mise en œuvre du marché peut être confrontée à un glissement plus important
  3. Sensitivité des paramètres - le choix de la période de la moyenne a un impact plus important sur la performance de la stratégie
  4. Risque de fausse rupture - peut-être une reprise rapide après une brève rupture
  5. Risques de gestion de fonds - un pourcentage fixe de stop loss peut ne pas convenir à tous les environnements de marché

Orientation de l’optimisation de la stratégie

  1. Augmentation des filtres de tendance pour éviter les échanges fréquents sur les marchés en crise
  2. Introduction d’un indicateur de volatilité dynamiquement ajusté avec un ratio de stop loss
  3. Ajout d’un signal de confirmation de transaction pour améliorer la qualité des transactions
  4. Optimiser le moment de l’ouverture des positions et envisager l’introduction d’un mécanisme de réajustement des prix
  5. Amélioration du système de gestion des fonds et contrôle dynamique des positions
  6. Augmenter les indicateurs de sentiment du marché et améliorer la fiabilité des signaux

Résumer

Il s’agit d’une stratégie de trading quantifiée, structurée et logiquement claire. Elle capte les changements de tendance par une croisée de deux lignes homogènes, associée à une gestion dynamique des risques de stop-loss. L’avantage de la stratégie réside dans son degré élevé de systématisation.

Code source de la stratégie
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)

// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)

// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)

// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")

// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)

// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
    // Close any existing short position
    if (strategy.position_size < 0)
        strategy.close(id="Market Sell")
    
    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    long_stop = entry_price * (1 - stop_loss_percent / 100)
    long_take_profit = entry_price * (1 + take_profit_percent / 100)

    // Enter Long Position
    strategy.entry(id="Market Buy", direction=strategy.long)
    strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)

    // Alert for Market Buy
    alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)

// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
    // Close any existing long position
    if (strategy.position_size > 0)
        strategy.close(id="Market Buy")

    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    short_stop = entry_price * (1 + stop_loss_percent / 100)
    short_take_profit = entry_price * (1 - take_profit_percent / 100)

    // Enter Short Position
    strategy.entry(id="Market Sell", direction=strategy.short)
    strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)

    // Alert for Market Sell
    alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)