Die Ressourcen sind geladen. Beförderung...

Beschreibung des FMZ-Backtest-Mechanismus

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-03-23 10:06:22, Aktualisiert: 2022-03-28 13:42:35

Die meisten Strategien erfordern Backtests zur Überprüfung, bevor sie in Bots durchgeführt werden. FMZ unterstützt Spot-, Futures- und Perpetual-Kontrakte einiger Kryptowährungen sowie alle Arten von Rohstoff-Futures. Der Backtestmechanismus der FMZ Quant-Plattform unterscheidet sich jedoch vom üblichen Onbar-Backtest, der für viele Anfänger zu Verwirrung geführt hat. Dieser Artikel wird einige häufige Backtestfragen detailliert beantworten.

Wie funktioniert ein Backtestsystem?

img

Die Zeit von der Startzeit des Backtests bis zur Endzeit kann als Zeitachse betrachtet werden. Während des Backtests bewegt sich der Backtest-Zeitpunkt von links nach rechts entlang der Achse, um den Backtest zu starten. Zu einem bestimmten Zeitpunkt können nur die Historiendaten vor diesem Zeitpunkt erhalten werden. Auf der Grundlage der Historiendaten macht die Strategie Käufe und Verkäufe und bildet schließlich den Gewinn und Verlust. Offensichtlich ist die Verteilung der Zeitpunkte des Backtests diskret und die Dichte der Verteilung stellt die Genauigkeit des Backtests dar. Natürlich, wenn man bedenkt, dass je dichter die Backtest-Zeitpunkte sind, desto länger die benötigte Zeit ist, muss das eigentliche Backtest-System zwischen Genauigkeit und Effizienz wählen.

Traditionelles OnBar-Backtest-System

Der Onbar-Backtest-Mechanismus basiert auf K-Linien, d.h. jede K-Line erzeugt einen Backtest-Zeitpunkt. Zu diesem Zeitpunkt können Sie die Informationen erhalten, z.B. die aktuellen K-Line-Höchst-, Tiefst-, Offen- und Schließpreise, Handelsvolumen usw. sowie die K-Line-Informationen vor diesem Zeitpunkt.

Der Nachteil dieses Mechanismus ist offensichtlich: Auf einer K-Linie kann nur ein Handel generiert werden, und der Preis basiert normalerweise auf dem K-Line-Schlusskurs. Eine K-Linie kann nur vier Preise erhalten, nämlich Open-, Close-, High- und Low-Preise, kann aber nicht die Informationen erhalten, wie die Preisänderungen auf einer K-Linie und ob der niedrigste Preis zuerst oder der höchste Preis zuerst auftritt. Nehmen Sie die 1-Stunden-K-Linie als Beispiel. Die Marktinformationen müssen alle paar Sekunden im Bot erhalten werden, und die Handelsanweisung wird auch im Bot ausgegeben, anstatt auf das Ende der K-Linie zu warten. Der Vorteil des Onbar-Backtest-Mechanismus ist, dass er leicht zu verstehen ist und die Geschwindigkeit des Backtests extrem schnell ist.

FMZ Quant onTick Backtest-System

img

Das Bild oben zeigt die FMZ-Backtest-Einstellungsoberfläche. Der Backtest-Modus ist in zwei Typen unterteilt, nämlich die Simulationsstufe und die reale Marktstufe, die im Folgenden gesondert vorgestellt werden:

Was ist eine Zecke?

Im Gegensatz zu K-Liniendaten ist Tick der Preis an einem bestimmten Zeitpunkt. Nach den K-Liniendaten wissen wir eigentlich nur, wann der offene Preis und der Schlusskurs aufgetreten sind. Es ist nicht klar, wann der Preis den höchsten Wert in der K-Linienperiode erreicht. Tatsächlich werden die K-Liniendaten auch auf der Grundlage von Tick generiert. Nach den K-Liniendaten ist es auch möglich, die Veränderungen eines bestimmten Ticks in einem K-Linienzeitraum zu simulieren. Obwohl es sich nicht um einen realen Tick handelt, kann es unseren Backtest genauer machen. Und die K-Linienzeit auf der Grundlage der Simulation kann viel kürzer sein als die für den Backtest verwendete Periode, so dass die Genauigkeit höher ist.

