
Die Strategie ist eine auf Saisonwirkung basierende Umkehrhandelsstrategie. Sie baut Positionen in einem bestimmten Eintrittsmonat auf und schließt im Austrittsmonat, um die Preisumkehrungen zu erfassen, die durch die Saisonwirkung verursacht werden.
Die Kernlogik dieser Strategie besteht darin, saisonale Positionen zu erstellen, basierend auf den Ein- und Ausstiegsmondern, die der Benutzer auswählt. Insbesondere, wenn der aktuelle Monat dem Eintrittsmonat entspricht und keine Positionen erstellt wurden, wird der Markt nach der Mehrkopf- oder Leerkopf-Richtung aufgenommen.
Wenn man beispielsweise im Oktober eintritt und im Januar ausscheidet, dann wird im Oktober jedes Jahres eine neue Position erstellt, wenn keine Position gehalten wird, entweder in der Richtung der Mehrköpfe oder der Leerköpfe; wenn bereits eine Position gehalten wird, wird diese Position im Januar jedes Jahres abgewickelt. Auf diese Logik basierend kann man die Preisumkehr aufgrund des saisonalen Effekts erfassen.
Es ist zu beachten, dass die Strategie standardmäßig 25% der Risikokapital für jeden Handel berechnet und mit einer Vergütung von 0,5% berechnet. Dies hat einen gewissen Einfluss auf die endgültigen Ergebnisse.
Der größte Vorteil dieser Strategie besteht darin, dass die saisonalen Marktreibungen genutzt werden können. In vielen Waren- und Finanzmärkten gibt es deutliche saisonale Preisschwankungen. Wenn die richtigen Einstiegs- und Ausstiegszeiten gewählt werden, können die Chancen für eine solche saisonale Reaktion effektiv erfasst werden.
Darüber hinaus ist die Strategie sehr einfach zu verstehen und zu implementieren und ist für Anfänger geeignet, die nur mit zwei Parametern handeln. Sie ist auf nur zwei Parameter angewiesen und reduziert die Schwierigkeit der Strategieoptimierung erheblich.
Obwohl die Effektivität dieser Strategie beträchtlich ist, besteht ein gewisses Risiko. Erstens kann die falsche Wahl der Ein- und Ausstiegszeiten dazu führen, dass die Preisumkehr nicht erfasst wird, was zu Verlusten führt. Zweitens können Veränderungen des Marktumfelds auch dazu führen, dass die saisonalen Effekte schwächer werden.
Um das Risiko zu verringern, kann man die Optimierung der Einstiegs- und Ausstiegszeiten in Betracht ziehen, in Kombination mit mehr Analyse, um die Marktumgebung zu beurteilen, und den Stop-Loss zu setzen, um das Risiko zu kontrollieren. Natürlich kann keine Handelsstrategie das Marktrisiko vollständig vermeiden, und der Händler muss vorsichtig sein.
Die Strategie hat noch viele Optimierungsmöglichkeiten. Erstens kann man eine Stop-Logik einführen und eine angemessene Stop-Loss-Marge einrichten. Zweitens kann man mehr verschiedene Ein- und Ausgangspositionen testen und nach den optimalen Parametern suchen.
Durch diese Optimierungen kann die Stabilität der Strategie weiter verbessert und die Tracking-Leistung der Strategie verbessert werden. Natürlich erfordert jede Optimierung eine strenge Rücktestsprüfung, um eine Überoptimierung zu vermeiden.
Die Saisonumkehr ist eine sehr praktische Strategie, um über die gesamte Periode hinweg zu handeln. Durch die Auswahl der richtigen Einstiegs- und Ausstiegsmonate wird die Saisonumkehr effektiv erfasst und profitiert. Die Strategie ist außerdem sehr einfach und leicht zu verstehen und zu implementieren und eignet sich für Anfänger, die quantitativ handeln. Der Händler muss natürlich auch auf bestimmte Marktrisiken achten und die Strategie gezielt und kontinuierlich optimieren, um sie an die Veränderungen der Marktumgebung anzupassen.
/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-24 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/
// © EmpiricalFX
//@version=4
strategy("Seasonality Benchmark ","Season",overlay=false,default_qty_type=strategy.percent_of_equity,
default_qty_value=25,initial_capital=100000,currency="USD",
commission_type=strategy.commission.percent,commission_value=0.5)
input_entry_direction = input("Long","Position Type",options=["Long","Short"])
input_entry_month = input("Oct","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
input_exit_month = input("Jan","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
//Convert three character month string to integer
month_str_to_int(m)=>
ret = m == "Jan" ? 1 :
m == "Feb" ? 2 :
m == "Mar" ? 3 :
m == "Apr" ? 4 :
m == "May" ? 5 :
m == "Jun" ? 6 :
m == "Jul" ? 7 :
m == "Aug" ? 8 :
m == "Sep" ? 9 :
m == "Oct" ? 10 :
m == "Nov" ? 11 :
m == "Dec" ? 12 : -1
is_long = input_entry_direction == "Long" ? true : false
entry = month_str_to_int(input_entry_month)
exit = month_str_to_int(input_exit_month)
var balance = strategy.equity
//Entering a position is conditional on:
//1. No currently active trades
//2. Input entry month matches current month
if(strategy.opentrades == 0 and entry == month)
strategy.entry("Swing",is_long)
//Exiting a position is conditional on:
//1. Must have open trade
//2. Input exit month matches current month
if(strategy.opentrades > 0 and exit == month)
strategy.close("Swing")
//Update the balance every time a trade is exited
if(change(strategy.closedtrades)>0)
balance := strategy.equity
plot(strategy.equity,"Equity",color.orange)
plot(balance,"Balance",color.red)