Stratégie de suivi double AlphaTrend

Auteur:ChaoZhang est là., Date: 2024-02-02 15:17:01 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de suivi double d'AlphaTrend est basée sur les signaux d'achat et de vente générés par l'indicateur AlphaTrend.

La logique de la stratégie

Le noyau de la stratégie de suivi double d'AlphaTrend est l'indicateur AlphaTrend. L'indicateur AlphaTrend calcule les bandes supérieures et inférieures en fonction de l'ATR et du prix adaptatif (prix de clôture ou prix moyen pondéré par volume).

Bandes supérieures = basses inférieures - ATR * multiplicateur Bandes inférieures = plus élevé + ATR * multiplicateur

Lorsque le prix est au-dessus de la bande supérieure, la ligne d'indicateur s'approche de la bande supérieure. Lorsque le prix est en dessous de la bande inférieure, la ligne d'indicateur s'approche de la bande inférieure. Ainsi, AlphaTrend forme un canal adaptatif.

La stratégie de suivi double d'AlphaTrend établit des positions longues et courtes en fonction des signaux générés par AlphaTrend.

  • Allez long lorsque le prix dépasse AlphaTrend;
  • Faites du short quand le prix dépasse AlphaTrend.

Cela complète le trading de suivi bidirectionnel basé sur le canal dynamique AlphaTrend.

Analyse des avantages

Le plus grand avantage de la stratégie de suivi double d'AlphaTrend est qu'il peut suivre les changements dans les tendances du marché.

En outre, AlphaTrend combine à la fois des informations sur le prix et le volume (ou l'élan), ce qui aide à filtrer certaines fausses ruptures, améliorant la qualité des signaux de trading.

Analyse des risques

Le principal risque de la stratégie de suivi double d'AlphaTrend provient d'énormes fluctuations du marché qui pourraient frapper les points de stop loss. Lorsqu'il y a un mouvement anormal du marché, les points de stop loss peuvent être brisés, ce qui entraîne de grandes pertes. Cela doit être contrôlé en ajustant correctement les paramètres ATR et les points de stop loss.

En outre, l'ALPHA lui-même a un certain retard. Il peut également générer des signaux incorrects autour des points tournants du marché. D'autres indicateurs devraient être utilisés pour confirmer les signaux.

Directions d'optimisation

La stratégie de suivi double d'AlphaTrend peut être optimisée dans les aspects suivants:

  1. Combiner avec les indicateurs de tendance pour déterminer la tendance principale du marché afin d'éviter de négocier contre tendance;
  2. Augmenter le filtre de volume pour éviter les pertes causées par de fausses éruptions de faible volume;
  3. Optimiser les paramètres de l'indicateur afin de rendre la plage de canaux plus adaptée aux différents produits;
  4. Augmenter les algorithmes d'apprentissage automatique pour rendre le canal plus intelligent.

Grâce aux optimisations susmentionnées, la stabilité et la rentabilité de la stratégie AlphaTrend peuvent être encore améliorées.

Résumé

En résumé, la stratégie de suivi double AlphaTrend est un moyen efficace de suivre les changements du marché. Elle résout le problème des indicateurs techniques traditionnels qui perdent de leur efficacité et incorpore également des informations de volume pour filtrer les signaux. Avec des optimisations appropriées, cette stratégie peut devenir un outil puissant dans les systèmes de trading quantitatif.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
strategy('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
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

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)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

//plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 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(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 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))



longCondition = buySignalk and showsignalsk and O1 > K2
if (longCondition)
    
    strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")

shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
    
    strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")













// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')

// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')



// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')

// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')






Plus de