Stratégie adaptative de suivi des tendances et de gestion des risques combinant AlphaTrend et KAMA

KAMA ATR MFI RSI
Date de création: 2024-07-30 12:30:19 Dernière modification: 2024-07-30 12:30:19
Copier: 0 Nombre de clics: 558
1
Suivre
1617
Abonnés

Stratégie adaptative de suivi des tendances et de gestion des risques combinant AlphaTrend et KAMA

Aperçu

Cette stratégie est un système de suivi de tendance combinant l’indicateur AlphaTrend et la moyenne mobile adaptative Kaufman (KAMA), tout en intégrant des fonctions de gestion des risques. La stratégie vise à capturer les tendances du marché tout en gérant les risques par des arrêts partiels. Le cœur de la stratégie consiste à utiliser l’indicateur AlphaTrend pour identifier la direction de la tendance globale, tandis que KAMA est utilisé pour générer des signaux d’entrée et de sortie plus précis.

Principe de stratégie

  1. L’indicateur AlphaTrend est calculé comme suit:

    • Le canal ascendant et descendant est calculé à l’aide de l’étendue réelle moyenne (ATR).
    • La direction de la tendance est déterminée en fonction de la valeur de l’indicateur de direction des flux de capitaux du marché (MFI) ou de l’indicateur de force relative (RSI).
  2. Selon KAMA:

    • L’adaptation de Kaufman à la moyenne mobile est utilisée pour ajuster sa sensibilité en fonction de la dynamique de la volatilité du marché.
  3. Le signal de transaction est généré:

    • Signal d’achat: déclenché lors de la traversée de la ligne AlphaTrend sur la ligne KAMA
    • Le signal de vente est déclenché lorsque le KAMA passe sous la ligne AlphaTrend.
  4. Gestion des risques :

    • La mise en place d’un mécanisme de blocage partiel, qui permet d’annuler la moitié des positions lorsque le pourcentage de bénéfices attendu est atteint.
  5. Gestion des positions:

    • La gestion des positions est effectuée en utilisant le pourcentage de la valeur nette du compte pour assurer la flexibilité de l’utilisation des fonds.

Avantages stratégiques

  1. La capacité d’adaptation aux tendances: en combinaison avec AlphaTrend et KAMA, il est possible de mieux s’adapter aux différents environnements du marché.

  2. Haute fiabilité du signal: amélioration de la fiabilité du signal de transaction par confirmation de plusieurs conditions.

  3. La gestion des risques est améliorée: la suspension partielle aide à bloquer les bénéfices dans les marchés volatiles.

  4. Gestion de position flexible: Gestion de position basée sur la valeur nette du compte, adaptée aux différentes tailles de fonds.

  5. Les stratégies offrent une interface graphique claire pour faciliter l’analyse et la surveillance.

Risque stratégique

  1. Risque de fausse rupture: Les signaux de fausse rupture peuvent être fréquents dans les marchés en crise.

  2. L’arriération: comme stratégie de suivi de la tendance, il est possible de réagir lentement au début d’un renversement de tendance.

  3. Sensitivité des paramètres: les performances des stratégies peuvent être sensibles aux paramètres.

  4. Risque de retrait: dans un marché en forte tendance, des arrêts partiels peuvent entraîner la perte d’une position majeure.

  5. Adaptabilité au marché: les stratégies peuvent être moins performantes dans certaines conditions de marché.

Orientation de l’optimisation de la stratégie

  1. Modification des paramètres dynamiques:

    • Il est possible d’adapter les paramètres AlphaTrend et KAMA pour s’adapter à différents environnements de marché.
    • La raison: améliorer l’adaptabilité des stratégies aux différents cycles de marché.
  2. Une analyse de plusieurs périodes:

    • L’introduction d’un mécanisme de confirmation à plusieurs périodes permettra d’améliorer la fiabilité des signaux.
    • La raison: réduire les faux-breechers et augmenter le taux de réussite des transactions.
  3. Filtre de fluctuation:

    • Ajout d’un filtre de volatilité basé sur l’ATR pour réduire les transactions dans un environnement à faible volatilité.
    • La raison en est d’éviter une survente des marchés.
  4. La perte de l’intelligence:

    • La mise en œuvre d’un arrêt dynamique des pertes basé sur l’ATR et l’amélioration de la flexibilité de la gestion des risques.
    • La raison: mieux s’adapter aux fluctuations du marché et protéger les bénéfices.
  5. Catégorie des états du marché:

    • Introduction d’un mécanisme de classification des états du marché, qui utilise des stratégies de négociation différentes selon les états du marché.
    • La raison: améliorer la performance de la stratégie dans divers environnements de marché.

