Stratégie adaptative de stop-profit et de stop-loss dynamique basée sur le croisement SMA et le filtrage du volume

SMA
Date de création: 2024-07-31 11:20:39 Dernière modification: 2024-07-31 11:20:39
Copier: 0 Nombre de clics: 483
1
Suivre
1617
Abonnés

Stratégie adaptative de stop-profit et de stop-loss dynamique basée sur le croisement SMA et le filtrage du volume

Aperçu

Cette stratégie est un système de trading automatisé basé sur des croisements de moyennes mobiles simples (SMA) et des filtres de volume de transactions. Elle utilise des croisements de SMA rapides et lents pour générer des signaux d’entrée, tout en combinant des indicateurs de volume de transactions pour confirmer la force de la tendance. La stratégie comprend également des mécanismes d’arrêt et d’arrêt dynamiques et des conditions d’exit basées sur le temps, visant à optimiser la gestion des risques et à améliorer la rentabilité.

Principe de stratégie

Les principes fondamentaux de cette stratégie reposent sur les éléments clés suivants:

  1. Signaux de croisement SMA:

    • Moyenne mobile simple utilisant deux périodes différentes (SMA rapide et SMA lente)
    • Un signal de multiplication est généré lorsque le SMA rapide traverse le SMA lent en dessous
    • Un signal de décalage est généré lorsque le SMA rapide traverse le SMA lent par le haut
  2. Filtrez le nombre de livraisons:

    • Une moyenne mobile simple pour calculer le volume des transactions
    • La multiplication des signaux nécessite un volume de transaction actuel supérieur au volume de transaction SMA
    • Les signaux de dégagement exigent un volume de transaction actuel inférieur au volume de transaction SMA
  3. La plupart des gens ne sont pas d’accord avec ce que je dis.

    • Définition des niveaux de stop loss et stop loss en pourcentage du prix d’entrée
    • Les niveaux d’arrêt et d’arrêt peuvent être ajustés via des paramètres d’entrée
  4. Date de sortie:

    • Définition de la durée maximale de détention (en ligne K)
    • La liquidation automatique des positions dépassant la durée maximale de détention pour éviter de détenir des positions défavorables à long terme
  5. Paramètres pendant la réception:

    • Permettre à l’utilisateur de définir une plage de temps de réponse spécifique
    • S’assurer que la stratégie ne fonctionne que pendant la période historique spécifiée

Avantages stratégiques

  1. Le suivi des tendances est associé à la dynamique: La combinaison de la croisée SMA et du filtrage de la masse permet de capturer les tendances fortes tout en évitant les échanges fréquents dans les marchés faibles.

  2. La gestion des risques est flexible: Les mécanismes de stop-loss et de stop-loss dynamiques permettent aux stratégies d’ajuster automatiquement leur exposition au risque en fonction de la volatilité du marché, ce qui contribue à protéger les bénéfices et à limiter les pertes potentielles.

  3. Pour éviter les positions excessives: La limite de la durée maximale de détention aide à empêcher la stratégie de détenir des positions à perte pendant une longue période dans des conditions de marché défavorables et favorise l’utilisation efficace des fonds.

  4. Une personnalisation forte: Plusieurs paramètres réglables (par exemple, cycle SMA, pourcentage de stop-loss, durée de maintien maximale, etc.) permettent d’optimiser la stratégie en fonction des différents marchés et styles de négociation.

  5. Le soutien visuel: La stratégie trace les lignes SMA et les signaux de négociation sur un graphique pour faciliter la compréhension visuelle et l’analyse de la performance de la stratégie.

Risque stratégique

  1. Le retard: L’indicateur SMA est intrinsèquement retardé, ce qui peut entraîner des retards d’entrée ou des opportunités manquées dans des marchés à basse vitesse.

  2. Le risque de fausse intrusion: Dans les marchés de gré à gré, les croisements SMA peuvent générer de fréquents signaux de fausse rupture, entraînant une survente des transactions et un accroissement des coûts de transaction.

  3. Le chiffre d’affaires dépend de: Une dépendance excessive à l’indicateur de volume de transactions peut induire en erreur la stratégie dans certaines conditions de marché, en particulier pendant les périodes de faible liquidité ou de volume de transactions anormal.

  4. Pourcentage fixe d’arrêt/arrêt: L’utilisation d’un pourcentage fixe de stop-loss et de stop-loss peut ne pas convenir à toutes les conditions du marché, en particulier pendant les périodes de forte volatilité.

  5. La limitation de la sortie sur une base temporelle: La durée maximale de détention fixe peut entraîner une liquidation prématurée de la position alors que la tendance favorable n’est pas encore terminée, affectant les gains potentiels.

