
Die Strategie ist eine Moving-Average-basierte Quantitätsstrategie. Sie erzeugt Handelssignale durch Berechnung von einfachen Moving-Averagen aus verschiedenen Perioden und deren Vergleich. Insbesondere erzeugt sie ein Kaufsignal, wenn sie einen langfristigen Moving-Average über einen kurzfristigen Moving-Average überschreitet; und ein Verkaufsignal, wenn sie einen langfristigen Moving-Average unter einem kurzfristigen Moving-Average überschreitet.
Die Kernlogik der Strategie basiert auf der dynamischen Wirkung, also der Beständigkeit der Aktienpreisentwicklung. Die Moving Averages sind in der Lage, die Trendentwicklung der Aktienpreise effektiv zu reflektieren. Wenn ein kurzfristiger Moving Average einen langfristigen Moving Average durchbricht, bedeutet dies, dass der Aktienpreis in einen Aufwärtstrend eingetreten ist.
Konkret definiert die Strategie einen 13-Tage-Simple-Moving-Average und einen 34-Tage-Simple-Moving-Average. Nachdem die beiden Moving-Averagen für den täglichen Schlusskurs berechnet wurden, wurden die Werte verglichen. Wenn die 34-Tage-Linie auf der 13-Tage-Linie durchbrochen wird, erzeugt dies ein Kaufsignal, das bedeutet, dass der Aktienkurs in eine steigende Tendenz eingetreten ist, und es sollte eine Mehrkopfposition errichtet werden.
Der größte Vorteil dieser Strategie besteht darin, dass sie einfach zu verstehen und zu implementieren ist. Der Moving Average ist einer der grundlegendsten und am häufigsten verwendeten technischen Indikatoren. Seine Prinzipien sind einfach und leicht zu verstehen und anzuwenden.
Die Strategie-Parameter sind außerdem flexibel eingestellt und können je nach Sorte und Marktumgebung angepasst werden. Zum Beispiel können die Periodiparameter der Moving Averages geändert werden, um die Strategie-Sensitivität anzupassen. Dies bietet Raum für Optimierung und Anpassung der Strategie.
Das größte Risiko dieser Strategie besteht darin, dass möglicherweise mehr Fehlsignale und Schwankungen in den Märkten auftreten. Wenn die Preise stark schwanken, können sich die Moving Averages häufig kreuzen, was zu Fehlsignalen führt. In diesem Fall ist es notwendig, die Periodenparameter des Moving Averages anzupassen, um etwas Lärm zu filtern.
Darüber hinaus kann der Stop-Loss-Punkt der Strategie durchbrochen werden, was zu größeren Verlusten führt. Dies erfordert eine optimierte Stop-Loss-Strategie und eine angemessene Lockerung der Stop-Loss-Marge.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der periodischen Parameter für Moving Averages, um die optimale Kombination von Parametern unter verschiedenen Sorten und Marktbedingungen zu finden
Hinzufügen von Filtern für andere technische Indikatoren wie MACD, KD usw. zur Vermeidung von Fehlsignalen bei Erschütterungen
Optimierung und dynamische Anpassung der Stop-Loss-Strategie, um zu verhindern, dass die Stop-Loss-Punkte zu nahe kommen und die Wahrscheinlichkeit, dass sie durchbrochen werden, erhöht wird, während die Stop-Loss-Strategie garantiert wird
Erhöhung der Positionsmanagement-Mechanismen, wie z. B. Festbetrieb, Positionsanteil, um das Risiko eines einzelnen Handels zu kontrollieren
Die Strategie ist eine sehr klassische Moving Average Crossover Strategie, die Kauf- und Verkaufssignale erzeugt, indem sie die Beziehung zwischen kurz- und langfristigen Moving Averages berechnet und vergleicht. Die Strategie hat die Vorzüge, dass sie einfach zu verstehen ist, die Parameter flexibel sind und für Anfänger geeignet sind; der Nachteil ist, dass die Signale möglicherweise nicht stabil genug sind und in einem schwankenden Markt leicht ausgeschaltet werden können. Mit der richtigen Optimierung kann sie immer noch eine sehr praktische quantitative Strategie sein.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)
// === TA LOGIC ===
//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))
// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")
FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2018, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === STRATEGY BUY / SELL ENTRIES ===
// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN
if buy()
strategy.entry("Long", strategy.long, comment="Long")
if sell()
if (enableShorts)
strategy.entry("Short", strategy.short, comment="Short")
else
strategy.close("Long")
// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100
stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)