Maßgeschneiderte Backtest-Startzeitstrategie


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

Überblick

Der Zweck dieser Strategie ist es, dem Benutzer die Möglichkeit zu geben, die Startzeit der Rückmeldung anzupassen, um eine flexiblere und personalisierte Rückmeldung zu ermöglichen.

Strategieprinzip

Diese Strategie ermöglicht eine benutzerdefinierte Rückmess-Startzeit durch die Verwendung der Time- und Timestamp-Funktionen des Pine-Skripts.

Zuerst lässt es den Benutzer in die Einstellungen ein benutzerdefiniertes Startjahr, Monat, Datum, Stunde und Minute eingeben. Dann erzeugt es mit diesen Eingaben eine Zeitleiste, die in der Variable startTime gespeichert wird.

In der Kritik der Strategie fügt sie eine neue StartTime-Kondition hinzu. Die Strategie wird nur dann gestartet, wenn die aktuelle Zeit größer oder gleich der StartTime ist.

Zum Beispiel:

longCondition = crossover(sma(close, 14), sma(close, 28)) 

if (longCondition and startTime) 

  strategy.entry("My Long Entry Id", strategy.long)

Auf diese Weise kann eine maßgeschneiderte Startzeit für die Rückmessung erreicht werden. Der Benutzer kann die Startzeit der Rückmessung flexibel nach Bedarf konfigurieren und nicht nur auf die Hardcode-Zeit beschränken.

Analyse der Stärken

Diese Strategie zur individuellen Messung der Startzeit hat folgende Vorteile:

  1. Flexibilität: Der Benutzer kann den Startzeitpunkt der Rückmeldung vollständig anpassen und ist nicht mehr auf einen bestimmten Zeitpunkt beschränkt.

  2. Realistischer: Die Startzeit der Rückmeldung kann als die tatsächliche Laufzeit der Strategie eingestellt werden, um die Rückmeldung näher an die realen Marktbedingungen zu bringen.

  3. Einfache Ereignis-gesteuerte Rückmeldung: Die Startzeit kann je nach Ereignis eingestellt werden, um Rückmeldungen für bestimmte Ereignisse durchzuführen.

  4. Einfache Anpassung der Bedingungen: Die Startbedingungen der Rückmessung können sehr bequem angepasst werden, um eine gezielte Rückmessung für verschiedene Phasen durchzuführen.

  5. Wiederholbarkeit und Zuverlässigkeit: Die Startzeit der Rückmeldung wird parametriert, so dass die Wiederholung der Rückmeldung zuverlässig ist.

Risikoanalyse

Es gibt einige Risiken bei der Verwendung von maßgeschneiderten Startzeiten:

  1. Die Rückmeldung ist abhängig von der Startzeit: Unterschiedliche Startzeiten können zu sehr unterschiedlichen Rückmeldungen führen.

  2. Vorsicht bei der Auswahl der Startzeiten: Unvernünftige Startzeiten können zu falschen Rückmeldungen führen, die nicht die realen Umstände widerspiegeln.

  3. Erhöhtes Risiko einer Kurvenübereinstimmung: Es ist leicht, historische Daten durch Anpassung der Startzeit zu übertragen, wodurch ein Risiko für Übertragung besteht.

  4. Verringerte Vergleichbarkeit der Rückmeldungen: Die Rückmeldungen für diese Strategie sind weniger vergleichbar mit den Rückmeldungen für feste Startzeiten.

Entsprechende Lösungen:

  1. Mehrere Rückprüfungen, um die Auswirkungen von Startzeitänderungen auf die Ergebnisse zu bewerten.

  2. Die Wahl der Zeit, in der ein Ereignis stattfindet, als Startzeit, reduziert die Wahrheitsverfälschung der Rückmessung.

  3. Vorsicht bei der Anpassung der Startzeiten, um eine übermäßige Anpassung an die historischen Daten zu vermeiden.

  4. Speichern Sie die Rückmeldung der festen Startzeit als Benchmark und vergleichen Sie sie mit der individuellen Rückmeldung.

Optimierungsrichtung

Diese benutzerdefinierte Retrospektive-Startzeit-Strategie kann auch in folgenden Bereichen optimiert werden:

  1. Unterstützung für die Anpassung der Start- und Endzeiten und die flexible Konfiguration der vollständigen Rückmesszeitfenster.

  2. Unterstützung für mehrere Zeitmodelle: Datum, Relativdatum, Ereignis-Driven usw., um eine intelligentere Zeitkonfiguration für die Rückverfolgung zu ermöglichen.

  3. Unterstützung für eine grafische Konfigurations-Oberfläche, um die Einstellung von Zeitparametern intuitiver zu gestalten.

  4. Unterstützung für verschiedene Zeitgrößen: Jahr, Monat, Tag, Stunde, Minute, Sekunde usw.

  5. Aufzeichnungen über die Zeitkonfiguration der Rückmessungen, so dass die Rückmessungen reproduzierbar, nachvollziehbar und vergleichbar sind.

  6. Hinzufügen von Prüfungen, bei denen die Zeitkonfiguration nicht korrekt ist, um zu vermeiden, dass eine unzumutbare Zeitkonfiguration die Qualität der Rückmessung beeinträchtigt.

  7. Die Startzeitbindung ermöglicht die synchronisierte Kopie der Startzeit in mehreren Strategien mit einer Taste.

Zusammenfassen

Diese Strategie ermöglicht eine benutzerdefinierte und flexible Konfiguration der Startzeit der Rückmessung, wodurch die Einschränkungen der Rückmessung reduziert werden können, um sie näher an die reale Situation zu bringen. Es ist jedoch erforderlich, die Abhängigkeit der Rückmessungsergebnisse von der Startzeit zu überwachen und Maßnahmen wie mehrere Rückmessungen, Ereignisdrift usw. zu ergreifen, um die Fehler der Rückmessung zu verringern.

Strategiequellcode
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!