In den vorherigen Artikeln haben wir gelernt, dass der sogenannte programmatische und quantitative Handel ein Skriptprogramm ist, das auf den Daten basiert, die durch eine Reihe von Berechnungen, Urteilen und Auslösern von der Börse erhalten wurden, um einige Operationen durchzuführen und das Exchange-Konto zum Handel zu betreiben. Diese Aktionen zum Erwerb von Daten und zum Betreiben von Konten werden alle über die Exchange API-Schnittstelle durchgeführt. Einfach ausgedrückt, interagiert das Skriptprogramm mit der Börse. Da es sich um eine Interaktion handelt, muss es eine normale Interaktion und eine abnormale Interaktion geben. Wenn eine abnormale Interaktion auftritt, gibt die Schnittstelle die Ausnahme-Nachricht zurück.
Natürlich gibt es in den programmatischen und quantitativen Handelssystemen auf dem Markt oder in den von uns selbst entwickelten Programmen alle Arten von Fehleranweisungen und Fehlermeldungen. Diese Fehlermeldungen beschränken sich nicht nur auf die Fehlermeldungen, die von der Exchange API-Schnittstelle gemeldet werden. Es gibt auch Ausnahmefehler bei der Programmdurchführung, Konfigurationsfehler, Programmgrammatikfehler und so weiter.
Fehlermeldungen auf der FMZ Quantitative Trading Platform fallen ebenfalls grob in mehrere Kategorien:
Strategie-Grammatikfehler Diese Art von Fehler ist die häufigste, da der Anfänger mit Programmieren nicht vertraut ist und es während der Lern- und Testphase grammatikalische Fehler im Schreiben von Code gibt.
Der Code hat Zeichen wie Klammern verpasst. Solche Fehler können in der Regel auf der Strategiebearbeitungsseite angezeigt werden und die Strategie kann nicht ausgeführt werden (ein Fehler wird direkt bei der Ausführung gemeldet, wie in der Abbildung unten gezeigt).
Also, nachdem Sie die Strategie geschrieben haben, werfen Sie einen gewöhnlichen Blick auf die Plattform-Strategie-Bearbeitungsseite, um zu sehen, ob es einen roten XX gibt, wenn ja, muss es einen offensichtlichen Fehler geben.
Ausnahmen aus der Laufzeit des Programms, verursacht durch das Strategieprogramm BUG Es gibt einen Fehler im Programm. Wenn das Programm ausgeführt wird, wird das Auslösen einer Ausnahme dazu führen, dass das Programm abnormal stoppt und solche Fehlermeldungen anzeigt.
Solche Fehler werden dazu führen, dass das Programm abnormal ist und das Programm nicht mehr läuft.
Fehler durch falsche Konfiguration und Einstellungen
Auf der FMZ-Plattform ist das Handelspar einheitlich definiert:X_Y
, wobei X den Namen der gehandelten Währung und Y den Namen der denominierten Währung darstellt (die nominierte Währung des auf Währung basierenden Futures-Kontrakthandelspaares wird in der Regel in USD ausgedrückt, wie in den vorhergehenden Artikeln beschrieben), z. B.BTC_USDT
, wenn ich das Handelspaar zufällig schreibe, schreibe ich es alsBTC-USDT
.
Es wurde ein Fehler beim Backtesting-System der FMZ-Plattform gemeldet:
Ein weiterer Fehler, den Anfänger oft machen:
Diese Art von Fehler ist auf die Änderung des Passworts auf dem FMZ-Plattformkonto zurückzuführen, wodurch dieAPI KEY
in dem konfigurierten Exchange-Objekt (der API-Key des Benutzers wird auf der FMZ-Plattform konfiguriert, nachdem er im Browser verschlüsselt wurde), und die Strategie kann nicht gestartet werden, so dass ein Fehler gemeldet wird.
Es wurde ein Fehler beim Anruf der Schnittstelle gemeldet
In früheren Artikeln haben wir gelernt, dass die Schnittstellen auf der FMZ-Plattform inSchnittstellen, die Netzwerkanfragen generierenundSchnittstellen, die keine Netzwerkanfragen generieren. Der Schnittstellenfehler wird nicht dazu führen, dass das Strategieprogramm stoppt, normalerweise aufgrund von Schnittstellenanruf-Ausnahmen und die falschen Daten zurückgegeben werden, die Strategie macht keine Fehlerverträglichkeit, und der Programm-Ausnahmefehler, der durch die falschen Daten verursacht wird, bewirkt, dass das Programm stoppt (das Konzept der Fehlerverträglichkeit in früheren Artikeln erwähnt).
Hier sind mehrere Fehlermeldungen, die Netzwerkanfragen generieren:
Netzwerk-Timeout
Einer der häufigsten Fehlermeldungen, denen Anfänger begegnen, ist die Verwendung von inländischer Netzwerkgeräte (ihren eigenen Computer oder inländischen Server). Da die meisten Börsen blockiert sind, sind die meisten Börsen im inländischen Netzwerk nicht zugänglich, und die Zugriffsoberfläche wird einen Timeout melden (in früheren Artikeln erwähnt).
HTTP 429 Fehler
Eine der klassischen Fehlermeldungen ist, dass die Austauschoberfläche zu häufig aufgerufen wird und die Frequenzgrenze der Austausch (in früheren Artikeln erwähnt) überschritten wird.
Einige Anfänger mögen sagen, ich möchte mich fürAPI KEY
Wir müssen wissen, dass die Häufigkeit der Schnittstellenzugriffslimits von Börsen in der Regel auf IP-Adressen basiert. Einfach ausgedrückt, solange alle Anfragen, die an eine IP-Adresse gesendet werden, auf dieser IP-Adresse gezählt werden, wird der Exchange-Server den Zugriff verweigern, wenn die Anfrage das Limit überschreitet.
Meldung von Fehlern im Betrieb der Austauschoberfläche
Die oben erwähnten Timeout und 429 sind Netzwerkfehler. Wenn es ein Problem beim Geschäft der Austauschoberfläche gibt, wird auch ein Fehler gemeldet. Zum Beispiel, wenn ich den Spotmarktpreis erhalten möchte, aber ich ein nicht existierendes Handelspaar einstelle. Ich habe es im Debug-Tool der FMZ-Plattform getestet, das Debug-Tool ist ein sehr praktisches Testwerkzeug, das sehr geeignet ist für echte Bot-Tests von Funktionsanrufen und Datenerfassung.
Debugging-Tool-Ausführungsergebnisse, es gibt keinen Unterschied zwischen Debugging-Tool-Ausführung und echte Bot-Ausführung.
Huobi error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
Die Fehlermeldung hier bedeutet, dass das Handelspaar ungültig ist (wie hier zu sehen)."err-msg":"invalid symbol"
)
Zum Beispiel gibt es viele solche geschäftlichen Fehler, wie z. B. die Einstellung von Hebelwirkung, wenn einige Börsen keine Hebelwerte mit Dezimalzahlen unterstützen.
Liste einen Schnittstellenanruf auf, der keine Netzwerkanfrage generiert
Code des Futures-Kontrakts Einige Schnittstellen setzen nur einige globale Variablen im System und erzeugen keine Netzwerkanfragen, zum Beispiel:
Wenn der Parameter jedoch falsch übergeben oder gekritzelt wird, wird ein Fehler gemeldet.
Aber unabhängig von der Art des Fehlers ist die angezeigte Fehlermeldung die wichtigste Information, um das Problem zu finden, und das Problem kann in der Regel aus der Fehlermeldung gesehen werden."err-msg":"invalid symbol"
in the above example, the translation is:
Das Backtesting-System ist auch der Schwerpunkt eines quantitativen Tools. Das Backtesting-System kann Strategieprototypen bequem testen, potenzielle Fehler und logische Probleme in der vorläufigen Teststrategie. Das Backtesting-System muss rational betrachtet werden. Das Backtesting-System kann einige Probleme der Strategie bis zu einem gewissen Grad widerspiegeln.
Im Folgenden finden Sie eine kurze Beschreibung des Backtesting-Systems auf der FMZ-Plattform aus der Ebene der verschiedenen von FMZ unterstützten Strategie-Sprachen. (Einige Einführungen zum Backtesting-System wurden in den vorherigen Artikeln erwähnt)
JavaScript
Das Backtesting im Browser nutzt native Hardware-Ressourcen.
Python
Beim Backtesting auf einem Docker können Sie wählen, welchem Docker Sie zuweisen (entweder dem von Ihnen bereitgestellten Docker oder dem öffentlichen Docker auf der FMZ-Plattform). Angesichts der großen Belastung öffentlicher Custodians auf der FMZ-Plattform wird empfohlen, den lokalen Docker für das Backtesting zu verwenden (dies wird auch schnell sein, wenn der öffentliche Docker Backtesting durchführt, wenn die Aufgaben die Belastung übersteigen, werden einige Backtesting-Aufgaben storniert, was zu einer Unterbrechung des Backtesting führt).
C++
Im Gegensatz zu Skriptsprachen müssen C++-Strategien kompiliert und dann ausgeführt werden. Die C++-Sprachstrategie wird zuerst auf der FMZ-Plattform (Server) kompiliert (wenn es ein Problem mit dem Code gibt, kann die Kompilierung nicht passieren, und eine Fehlermeldung wird direkt angezeigt).
MyLanguage
Die zugrunde liegende Implementierung ist JavaScript, und Backtesting wird auch im Browser durchgeführt.
Visualisierung
Die zugrunde liegende Implementierung ist JavaScript, und Backtesting wird auch im Browser durchgeführt.
Das Backtesting-System auf der FMZ Quant Trading Platform ist in zwei Backtesting-Modi unterteilt (unabhängig von der Strategiesprache, dies ist die Einstellung für das Backtesting, und das Strategie-Backtesting in allen Sprachen ist gleich).
A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
Es ist wie eine Simulation wie diese:https://www.fmz.comNatürlich ist die Situation bei der Implementierung dieser Simulation durch das eigentliche Backtesting-System etwas komplizierter als in der Abbildung dargestellt. In diesem Zusammenhang ist es wichtig, die Nachteile des Simulations-Backtesting zu berücksichtigen, obwohl das Simulations-Backtesting sehr schnell erfolgt (weil die durch die Simulation erzeugten Preise keine realen Sekunde-für-Sekunde-Preise sind, die einzeln veröffentlicht werden).simulierte Bewegungsentwicklung von Zecken, wird die Strategie sehr gut funktionieren (in Wirklichkeit ist der Preis jedoch möglicherweise nicht dieser Trend, obwohl der Preis innerhalb des Rahmens dieser K-Linie liegt). Die K-Linie, die verwendet wird, um die simulierten Tick-Daten hier generiert wird die untere K-Linie genannt, und die Periode dieser K-Linie wird genanntdie unterste K-Linieperiode, die wie auf der Strategie-Einstellungsseite angezeigt eingestellt ist:
Die Einstellung von 1 Minute bedeutet, dass die K-Liniendaten mit einer Periode von 1 Minute als Datenquelle für die Erzeugung des simulierten Ticks verwendet werden.
Ein weiterer Punkt ist, dass es bei Hochfrequenzstrategien offensichtlich nicht angebracht ist, Simulations-Backtesting zu verwenden.
Wo ist die Datenquelle des FMZ Quant Trading Platform Backtesting-Systems? Das Backtesting-System verwendet standardmäßig die Daten des Rechenzentrums der FMZ-Plattform. Das Rechenzentrum der FMZ-Plattform sammelt automatisch die gesetzten Marktdaten jeder Währung jeder Börse und stellt sie dem Backtesting-System auf der Plattform zur Verfügung.
Es gibt auch einige Hinweise zu benutzerdefinierten Datenquellen in der FMZ-API-Dokumentation:https://www.fmz.com/api#custom-data-source
Sie können nicht programmatisch und quantitativ handeln, ohneLernen, Prüfungen, undDenken- Ich weiß. Ich glaube nicht, daß die Kommission in der Lage sein wird, die Probleme zu lösen, wenn sie nicht in der Lage ist, sie zu lösen.Informationen findenDann...Probieren Sie es aus., Denken und analysieren, wenn das Problem nicht gelöst wird, wiederholen Sie bitte die oben genannten Aktionen.
Aber wenn ein Anfänger auf Probleme stößt, wird er oder sie denken:
Oops, es ist zu schwer, Strategien zu programmieren, zu quantifizieren und zu schreiben. Nachdem ich es lange gesehen habe, bin ich immer noch verblüfft! Ich will aufhören, bevor ich anfange! Ich...
Der Einstieg auf der FMZ-Plattform ist eigentlich sehr einfach. Zunächst einmal müssen Sie gut in der Suche nach Informationen sein.
Die zweite ist die praktische Fähigkeit, die leicht mit Hilfe des Backtesting-Systems und der Debugging-Tools getestet werden kann. Dies bedeutet nicht, eine vollständige Strategie zu testen. In der Tat können Sie sogar die Grundlagen von JavaScript-Programmen auf dem FMZ Quant-Backtesting-System lernen, wenn Sie völlig grundlegend sind.
Das ist die Tutorial-Website, wo ich oft JS lerne:https://www.runoob.com/js/js-loop-for.html, es beschränkt sich nicht auf JS, alle Arten von IT-Wissen können hier abgefragt und gelernt werden. Zum Beispiel weiß ich nicht, wie man die regulären Ausdrücke von JS verwendet, was soll ich tun? Natürlich, suchen Sie die Informationen zuerst, und dann versuchen, es zu tun ~
Ich habe ein Beispiel dafür gesehen:Ich möchte es testen, und ich kann das Backtesting-System der FMZ-Plattform verwenden, um zu testen und zu lernen.
Setzen Sie einen zufälligen Austausch auf dem Backtesting-System ein
Test den folgenden Code:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}
Sieh mal, was für ein Lernwerkzeug! Zum Beispiel möchte ich lernen, wie man die Loop-Logik der JavaScript-Sprache schreibt, und es ausprobieren:
Schleife die Elemente einer Array-Variable in der Reihenfolge durch, in der sie im Array erscheinen:
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}
Fühlen Sie sich motiviert, in einem Augenblick zu lernen? Tatsächlich können Sie auf FMZ die Grundlagen von JavaScript auf dem Backtesting-System lernen, während Sie das JavaScript-Tutorial ansehen. Die JavaScript-Grammatik ist fast gemeistert, und wenn Sie in die nächste Stufe gehen, müssen Sie die Austauschoberfläche verwenden, um Daten zu testen.Debugging-ToolDie Kommission hat eine Reihe von Maßnahmen ergriffen, um die Nutzung der FMZ-Plattform zu verbessern.
Dann geht es darum, mehr zu denken, Schlussfolgerungen aus einem Fall zu ziehen, Testverifizierung, vergleichende Analyse usw. Das macht das Lernen sehr schnell los.