Suivi des tendances SMA multi-échelles de temps et stratégie de stop loss dynamique

SMA Trend
Date de création: 2024-06-03 10:57:05 Dernière modification: 2024-06-03 10:57:05
Copier: 3 Nombre de clics: 553
1
Suivre
1617
Abonnés

Suivi des tendances SMA multi-échelles de temps et stratégie de stop loss dynamique

Aperçu

La stratégie est basée sur des moyennes mobiles simples (SMA) sur différentes échelles de temps pour capturer les tendances du marché. Elle génère des signaux d’achat et de vente en comparant les positions relatives des SMA à court et à long terme. Elle utilise également des conditions de confirmation de tendance pour filtrer les faux signaux et améliorer l’exactitude des transactions.

Principe de stratégie

  1. Calculer les SMA à court et à long terme pour déterminer la direction des tendances du marché.
  2. Un signal d’achat est généré lorsque le SMA court est porté sur le SMA long; un signal de vente est généré lorsque le SMA court est porté sur le SMA long.
  3. Les conditions de confirmation de la tendance sont utilisées pour filtrer les faux signaux. L’achat est effectué uniquement lorsque la tendance principale est à plusieurs têtes et la vente uniquement lorsque la tendance principale est vide.
  4. La fonction Stop and Loss est configurée pour contrôler le risque de transaction. Lorsque le prix atteint le niveau d’arrêt ou de perte par défaut, la position est libérée.
  5. Ajustez votre position dynamiquement en fonction des conditions de confirmation de la tendance. Lorsque la tendance principale change, retirez votre position en temps opportun pour éviter les pertes causées par le renversement de la tendance.

Avantages stratégiques

  1. Suivi des tendances: la stratégie est basée sur des SMA sur différentes échelles de temps, captant efficacement les principales tendances du marché et s’adaptant aux différentes conditions du marché.
  2. Confirmation de tendance: par l’introduction de conditions de confirmation de tendance, filtrer les faux signaux, améliorer la fiabilité des signaux de négociation et réduire les transactions invalides.
  3. Gestion des risques: fonctionnalités de blocage et d’arrêt de perte intégrées pour aider à contrôler les risques de transaction et à protéger la sécurité des fonds des investisseurs.
  4. Adaptation dynamique: Adaptation dynamique des positions en fonction de la confirmation de la tendance, afin de répondre en temps opportun aux changements du marché et de réduire les pertes causées par le renversement de la tendance.

Risque stratégique

  1. Risque d’optimisation des paramètres: la performance de la stratégie dépend du cycle SMA et du choix des paramètres d’équilibre des pertes et des pertes. Des paramètres mal configurés peuvent entraîner une mauvaise efficacité de la stratégie.
  2. Risque de marché de choc: dans un environnement de marché de choc, des signaux de trading fréquents peuvent conduire à des transactions excessives, augmentant les coûts et les risques de transaction.
  3. Risque d’événement majeur: face à un événement majeur, le marché peut être très volatile et la stratégie peut ne pas être en mesure de réagir en temps opportun, ce qui entraîne des pertes importantes.

Orientation de l’optimisation de la stratégie

  1. L’introduction de plus d’indicateurs techniques: en combinaison avec d’autres indicateurs techniques, tels que le MACD, le RSI, etc., améliore l’exactitude et la solidité des jugements de tendance.
  2. Optimisation des paramètres: recherche de la meilleure combinaison de paramètres de cycle SMA, de stop loss et d’équilibre, et amélioration de la performance de la stratégie par le retrait des données historiques et l’optimisation des paramètres.
  3. Amélioration de la gestion des risques: l’introduction de techniques de gestion des risques plus avancées, telles que l’arrêt dynamique des pertes, la gestion des positions, etc., permettent de contrôler davantage les risques.
  4. Adaptation aux différentes conditions du marché: en fonction de la volatilité du marché et de l’intensité de la tendance, les paramètres de la stratégie sont ajustés dynamiquement pour permettre à la stratégie de s’adapter aux différentes conditions du marché.

Résumer

Cette stratégie multi-échelle de suivi des tendances SMA et de stop-loss dynamique utilise les SMA de différentes échelles de temps pour capturer les tendances du marché, filtrer les faux signaux par la confirmation des conditions de tendance, tout en configurant les fonctions de suivi des tendances et de gestion des risques. Bien que la stratégie présente certains avantages, elle est toujours exposée à des risques tels que l’optimisation des paramètres, les marchés de choc et les événements soudains.

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

//@version=5
strategy("market slayer v3", overlay=true)

