
Die meisten Strategien müssen zur Verifizierung einem Backtest unterzogen werden, bevor sie in die Praxis umgesetzt werden. FMZ unterstützt einige Arten von Spot-, Futures- und unbefristeten Verträgen für digitale Währungen sowie alle Arten von Rohstoff-Futures. Der Backtesting-Mechanismus der Inventor Quantitative Platform unterscheidet sich jedoch vom üblichen Onbar-Backtesting, was bei vielen Neulingen für Verwirrung gesorgt hat. In diesem Artikel werden einige häufige Fragen zum Backtesting ausführlich erläutert und beantwortet.

Wie in der obigen Abbildung dargestellt, kann die Startzeit bis zur Endzeit des Backtests als Zeitachse betrachtet werden. Beim Backtesting bewegt sich der Backtest-Zeitpunkt von links nach rechts entlang der Achse, um den Backtest zu starten. Zu diesem Zeitpunkt kann nur dieser Punkt erhalten werden. Die Strategie nutzt frühere historische Daten, um auf der Grundlage dieser Daten Käufe und Verkäufe durchzuführen, was letztendlich zu Gewinn oder Verlust führt. Offensichtlich ist die Verteilung der Backtesting-Zeitpunkte diskret und die Dichte der Verteilung stellt die Genauigkeit des Backtestings dar. Wenn man bedenkt, dass je dichter die Backtesting-Zeitpunkte sind, desto länger dauert es natürlich, sodass das eigentliche Backtesting-System einen Kompromiss zwischen Genauigkeit und Effizienz eingehen muss.
Der Onbar-Backtesting-Mechanismus basiert auf der K-Linie, d. h. jede K-Linie generiert einen Backtesting-Zeitpunkt, zu dem die hohen Eröffnungs- und niedrigen Schlusskurse, das Handelsvolumen und andere Informationen der aktuellen K-Linie abgerufen werden können, wie sowie die Informationen vor diesem Zeitpunkt. Historische K-Linien-Informationen. Der Nachteil dieses Mechanismus liegt auf der Hand: Auf einer K-Linie kann nur ein Kauf und Verkauf getätigt werden, und der Preis basiert normalerweise auf dem Schlusskurs der K-Linie. Darüber hinaus kann eine K-Linie nur vier Preise erhalten: hohe Eröffnung und niedrige Schließung. Wie sich der Preis innerhalb einer K-Linie ändert, ob der höchste Preis zuerst auftritt oder der niedrigste Preis zuerst auftritt usw., ist nicht möglich. um solche Informationen zu erhalten. Am Beispiel der 1-stündigen K-Linie werden im realen Handel alle paar Sekunden Marktinformationen eingeholt und Handelsanweisungen während der Handelssitzung erteilt, anstatt auf das Ende der K-Linie zu warten. Der Vorteil des Onbar-Backtesting-Mechanismus besteht darin, dass er leicht verständlich ist und die Backtesting-Geschwindigkeit extrem hoch ist.

Das Bild oben zeigt die FMZ-Backtesting-Einstellungsschnittstelle. Die Backtesting-Modi sind in zwei Typen unterteilt: Backtesting auf Simulationsebene und Backtesting in Echtzeit, die im Folgenden vorgestellt werden:
Was ist eine Zecke?
Anders als bei K-Line-Daten ist der Tick der Preis zu einem bestimmten Zeitpunkt. Basierend auf den K-Linien-Daten kennen wir eigentlich nur den Zeitpunkt, an dem der Eröffnungs- und Schlusskurs auftraten. Es ist unklar, wann der Preis innerhalb des K-Linien-Zyklus den Höchststand erreichte. Tatsächlich werden K-Line-Daten auch auf Basis von Ticks generiert. Basierend auf den K-Line-Daten können wir auch die Änderungen in einem bestimmten Tick einer K-Line-Periode simulieren. Obwohl es sich nicht um einen echten Tick handelt, kann es unser Backtesting genauer machen. Darüber hinaus kann der für die Simulation verwendete K-Line-Zeitraum viel kleiner sein als der für das Backtesting verwendete Zeitraum, sodass die Genauigkeit höher ist.
Backtesting auf Simulationsebene
Für das Backtesting auf Simulationsebene müssen Sie den K-Line-Zeitraum und den zugrunde liegenden K-Line-Zeitraum auswählen, der für das Backtesting verwendet wird. Wenn die Strategie beispielsweise stündliches Backtesting verwendet und die zugrunde liegende K-Linie 5 Minuten beträgt, dann basiert das Intervall zwischen den Backtesting-Zeitpunkten auf den Ticks, die durch die 5-minütige K-Linien-Simulation generiert werden, was sich in den kontinuierlichen Änderungen widerspiegelt im Schlusskurs der letzten 1-Stunden-K-Linie. Der spezifische Mechanismus zur Generierung von Ticks innerhalb der K-Linie basierend auf der K-Linie ähnelt dem von MT4. In diesem Beitrag finden Sie eine detaillierte Beschreibung: https://www.fmz.com/bbs-topic/662

