Stratégie de trading de tendance combinée STC MA ATR


Date de création: 2023-10-17 14:34:10 Dernière modification: 2023-10-17 14:34:10
Copier: 0 Nombre de clics: 845
1
Suivre
1617
Abonnés

Stratégie de trading de tendance combinée STC MA ATR

Aperçu

Cette stratégie utilise un ensemble d’indicateurs techniques STC, des moyennes mobiles MA et des taux réels moyens ATR, combinés à plusieurs indicateurs techniques pour déterminer la tendance et réaliser des transactions de suivi de tendance relativement stables.

Principe de stratégie

  1. L’indicateur STC détermine le renversement de tendance. Il utilise la ligne rapide pour ralentir la ligne, puis effectue un deuxième traitement de lissage, formant un signal de tendance cohérent. Lorsqu’il traverse l’axe 0 en haut, il est un signal d’achat, et lorsqu’il traverse l’axe 0 en bas, il est un signal de vente.

  2. La moyenne mobile (MA) détermine la direction de la tendance. Lorsque le prix de l’action est en hausse, elle est considérée comme étant toujours en hausse.

  3. L’indicateur ATR définit un stop loss. L’ATR peut être ajusté en fonction de la volatilité du marché.

  4. La stratégie choisit le moment de l’inversion du jugement STC comme principal point d’achat et de vente, avec la MA comme jugement de tendance auxiliaire, avec l’ATR pour le stop-loss. Lorsque le STC émet un signal d’achat, si la MA est également tendance à la hausse, l’ATR est à la hausse, alors il ouvre plus d’ordres; Si le STC émet un signal de vente, si la MA est tendance à la baisse, l’ATR est à la baisse, alors il ouvre des ordres vides.

Analyse des avantages

  1. Cette stratégie utilise une combinaison d’indicateurs pour déterminer les tendances et les points de basculement, ce qui améliore la précision des signaux de trading.

  2. L’indicateur STC peut capturer les signaux de revers et éviter que les transactions ne soient bloquées. L’indicateur MA filtre les signaux de revers instables et assure le suivi des principales tendances.

  3. L’indicateur ATR permet de définir un stop loss en fonction de la volatilité du marché, d’éviter des pertes massives et d’utiliser l’ATR comme signal de tendance auxiliaire.

  4. La combinaison d’indicateurs multiples permet une meilleure capacité de suivi des tendances et une meilleure stabilité des profits grâce à la rétrospective historique.

Analyse des risques

  1. L’indicateur STC est en retard de temps et peut manquer le meilleur moment pour inverser le cours.

  2. L’indicateur MA tend à être en retard lors d’une forte fluctuation des prix, ce qui peut générer de faux signaux.

  3. Les arrêts ATR peuvent être des secondes, des multiplications ATR adéquatement relâchées, ou des arrêts temporaires dans les grandes tendances.

  4. Bien que la combinaison multi-indicateurs augmente le taux de victoire, elle augmente également les chances de déclencher des arrêts de perte. Les paramètres doivent être ajustés de manière appropriée pour réduire les arrêts de perte inutiles.

Direction d’optimisation

  1. Ajustez les paramètres STC pour trouver des combinaisons de paramètres qui réagissent plus rapidement à l’inversion

  2. Optimisation des paramètres de cycle MA pour une meilleure traçabilité des tendances

  3. Influence des paramètres sur la stratégie pour tester différents facteurs ATR

  4. Essayez de remplacer le STC par d’autres indicateurs pour trouver des indicateurs plus compatibles

  5. Ajout d’algorithmes d’apprentissage automatique pour optimiser automatiquement plusieurs paramètres

  6. Augmenter le jugement sur les tendances du grand cycle, en distinguant les différentes phases du grand cycle

Résumer

La stratégie STC MA ATR utilise un ensemble de trois indicateurs pour capturer les points de retournement de tendance et suivre les transactions de manière stable. La combinaison d’indicateurs filtre les faux signaux et contrôle les risques de blocage des pertes, présente une forte compatibilité et stabilité. La performance de la stratégie peut être encore améliorée par l’optimisation des paramètres et l’introduction d’algorithmes.

Code source de la stratégie
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
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/
// © Romedius

//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)

// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA
    
AAAAA(EEEEEE, BBBB, BBBBB) => 
    //AAA=input(0.5)
    var AAA = 0.5
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close,BBBB,BBBBB)     
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC    
    CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) 
    DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) 
    DDDD = ta.lowest(DDD, EEEEEE) 
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD     
    DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) 
    EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
    EEEEE

mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end

// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")

xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)

atr_sig = pos == -1 ? false : true
// ATR stops end

// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end

// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")

atr_stop = if close < xATRTrailingStop
    close - (close - xATRTrailingStop) * sl_mult
else
    close + (xATRTrailingStop - close) * sl_mult

longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
    strategy.close("Long")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
    strategy.close("Short")
    
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)

ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)

stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end