Cette stratégie combine les indicateurs techniques STC, Motion Average MA et Average True Range ATR pour juger des tendances et mettre en œuvre des opérations de suivi des tendances relativement stables.
L'indicateur STC juge l'inversion de tendance. Il utilise la ligne rapide moins la ligne lente, puis traite l'assouplissement secondaire, formant des signaux de tendance cohérents. Le signal d'achat arrive lorsque l'indicateur traverse au-dessus de l'axe 0 et le signal de vente en dessous de l'axe 0.
La moyenne mobile MA juge la direction de la tendance. Lorsque le prix des actions dépasse MA, il signale une tendance haussière, donnant un signal de position longue. Lorsque le prix dépasse MA, il signale une tendance baissière, donnant un signal de position courte.
L'indicateur ATR définit le stop loss et le take profit. ATR peut ajuster dynamiquement le stop loss et les points de profit en fonction de la volatilité du marché. Et ATR agit comme un signal pour la direction du trading lui-même, en hausse et en baisse.
La stratégie prend les signaux STC comme le calendrier principal pour l'entrée, utilise MA comme jugement de tendance auxiliaire, et ATR pour le stop loss et le take profit.
La stratégie combine plusieurs indicateurs pour juger des tendances et des points d'inversion, améliorant ainsi la précision des signaux de trading.
STC peut capturer les signaux d'inversion et éviter d'être pris au piège dans les tendances.
L'ATR définit un stop loss dynamique et prend des bénéfices en fonction de la volatilité du marché, évitant ainsi d'énormes pertes.
La combinaison de plusieurs indicateurs forme une forte capacité de suivi des tendances.
Le STC a un décalage de temps, ce qui peut manquer le moment optimal pour l'inversion des prix.
La MA a tendance à retarder les fluctuations de prix violentes, ce qui peut générer de mauvais signaux.
Le multiplicateur ATR doit être assoupli ou temporairement désactivé pendant les grandes tendances.
Les paramètres doivent être ajustés pour éviter un stop loss inutile.
Ajustez les paramètres STC pour trouver des combinaisons plus rapides pour l'inversion.
Optimiser le paramètre de la période MA pour un meilleur suivi des tendances.
Les impacts d'essais de multiples ATR différents.
Essayez de remplacer STC par d'autres indicateurs pour une meilleure correspondance.
Introduire des algorithmes d'apprentissage automatique pour une optimisation automatique à plusieurs paramètres.
Considérons les grandes tendances du cycle et distinguons les différentes étapes.
La stratégie STC MA ATR combine 3 indicateurs pour capturer les points d'inversion de tendance pour un trading de suivi de tendance stable. Les combinaisons d'indicateurs filtrent les faux signaux et contrôlent les risques avec stop loss/take profit. Elle a une forte robustesse et stabilité. Des améliorations supplémentaires peuvent être obtenues grâce à l'optimisation des paramètres et à l'introduction d'algorithmes.
/*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