Strategie für die Verlagerung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-12-08 15:23:33
Tags:

img

Diese Strategie verwendet die Überschneidung von 20-tägigen gleitenden Durchschnitten und 60-tägigen gleitenden Durchschnitten, um Handelssignale zu erzeugen. Sie geht lang, wenn der Preis über 20-tägige MA bricht und schließt die Position, wenn der Preis unter 20-tägige MA bricht. Ähnlich bildet sie Handelssignale, wenn der Preis über 60-tägige MA geht. Diese Strategie gehört zu einem typischen Trendfolgensystem.

Strategie Logik

  1. Berechnung des 20-tägigen einfachen gleitenden Durchschnitts und des 60-tägigen einfachen gleitenden Durchschnitts
  2. Long gehen, wenn der Schlusskurs über die 20-Tage-Ma liegt
  3. Schließungsposition, wenn der Schlusskurs unter den 20-Tage-MA fällt
  4. Long gehen, wenn der Schlusskurs über die 60-Tage-MA fällt
  5. Schließungsposition, wenn der Schlusskurs unter den 60-Tage-MA fällt

Die oben genannten Regeln definieren die Handelssignale und die Logik für diese Strategie. Wenn der Preis über die MA-Linie geht, zeigt dies, dass ein neuer Trend entsteht und wir dem Trend folgen können, um lang zu gehen. Wenn der Preis unter die MA-Linie fällt, zeigt dies, dass der Trend endet, so dass wir die Position schließen.

Vorteile

  1. Die Einführung von doppelten MA macht die Strategie stabiler. Die 20-tägige MA erfasst kurzfristige Chancen schneller, während die 60-tägige MA einige Marktgeräusche und Sperren im mittelfristigen Trend filtert.
  2. Der Rückstandstest beginnt ab 2018 und wählt den Taiwaner Aktienmarkt aus, der im Vergleich zum chinesischen A-Aktienmarkt ein entwickelteres Handelssystem aufweist, was die Wirksamkeit der Strategie besser widerspiegelt.
  3. Es setzt den richtigen Stop-Loss und die richtige Positionsgröße ein, um das Risiko maximal zu kontrollieren.

Risiken

  1. Die Strategie stützt sich ausschließlich auf den MA-Indikator und kann bei fehlender Marktentwicklung zu mehr Whipsaws führen.
  2. Die Strategie optimiert nicht die Kauf-/Verkaufsgröße und -Position und maximiert nicht die Kapitalnutzung.
  3. Die Strategie reagiert symmetrisch auf Preisschwankungen und ist nicht in der Lage, sich an unterschiedliche Marktbedingungen anzupassen.

Risikolösungen:

  1. Fügen Sie andere Indikatoren wie KDJ, MACD hinzu, um eine mehrfache Bestätigung zu bilden, um falsche Trades zu vermeiden.
  2. Optimierung der Positionsgröße und Effizienz der Kapitalnutzung entsprechend Marktkapitalisierung, Volatilität usw.
  3. Annahme von asymmetrischen Bewegungen basierend auf den Marktstadien, Verringerung des Handels während des Bereichsmarktes und Erhöhung der Positionsgröße während eines offensichtlichen Trends.

Optimierungsrichtlinien

  1. Optimieren Sie die Kauf-/Verkaufsmenge. Anpassen Sie die Positionsgröße dynamisch anhand von Stop-Loss.
  2. Bessere Parameter finden, indem Sie vorwärts gehen und zufällig optimieren.
  3. Bewegen Sie Stop-Loss oder Stop-Limit-Order, um den Gewinn besser zu schützen.
  4. Hinzufügen von Positionsgrößenmanagement. Dynamische Anpassung der Positionsgröße pro Handel basierend auf Kapitalgröße, Marktkapitalisierung usw.

Zusammenfassung

Dies ist eine typische doppelte gleitende Durchschnitts-Crossover-Strategie. Die Kernidee besteht darin, Trends zu folgen, indem man die Position festlegt, wenn der Preis über die MA-Linie geht. Die Strategie ist einfach und praktisch umzusetzen. In der Zwischenzeit gibt es Raum für weitere Optimierungen, indem Parameter-Tuning, Stop-Loss, Positionsgrößen usw. durchgeführt werden, um bessere Ergebnisse zu erzielen.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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 TW", overlay=true, margin_long=100, margin_short=100)
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
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)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Mehr