Simulationsstufen-Backtest

Für den Simulations-Level-Backtest müssen Sie die K-Linienperiode und die für den Backtest verwendete Unterlage-K-Linienperiode auswählen. Zum Beispiel, wenn die Strategie den stündlichen Linien-Backtest verwendet und die Unterlage-K-Line auf 5 Minuten gesetzt ist, basiert das Intervall der Backtestzeitpunkte auf dem von der 5-minütigen K-Line simulierten Tick, der sich in den kontinuierlichen Veränderungen des K-Linien-Schließpreises in der letzten 1 Stunde widerspiegelt. Der Mechanismus zur Erzeugung von Ticks in den K-Linien nach den K-Linien ähnelt dem von MT4. In diesem Beitrag finden Sie detaillierte Anweisungen:https://www.fmz.com/bbs-topic/662

img
Wir verwenden eine einfache Strategie, um diesen Mechanismus zu demonstrieren. Der Strategiecode:

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods 
      var ticker = exchange.GetTicker()
      Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
      //js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time 
  }
}

Rücktestresultat:img

Nur die offenen und schließenden Ticks jeder K-Linie werden fixiert, und die simulierten 12 Ticks werden in der Mitte hinzugefügt, so dass eine K-Linie 14 Backtest-Zeitpunkte bildet. Wenn Sie einen Tag lang mit der Unterschicht K-Line-Periode von 5 Minuten Backtest machen, werden insgesamt 24 × 12 × 14 = 4032 Zeitpunkte generiert, während der traditionelle OnBar-Backtest nur 24 hat, so dass die Genauigkeit erheblich verbessert wird. Die Open- und Close-Positionsoperationen können auch innerhalb einer K-Line-Periode abgeschlossen werden. Obwohl die generierten Zwischen-Ticks simuliert werden, hat das keinen großen Einfluss. Im Backtest wird der Backtest abgeglichen, solange der Auftragspreis größer als der Kauf-Verkaufspreis und der Verkaufsauftragspreis kleiner als der Kauf-Verkaufspreis ist.

Rückprüfung des realen Marktniveaus

Der reale Markt-Level-Backtest verwendet den realen Tick, und das kürzeste Intervall zwischen jedem Zeitpunkt beträgt nur 1s. Diese Art von Backtest ist auf die Veränderung pro Sekunde genau, aber aufgrund der großen Datenmenge ist die Backtestgeschwindigkeit langsam und die Backtestzeit kann nicht zu lang sein. Das folgende Bild zeigt den realen Tick. Der reale Markt-Level-Backtest kann verwendet werden, um Strategien genau zu überprüfen.

img

Unterschiede zwischen Backtest und Bot

Selbst der reale Markt-Level-Backtest und der echte Bot-Handel haben immer noch offensichtliche Datenmängel, wie die Unfähigkeit, Handelsgeschichte Trades zu erhalten, die Unfähigkeit, tatsächliche Tiefenänderungen, echte Netzwerkverzögerungen und so weiter zu erhalten.

Häufig gestellte Fragen

Warum werden nur wenige Handelspare und -plattformen für Backtests unterstützt?

Derzeit gibt es nur Daten über einige wenige gängige Handelspare.

Kann es BitMEX simulieren, um die Finanzierung zu berechnen?

Sicher, Sie können BitMEX Backtest wählen, um das Protokoll zu öffnen.img

Wo wird der Backtest durchgeführt?

Der Backtest von JavaScript-Strategien wird im Browser durchgeführt, während Python den FMZ-Server oder seinen eigenen Docker wählen kann, um den Backtest auszuführen.

Können die Backtestprotokolle heruntergeladen werden?

Natürlich können Sie, es gibt einen Download-Button in der rechten Ecke der Protokolle.

Kann der Backtest vor Ort durchgeführt werden?

FMZ öffnet die Quelle der Python-Backtest-Engine.https://www.fmz.com/bbs-topic/1687


Mehr