Résumer

AlphaTrend est un système de négociation complet et puissant qui combine les avantages de l’indicateur AlphaTrend et de KAMA pour une prise de conscience précise des tendances du marché. Le mécanisme de gestion des risques de la stratégie, en particulier la fonction de freinage partiel, fournit aux investisseurs des outils efficaces pour protéger leurs profits dans des marchés volatiles. Malgré certains risques inhérents, tels que les faux-breechers et la sensibilité aux paramètres, la stratégie a le potentiel d’être un système de négociation fiable grâce à une optimisation et à un ajustement continus.

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

//@version=5
strategy('AlphaTrend with KAMA and Risk Management', shorttitle='AT+KAMA+RM', overlay=true, format=format.price, precision=2, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// AlphaTrend Inputs
coeff = input.float(1, 'AT Multiplier', step=0.1)
AP = input.int(14, 'AT Common Period', minval=1)
src = input.source(close, 'AT Source')
showsignals = input.bool(true, 'Show Signals?')
novolumedata = input.bool(false, 'Change calculation (no volume data)?')

// KAMA Inputs
kamaLength = input.int(21, 'KAMA Length', minval=1)

// Risk Management Inputs
profitTarget = input.float(10, 'Profit Target for Partial Exit (%)', minval=1, step=0.1)

// Yeni değişkenler
var float entryPrice = na
var string currentPosition = "flat"  // "long", "short", veya "flat"
var float partialExitPrice = na

// AlphaTrend Calculation
ATR = ta.sma(ta.tr, AP)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

// KAMA Calculation
xPrice = close
xvnoise = math.abs(xPrice - xPrice[1])
nAMA = 0.0
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(xPrice - xPrice[kamaLength])

// Manual calculation of sum
nnoise = 0.0
for i = 0 to kamaLength-1
    nnoise := nnoise + xvnoise[i]
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

// Plotting
color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3, title='AlphaTrend')
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)
fill(k1, k2, color=color1)
plot(nAMA, color=color.yellow, linewidth=2, title='KAMA')

// Sinyal koşulları
buyCondition = (ta.crossover(nAMA, AlphaTrend) and ta.crossover(nAMA, AlphaTrend[2])) or
             (ta.crossover(nAMA, AlphaTrend) and nAMA > AlphaTrend[2]) or
             (ta.crossover(nAMA, AlphaTrend[2]) and nAMA > AlphaTrend)
sellCondition = (ta.crossunder(nAMA, AlphaTrend) and ta.crossunder(nAMA, AlphaTrend[2])) or
              (ta.crossunder(nAMA, AlphaTrend) and nAMA < AlphaTrend[2]) or
              (ta.crossunder(nAMA, AlphaTrend[2]) and nAMA < AlphaTrend)

// Yeni Sinyaller
buySignal = buyCondition
sellSignal = sellCondition

// Alım satım mantığı
if (buySignal and currentPosition != "long")
    if (currentPosition == "short")
        strategy.close("Short")
    strategy.entry("Long", strategy.long)
    entryPrice := close
    currentPosition := "long"
    partialExitPrice := entryPrice * (1 + profitTarget / 100)

if (sellSignal and currentPosition != "short")
    if (currentPosition == "long")
        strategy.close("Long")
    strategy.entry("Short", strategy.short)
    entryPrice := close
    currentPosition := "short"
    partialExitPrice := entryPrice * (1 - profitTarget / 100)

// Kısmi çıkış mantığı
if (currentPosition == "long" and high >= partialExitPrice)
    strategy.close("Long", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50)
    partialExitPrice := na
if (currentPosition == "short" and low <= partialExitPrice)
    strategy.close("Short", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50)
    partialExitPrice := na

// Plotting signals
plotshape(buySignal and showsignals ? AlphaTrend * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))
plotshape(sellSignal and showsignals ? AlphaTrend * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))
plotshape(currentPosition == "long" and high >= partialExitPrice ? high : na, title='PARTIAL EXIT LONG', text='PARTIAL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0))
plotshape(currentPosition == "short" and low <= partialExitPrice ? low : na, title='PARTIAL EXIT SHORT', text='PARTIAL', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0))

// Alerts
alertcondition(buySignal, title='BUY Signal', message='KAMA crossed above AlphaTrend - BUY!')
alertcondition(sellSignal, title='SELL Signal', message='KAMA crossed below AlphaTrend - SELL!')
alertcondition((currentPosition == "long" and high >= partialExitPrice) or (currentPosition == "short" and low <= partialExitPrice), title='Partial Exit', message='Profit target reached - Closing half position!')