// Input parameters
showConfirmationTrend = input(title='Show Trend', defval=true)
confirmationTrendTimeframe = input.timeframe(title='Main Trend', defval='240')
confirmationTrendValue = input(title='Main Trend Value', defval=2)
showConfirmationBars = input(title='Show Confirmation Bars', defval=true)
topCbarValue = input(title='Top Confirmation Value', defval=60)
short_length = input.int(10, minval=1, title="Short SMA Length")
long_length = input.int(20, minval=1, title="Long SMA Length")
takeProfitEnabled = input(title="Take Profit Enabled", defval=false)
takeProfitValue = input.float(title="Take Profit (points)", defval=20, minval=1)
stopLossEnabled = input(title="Stop Loss Enabled", defval=false)
stopLossValue = input.float(title="Stop Loss (points)", defval=50, minval=1)

// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)

// Generate buy and sell signals based on SMAs
buy_signal = ta.crossover(short_sma, long_sma)
sell_signal = ta.crossunder(short_sma, long_sma)

// Plot SMAs
plot(short_sma, color=color.rgb(24, 170, 11), title="Short SMA")
plot(long_sma, color=color.red, title="Long SMA")

// Confirmation Bars
f_confirmationBarBullish(cbValue) =>
    cBarClose = close
    slowConfirmationBarSmaHigh = ta.sma(high, cbValue)
    slowConfirmationBarSmaLow = ta.sma(low, cbValue)
    slowConfirmationBarHlv = int(na)
    slowConfirmationBarHlv := cBarClose > slowConfirmationBarSmaHigh ? 1 : cBarClose < slowConfirmationBarSmaLow ? -1 : slowConfirmationBarHlv[1]
    slowConfirmationBarSslDown = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaHigh : slowConfirmationBarSmaLow
    slowConfirmationBarSslUp = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaLow : slowConfirmationBarSmaHigh
    slowConfirmationBarSslUp > slowConfirmationBarSslDown

fastConfirmationBarBullish = f_confirmationBarBullish(topCbarValue)
fastConfirmationBarBearish = not fastConfirmationBarBullish
fastConfirmationBarClr = fastConfirmationBarBullish ? color.green : color.red

fastConfirmationChangeBullish = fastConfirmationBarBullish and fastConfirmationBarBearish[1]
fastConfirmationChangeBearish = fastConfirmationBarBearish and fastConfirmationBarBullish[1]

confirmationTrendBullish = request.security(syminfo.tickerid, confirmationTrendTimeframe, f_confirmationBarBullish(confirmationTrendValue), lookahead=barmerge.lookahead_on)
confirmationTrendBearish = not confirmationTrendBullish
confirmationTrendClr = confirmationTrendBullish ? color.green : color.red

// Plot trend labels
plotshape(showConfirmationTrend, style=shape.square, location=location.top, color=confirmationTrendClr, title='Trend Confirmation Bars')
plotshape(showConfirmationBars and (fastConfirmationChangeBullish or fastConfirmationChangeBearish), style=shape.triangleup, location=location.top, color=fastConfirmationChangeBullish ? color.green : color.red, title='Fast Confirmation Bars')
plotshape(showConfirmationBars and buy_signal and confirmationTrendBullish, style=shape.triangleup, location=location.top, color=color.green, title='Buy Signal')
plotshape(showConfirmationBars and sell_signal and confirmationTrendBearish, style=shape.triangledown, location=location.top, color=color.red, title='Sell Signal')

// Generate trade signals
buy_condition = buy_signal and confirmationTrendBullish and not (strategy.opentrades > 0)
sell_condition = sell_signal and confirmationTrendBearish and not (strategy.opentrades > 0)

strategy.entry("Buy", strategy.long, when=buy_condition, comment ="BUY CALLS")
strategy.entry("Sell", strategy.short, when=sell_condition, comment ="BUY PUTS")

// Take Profit
if (takeProfitEnabled)
    strategy.exit("Take Profit Buy", from_entry="Buy", profit=takeProfitValue)
    strategy.exit("Take Profit Sell", from_entry="Sell", profit=takeProfitValue)

// Stop Loss
if (stopLossEnabled)
    strategy.exit("Stop Loss Buy", from_entry="Buy", loss=stopLossValue)
    strategy.exit("Stop Loss Sell", from_entry="Sell", loss=stopLossValue)

// Close trades based on trend confirmation bars
if strategy.opentrades > 0
    if strategy.position_size > 0
        if not confirmationTrendBullish
            strategy.close("Buy", comment ="CLOSE CALLS")
    else
        if not confirmationTrendBearish
            strategy.close("Sell", comment ="CLOSE PUTS")

// Define alert conditions as booleans
buy_open_alert = buy_condition
sell_open_alert = sell_condition
buy_closed_alert = strategy.opentrades < 0
sell_closed_alert = strategy.opentrades > 0

// Alerts
alertcondition(buy_open_alert, title='Buy calls', message='Buy calls Opened')
alertcondition(sell_open_alert, title='buy puts', message='buy Puts Opened')
alertcondition(buy_closed_alert, title='exit calls', message='exit calls ')
alertcondition(sell_closed_alert, title='exit puts', message='exit puts Closed')