Die Ressourcen sind geladen. Beförderung...

Kryptowährungsquantitativer Handel für Anfänger - Sie näher an Kryptowährungsquantitativer Handel bringen (3)

Schriftsteller:FMZ~Lydia, Erstellt: 2022-07-29 09:37:22, Aktualisiert: 2023-09-21 21:03:55

img

Kryptowährungsquantitativer Handel für Anfänger - Sie näher an Kryptowährungsquantitativer Handel bringen (3)

Fehlermeldung

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.

    img

    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).

    imgAlso, 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.

    img

    img

    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.

    img

    Es wurde ein Fehler beim Backtesting-System der FMZ-Plattform gemeldet:

    img

    Ein weiterer Fehler, den Anfänger oft machen:

    img

    Diese Art von Fehler ist auf die Änderung des Passworts auf dem FMZ-Plattformkonto zurückzuführen, wodurch dieAPI KEYin 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 KEYWir 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.

      img

      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:

      img

      Wenn der Parameter jedoch falsch übergeben oder gekritzelt wird, wird ein Fehler gemeldet.

      img

    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: err msg: ungültig Symbol . It is probably known that the trading pair is set incorrectly, because English symbols are usually used to represent the trading code and trading pair. Es ist wahrscheinlich bekannt, dass das Handelspaar falsch eingestellt ist, weil englische Symbole normalerweise verwendet werden, um den Handelscode und das Handelspaar darzustellen. Für gemeinsame Probleme gibt es einen Post, der weiterhin für Abfragen gesammelt wird:https://www.fmz.com/bbs-topic/9158

System zur Rückprüfung

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).

img

    1. Zurückprüfung auf Simulationsebene Einfach ausgedrückt, bezieht sich das Simulations-Level-Backtesting auf die Preisdaten jedes Zeitknotenpunktes, der nach den K-Liniendaten simuliert und generiert wird.
    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.comimgNatü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:

    imgDie 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.

    1. Echtes Backtesting auf Bot-Ebene Nachdem wir über Simulation-Level-Backtesting gesprochen haben, sprechen wir über echtes Bot-Level-Backtesting. Einfach ausgedrückt, ist das Backtesting auf echtem Bot-Level die tatsächliche Freigabe von Preisdaten jede Sekunde während des Backtests. Es ermöglicht der Strategie, den Preis pro Sekunde des Marktes zurückzuverfolgen. Dieser Backtestmodus ermöglicht es Ihnen, Strategien mit hoher Handelsfrequenz zu backtesten und einen bestimmten Grad an Referenzwert zu erhalten. Der Nachteil ist, dass die Menge der Backtesting-Daten auf der echten Bot-Ebene zu groß ist, um in einem großen Zeitrahmen (die Zeit ist in der Regel weniger als 1 Tag) zurückgetestet zu werden.geteilte Daten(Transaktions-Tick-by-Tick-Daten, und Markttiefe Daten hat auch Sekunde-für-Sekunde-Snapshots in der realen Bot-Backtesting, so dass die Menge der realen Bot-Backtesting-Daten ist riesig) um den Bereich der Backtesting angemessen zu erhöhen, wie in der Abbildung gezeigt:

    img

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.

    1. Daten aus dem FMZ-Rechenzentrum standardmäßig verwenden Wie in früheren Artikeln erwähnt:https://www.fmz.com/bbs-topic/9536Die von der Plattform bereitgestellten Backtestdaten unterstützen nur eine begrenzte Anzahl von Handelsparen (die Backtestdaten des gesamten Marktes und aller Währungen sind astronomische Zahlen, und es ist unrealistisch, sie alle zu sammeln. Unsere Plattform hat Marktdaten von Mainstream-Börsen und Mainstream-Währungen gesammelt).
    1. Benutzen Sie benutzerdefinierte Datenquelle Sie können die Optionen auf der Backtesting-Seite verwenden, um eine benutzerdefinierte Datenquelle festzulegen.

    img

    Es gibt auch einige Hinweise zu benutzerdefinierten Datenquellen in der FMZ-API-Dokumentation:https://www.fmz.com/api#custom-data-source

Lernen, Testen, Denken

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.

img

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:imgIch 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 einimg

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))
}

img

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])
    }
}

img

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.


Verwandt

Mehr