Die doppelte gleitende Durchschnitts-Breakout-Strategie ist ein typischer Trend nach einer quantitativen Handelsstrategie. Sie erzeugt Handelssignale, indem sie einfache gleitende Durchschnitte verschiedener Perioden berechnet und überprüft, ob der Preis durch sie bricht, um Positionen zu bestimmen. Diese Strategie verwendet 20-Tage- und 60-Tage-gleitende Durchschnitte als Handelssignale.
Die Kernlogik der Dual-MA-Strategie besteht darin,Verwendung gleitender Durchschnitte verschiedener Zeiträume zur Erfassung von Kursentwicklungen und Erzeugung von Handelssignalen, wenn der Preis die gleitenden Durchschnitte durchbricht.
Diese beiden gleitenden Durchschnitte können als Werkzeuge angesehen werden, um kurzfristige und mittelfristige Trends zu erfassen. Wenn der kurzfristige Preis den mittelfristigen Preis durchbricht, signalisiert dies, dass der Markt in einem Aufwärtstrend ist und somit lang gehen sollte. Wenn der kurzfristige Preis unter den mittelfristigen Preis fällt, signalisiert dies, dass der Markt in einem Abwärtstrend ist und somit Positionen reduziert werden sollten.
Der Code verwendetta.crossover
undta.crossunder
Um zu bestimmen, ob der Kurs einen gleitenden Durchschnitt durchbrochen oder unter einen gleitenden Durchschnitt gefallen hat, werden Handelssignale für eine Long- oder Reduktionsposition entsprechend ausgestrahlt, wenn ein Breakout eintritt.
Die doppelte gleitende Durchschnittsbreakout-Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Die Strategie kann in folgenden Dimensionen verbessert werden:
Die doppelte gleitende Durchschnitts-Breakout-Strategie ist eine einfache und praktische Trendfolgestrategie. Sie kann mittelfristige Trends effektiv erfassen und gleichzeitig kurzfristigen Marktlärm vermeiden. Auch die leicht verständliche Logik und begrenzte Parameter machen sie sehr geeignet für den quantitativen Handel. Natürlich gibt es Verbesserungsmöglichkeiten, wie Parameter-Tuning, Signalfilterung und Stop-Loss, um sie stabiler und profitabler zu machen.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 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/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)