Wir verwenden eine einfache Strategie, um diesen Mechanismus zu demonstrieren. Der Strategiecode lautet wie folgt:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
var ticker = exchange.GetTicker()
Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
//js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
}
}
Backtesting-Ergebnisse:
Für jede K-Linie werden nur die Eröffnungs- und Schluss-Ticks festgelegt und dazwischen werden 12 simulierte Ticks hinzugefügt, sodass eine K-Linie 14 Backtesting-Zeitpunkte bildet. Wenn der Backtest einen Tag dauert, beträgt der zugrunde liegende K-Line-Zyklus 5 Minuten mit insgesamt 24 × 12 × 14 = 4032 Zeitpunkten, während der traditionelle onBar-Backtest nur 24 hat, was die Genauigkeit erheblich verbessert. Das Öffnen und Schließen von Positionen kann auch innerhalb eines K-Line-Zyklus abgeschlossen werden. Obwohl die in der Mitte generierten Ticks simuliert werden, ist die Auswirkung nicht signifikant. Solange im Backtest der Gebotspreis höher als der Briefkurs und der Briefkurs niedriger als der Gebotspreis ist, wird eine Transaktion abgeglichen. Diese Backtesting-Methode berücksichtigt sowohl die Backtesting-Geschwindigkeit als auch die Genauigkeit und wird jedem empfohlen.
Backtesting in Echtzeit
Beim Echtzeit-Backtesting werden reale Ticks verwendet, wobei das kürzeste Intervall zwischen den einzelnen Zeitpunkten nur 1 Sekunde beträgt. Diese Backtesting-Genauigkeit ist auf jede Sekunde genau, aber aufgrund der großen Datenmenge ist die Backtesting-Geschwindigkeit langsam und die Backtesting-Zeit kann nicht garantiert. Sehr lang. Das Bild unten zeigt die eigentliche Zecke. Mithilfe von Echtzeit-Backtesting können Strategien genau validiert werden.

Sogar beim Backtesting und Handel in Echtzeit gibt es immer noch offensichtliche Datenmängel, wie etwa die Unfähigkeit, den Transaktionsverlauf abzurufen, die Unfähigkeit, tatsächliche Tiefenänderungen abzurufen, tatsächliche Netzwerkverzögerungen usw. Dennoch ist das aktuelle Backtesting-System von FMZ relativ vollständig und verfügt über viele kleine Funktionen, wie beispielsweise die Simulation von Netzwerkfehlern, mit denen die Fehlertoleranz von Strategien getestet werden kann, die Simulation von Netzwerkverzögerungen, das Zeichnen von Marktsymbolen usw.
Warum werden für Backtesting nur wenige Handelspaare und Börsen unterstützt?
Derzeit gibt es nur wenige gemeinsame Handelsdatenpaare. Tatsächlich ist die Beziehung zwischen Strategie und Produkt nicht sehr groß, aber sie reicht aus, um die Strategie zu überprüfen.
Kann es den von BitMEX erhobenen Finanzierungssatz simulieren?
Ja, Sie können die Ereignisprotokollierung aktivieren, indem Sie BitMEX Backtest auswählen.

Wo wird das Backtesting durchgeführt?
Das Backtesting von JavaScript-Strategien wird im Browser durchgeführt und Python kann zwischen den Servern von FMZ oder einem eigenen Host wählen.
Können die Backtest-Protokolle heruntergeladen werden?
Ja, es gibt einen Download-Button in der oberen rechten Ecke des Protokolls
Kann ich lokal Backtests durchführen?
FMZ hat seine Python-Backtesting-Engine als Open Source freigegeben. Referenz: https://www.fmz.com/bbs-topic/1687