Timing-Order-Strategie


Erstellungsdatum: 2023-09-28 15:26:20 zuletzt geändert: 2023-09-28 15:26:20
Kopie: 4 Klicks: 659
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Hauptidee der Timed Order Strategie besteht darin, dass der Benutzer die Kauf- und Verkaufsaktionen zu einem benutzerdefinierten Zeitpunkt durchführt. Die Strategie erlaubt es dem Benutzer, einen genauen Zeitpunkt zu setzen, an dem die aktuell gehaltenen Positionen zuerst verkauft und dann zu einem Limit-Preis gekauft werden, der 1% unter dem aktuellen Preis liegt. So können tägliche Umschläge zu bestimmten Zeiten durchgeführt werden.

Strategieprinzip

Die Strategie bezieht zunächst die benutzerdefinierte Stunde und Minute über die Inputfunktion und generiert dann die Auftragsausführungszeit über die Timestamp-Funktion. Wenn die aktuelle Zeit nach dem angegebenen Zeitpunkt liegt, wird der Verkauf und Kauf ausgelöst.

Die Strategie beurteilt zunächst, ob die aktuelle Zeit innerhalb des vom Benutzer angegebenen Start- und Enddatums liegt. Wenn dies der Fall ist, wird die derzeit gehaltene Position zum Vorverkaufspreis verkauft, wenn der angegebene Auftragstermin erreicht wird.

Analyse der Stärken

Der größte Vorteil dieser Strategie besteht darin, dass die Positionen regelmäßig an bestimmten Zeitpunkten neu angepasst werden können, ohne dass eine manuelle Handhabung erforderlich ist, um die menschlichen Kosten zu senken. Zusätzlich kann bei jeder Neuausrichtung ein Kauf zu einem Preis, der etwas niedriger ist als der aktuelle Preis, ein gewisses Überschussvorteil erzielt werden.

Zu den Vorteilen gehören:

  1. Vollständige Automatisierung der Arbeitsabläufe und geringere Arbeitskosten.

  2. Die Position kann regelmäßig zu bestimmten Zeitpunkten neu angepasst werden.

  3. Bei jeder Neupositionierung erhält man eine ultra-niedrige Kaufchance von etwas weniger als 1% des aktuellen Preises.

  4. Anpassung an den Zeitpunkten und Anpassungsmöglichkeiten.

  5. Die Start- und Enddaten der Umschlagsphase können angepasst werden, um die Optimierung zu erleichtern.

Risikoanalyse

Die Strategie birgt auch einige Risiken, die beachtet werden müssen:

  1. Wenn Sie die richtige Zeit für die regelmäßige Verlagerung nicht wählen, können Sie eine gute Kaufzeit verpassen oder zu einem unpassenden Zeitpunkt verkaufen.

  2. Wenn der Kaufpreis nur 1% unter dem Verkaufspreis liegt, kann es sein, dass nicht in jeder Lagerungsperiode eine ausreichende überschüssige Kaufpreisdifferenz erreicht wird.

  3. Der Verkauf und der Kauf sind marktübliche Preise, die von einem gewissen Maß an Schlupfpunkten beeinflusst werden können.

  4. Wenn die Strategie nur an einem bestimmten Zeitpunkt funktioniert, kann der Markt zwischen diesen Zeitpunkten nicht verwaltet werden.

  5. Häufige Positionswechsel führen zu höheren Transaktionsgebühren.

Entsprechende Lösungen:

  1. Auswahl eines geeigneten Verlagerungszeitpunkts in Kombination mit anderen technischen Indikatoren.

  2. Der Kaufpreisdifferenzparameter kann gegebenenfalls erhöht werden.

  3. Wählen Sie möglichst tiefgreifende und schwankende Handelsarten aus.

  4. Risikomanagement kann in Kombination mit anderen Strategien während der Nicht-Rückstellungsphase durchgeführt werden.

  5. Die Frequenz der Umschichtung wird angemessen kontrolliert, um die Vorteile der Umschichtung und die Transaktionskosten auszugleichen.

Optimierungsrichtung

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Optimierung der Auswahl von Schalungszeitpunkten in Kombination mit den intraday-Zyklusmerkmalen der Handelsvariante.

  2. Hinzufügen von anderen technischen Indikatoren, um zu vermeiden, dass die Position zu ungünstigen Zeiten umgestellt wird.

  3. Optimierung der Über-Low-Buy-Parameter, um Vorteile und Transaktionskosten auszugleichen.

  4. Die Verwendung von Tracking-Stop-Loss-Stopps zur Verwaltung der Positionen während der Lagerungspause.

  5. Das Training der historischen Daten in Kombination mit einem Algorithmus des maschinellen Lernens optimiert automatisch den Zeitpunkt der Verlagerung.

  6. Die Funktion “Recovery” wurde hinzugefügt, um Aktiensplit, Dividend und andere Zeitpunkte zu korrigieren.

Zusammenfassen

Insgesamt gesehen kann die zeitlich festgelegte Auftragsstrategie den Handelsprozess durch regelmäßige Anpassung der Positionen automatisieren und die manuellen Betriebskosten senken. Die Strategie hat einen großen Optimierungsraum und kann von der Auswahl des Positionswechsels, der Einstellung der Kaufparameter, der Stop-Loss-Stopp und der Algorithmusoptimierung verbessert werden. Gleichzeitig muss man bestimmte Handelsrisiken beachten und angemessene Risikomanagementmaßnahmen ergreifen.

Strategiequellcode
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
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/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price