Orientation de l’optimisation de la stratégie

  1. Modification des paramètres dynamiques: Il est possible d’adapter les cycles SMA, le pourcentage de stop loss et le temps de maintien maximal à la dynamique des variations et à la volatilité du marché.

  2. Incorporer des filtres supplémentaires: L’introduction d’autres indicateurs techniques (comme le RSI, le MACD, etc.) comme conditions de filtrage supplémentaires améliore la précision des signaux de trading.

  3. Le taux de conversion est le plus élevé au monde, avec un taux d’accroissement annuel de 2,5%. Développer des mécanismes de dépréciation des volumes de transaction adaptés dynamiquement pour mieux s’adapter aux caractéristiques des volumes de transaction à différents stades du marché.

  4. Amélioration du mécanisme de retrait: L’exploration de mécanismes de sortie intelligents basés sur la structure du marché ou des indicateurs de dynamique, qui remplacent les sorties à temps fixe, améliore l’adaptabilité des stratégies.

  5. Adaptation à la volatilité: La mise en œuvre d’ajustements dynamiques des niveaux d’arrêt et d’arrêt en fonction de la volatilité du marché pour mieux gérer les risques et capturer les bénéfices.

  6. Une analyse de plusieurs périodes: L’intégration d’analyses de données sur plusieurs périodes permet à la stratégie d’identifier les tendances et les retournements du marché.

  7. L’optimisation de l’apprentissage machine: L’utilisation d’algorithmes d’apprentissage automatique pour optimiser dynamiquement les paramètres de la stratégie et améliorer la performance de la stratégie dans différents environnements de marché.

Résumer

La “stratégie d’arrêt de perte dynamique adaptative avec filtrage SMA croisé et en cours” est un système de négociation intégré qui combine le suivi des tendances, l’analyse de la transaction et la gestion des risques. En utilisant la croisée SMA et le filtrage de la transaction, la stratégie vise à capturer les tendances fortes du marché, tandis que son mécanisme d’arrêt de perte dynamique et sa fonction de sortie basée sur le temps offrent un contrôle du risque flexible. Malgré certaines limites inhérentes, telles que le retard de signal et la dépendance à des paramètres fixes, la stratégie offre plusieurs directions d’optimisation, y compris l’ajustement dynamique des paramètres, l’introduction d’indicateurs techniques supplémentaires et l’utilisation de techniques d’apprentissage automatique.

Code source de la stratégie
/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple_CrossOver_Bot_V1_EBO", overlay=true)

// INPUTS
dateStart_Year = input.int(2018, title="Start Year", minval=2000)
dateStart_Month = input.int(1, title="Start Month", minval=1, maxval=12)
dateStart_Day = input.int(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input.int(2019, title="End Year", minval=2000)
dateEnd_Month = input.int(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input.int(1, title="End Day", minval=1, maxval=31)

fast_SMA_input = input.int(7, title="SMA Fast")
slow_SMA_input = input.int(25, title="SMA Slow")
volume_SMA_input = input.int(20, title="Volume SMA")
stop_loss_percent = input.float(1.0, title="Stop Loss (%)", step=0.1) / 100
take_profit_percent = input.float(2.0, title="Take Profit (%)", step=0.1) / 100
max_bars_in_trade = input.int(50, title="Max Bars in Trade", minval=1)

// INDICATORS
fast_SMA = ta.sma(close, fast_SMA_input)
slow_SMA = ta.sma(close, slow_SMA_input)
volume_SMA = ta.sma(volume, volume_SMA_input)

// STRATEGY
LONG = ta.crossover(fast_SMA, slow_SMA) and fast_SMA > slow_SMA and volume > volume_SMA
SHORT = ta.crossunder(fast_SMA, slow_SMA) and fast_SMA < slow_SMA and volume < volume_SMA

// TRIGGERS
testPeriodStart = timestamp(dateStart_Year, dateStart_Month, dateStart_Day)
testPeriodEnd = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day)
timecondition = true

// Track bar index for entries
var int long_entry_bar_index = na
var int short_entry_bar_index = na

if timecondition
    if LONG
        strategy.entry(id="LONG", direction=strategy.long)
        long_entry_bar_index := bar_index
    if SHORT
        strategy.entry(id="SHORT", direction=strategy.short)
        short_entry_bar_index := bar_index

    // Exit conditions for LONG
    if not na(long_entry_bar_index) and bar_index - long_entry_bar_index >= max_bars_in_trade
        strategy.close("LONG")
        long_entry_bar_index := na
    
    // Exit conditions for SHORT
    if not na(short_entry_bar_index) and bar_index - short_entry_bar_index >= max_bars_in_trade
        strategy.close("SHORT")
        short_entry_bar_index := na

    // Standard exits
    if LONG
        strategy.exit("Exit LONG", from_entry="LONG", stop=close * (1 - stop_loss_percent), limit=close * (1 + take_profit_percent))
    if SHORT
        strategy.exit("Exit SHORT", from_entry="SHORT", stop=close * (1 + stop_loss_percent), limit=close * (1 - take_profit_percent))

// PLOTS
plot(fast_SMA, color=color.green, linewidth=1, title="Fast SMA")
plot(slow_SMA, color=color.yellow, linewidth=1, title="Slow SMA")
plot(volume_SMA, color=color.blue, linewidth=1, title="Volume SMA")
plotshape(series=LONG, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=SHORT, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// Uncomment the following lines for alerts
// alertcondition(LONG, title="LONG")
// alertcondition(SHORT, title="SHORT")