Diese Strategie kombiniert die technischen Indikatoren STC, Moving Average MA und Average True Range ATR, um Trends zu beurteilen und einen relativ stabilen Trend-Tracking-Handel umzusetzen.
Der STC-Indikator beurteilt die Trendumkehrung. Er nutzt die schnelle Linie minus die langsame Linie und verarbeitet dann eine sekundäre Glättung, um konsistente Trendsignale zu bilden. Das Kaufsignal kommt, wenn der Indikator über die 0-Achse und das Verkaufssignal unter die 0-Achse kreuzt.
Der Moving Average MA beurteilt die Trendrichtung. Wenn der Aktienkurs über den MA überschreitet, signalisiert er einen Aufwärtstrend und gibt ein Long-Positions-Holding-Signal. Wenn der Preis unter den MA überschreitet, signalisiert er einen Abwärtstrend und gibt ein Short-Positions-Holding-Signal.
Der ATR-Indikator setzt Stop-Loss und Take-Profit fest. ATR kann Stopp-Loss und Take-Profit-Punkte dynamisch anhand der Marktvolatilität anpassen. Und ATR fungiert als Signal für die Handelsrichtung selbst, steigt im Aufwärtstrend und fällt im Abwärtstrend.
Die Strategie nimmt STC-Signale als Hauptzeitpunkt für den Einstieg, verwendet MA als Hilfstrendbeurteilung und ATR für Stop-Loss und Take-Profit. Wenn STC ein Kaufsignal gibt, wenn MA auch einen Aufwärtstrend zeigt und ATR steigt, eröffnet es eine Long-Position; wenn STC ein Verkaufssignal gibt, wenn MA einen Abwärtstrend zeigt und ATR fällt, eröffnet es eine Short-Position.
Die Strategie kombiniert mehrere Indikatoren, um Trends und Umkehrpunkte zu beurteilen und die Genauigkeit der Handelssignale zu verbessern.
STC kann Umkehrsignale erfassen und vermeiden, in Trends gefangen zu werden. MA filtert unsichere Umkehrsignale, um sicherzustellen, dass der Haupttrend befolgt wird.
ATR setzt dynamische Stop-Loss- und Take-Profits anhand der Marktvolatilität und vermeidet so große Verluste.
Die Kombination mehrerer Indikatoren bildet eine starke Trendverfolgungsfähigkeit.
Der STC hat eine Zeitverzögerung, die den optimalen Zeitpunkt für die Preisumkehr verfehlen kann.
Bei starken Kursschwankungen neigt der MA dazu, zu verzögern, was zu falschen Signalen führen kann.
Der ATR-Multiplikator sollte während großer Trends gelockert oder vorübergehend deaktiviert werden.
Mehr Indikatoren bedeuten mehr Chancen, einen Stop-Loss zu erzielen.
Die STC-Parameter anpassen, um schnellere Kombinationen für die Umkehrung zu finden.
Optimierung des MA-Periodenparameters für eine bessere Trendverfolgung.
Prüfwirkung verschiedener ATR-Multiplikatoren.
Versuchen Sie, STC durch andere Indikatoren zu ersetzen, um eine bessere Übereinstimmung zu erhalten.
Einführung von Algorithmen für maschinelles Lernen zur automatischen Optimierung von mehreren Parametern.
Betrachten Sie große Zyklustrends und unterscheiden Sie die verschiedenen Phasen.
Die STC MA ATR-Strategie kombiniert 3 Indikatoren, um Trendumkehrpunkte für einen stabilen Trendverfolgungshandel zu erfassen. Indikatorkombinationen filtern falsche Signale und kontrollieren Risiken mit Stop-Loss/Take-Profit. Sie hat starke Robustheit und Stabilität. Weitere Verbesserungen können durch Parameteroptimierung und Algorithmuseinführung erzielt werden. Insgesamt ist es eine zuverlässige und moderate Strategiewahl.
/*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