Bibliotheken: JSON Serialization and Deserialization (native MQL) - Seite 8
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Bibliothek funktioniert in MQL4 und MQL5
Dankbarkeit wird in Form von Beispielen Ihrer praktischen Arbeit mit den Webressourcen von MQL angenommen ;)
Guten Tag!
Ich danke Ihnen für die Bibliothek!
Ich habe Ihre Bibliothek verwendet, um die Arbeit von Computern zu überwachen, die mit einem Pool für das Mining von Kryptowährungen verbunden sind.
Der Pool (seine Website) gibt als Antwort auf eine Statusabfrage eine Antwort in der Form:
/* {"status": "OK", "data":[ {"worker": "riga1", "lastSeen":1511432055, "currentHashrate":2746.6666666666665,"validShares":103,"invalidShares":0,"staleShares":null}, {"worker":"riga2","lastSeen":1511432068,"currentHashrate":3040,"validShares":114,"invalidShares":1,"staleShares":null}, {"worker":"riga3","lastSeen":1511432057,"currentHashrate":2426.6666666666665,"validShares":91,"invalidShares":0,"staleShares":null}, {"worker":"riga4","lastSeen":1511432055,"currentHashrate":2266.6666666666665,"validShares":85,"invalidShares":0,"staleShares":null}, {"worker":"riga5","lastSeen":1511432061,"currentHashrate":2666.6666666666665,"validShares":100,"invalidShares":0,"staleShares":null}, {"worker":"riga6","lastSeen":1511432050,"currentHashrate":2293.3333333333335,"validShares":86,"invalidShares":0,"staleShares":null}, {"worker":"riga7","lastSeen":1511432069,"currentHashrate":1013.3333333333334,"validShares":38,"invalidShares":0,"staleShares":null}]} */riga1, riga2, etc. - Das sind Computer, bei denen wir überwachen müssen, dass ihre "currentHashrate" nicht unter einen Schwellenwert fällt.
Der Code ist sehr einfach:
Ausgaben wie:
riga7 Hashrate: 826.6666
riga6 Hashrate: 2293.333
riga5 Hashrate: 3200.
riga4 Hashrate: 1866.666
riga3 Hashrate: 2800
riga2 Hashrate: 2853.333
riga1 Hashrate: 2933.333
Vielen Dank an die Entwickler der Bibliothek, aber es funktionierte sehr langsam, in der Regel, bevor Sie ein Produkt oder Code, sollte es profiliert werden, aber in diesem Fall, da die Bibliothek kostenlos ist, gibt es keinen Grund zu klagen, die Bibliothek arbeitet sehr langsam, wenn Sie dies nicht tun:
Ansonsten ist hier, was vorher war (die Web-Anfrage selbst auf diesem Bildschirm dauerte 16.718.439 in der Zeit, der ganze Rest der Verarbeitung):
und nach der Optimierung (der Pfeil zeigt die gleiche Web-Anfrage):
Der Geschwindigkeitszuwachs war fast 20 Mal schneller.
Warum 50.000?
und nicht 20.000.000 oder 100.000?
--
Welche Art von Testdaten haben Sie verwendet?
auf die Daten, die insgesamt stellt sich heraus, von 10000 - 30000, aus diesem Grund wählte ich 50000 mit einer Reserve), aber früher habe ich diese Bibliothek auf Werte von etwa 280 in das Array, in dieser Version und 500 ist genug, 50000 ist sicherlich für diejenigen, die die Ressourcen des Systems ermöglichen.
Der Dokumentation zufolge reduziert der Reservierungsparameter lediglich die Anzahl der Neuzuweisungen von Speicherplatz.
Bitte prüfen Sie an Ihrem Testbeispiel mit dem Parameter 100 (1000, 10000)
wie hoch der Geschwindigkeitsgewinn in diesem Fall auf dem Profiling-Bildschirm sein wird
Der Dokumentation zufolge reduziert der Reservierungsparameter lediglich die Anzahl der Neuzuweisungen von Speicherplatz.
Bitte prüfen Sie Ihr Testbeispiel mit dem Parameter 100 (1000, 10000)
wie hoch ist der Geschwindigkeitsgewinn auf dem Profiling-Bildschirm?
Ja, genau so ist es, ich habe persönlich den optimalen Parameter für die Umverteilung gefunden, jetzt ist die längste Funktion von allen die Deserialisierung..., aber es ist im Prinzip klar, obwohl in der Idee, wie ich in dieser Bibliothek verstehe, alles durch Methoden der Suche und der maximalen Universalität gemacht wird, aber ich denke immer noch, dass es irgendwo in der Deserialisierung eine Nuance gibt, die optimiert werden kann.... Ich habe einen Screenshot von Profiling, Speicher Reallocation Parameter 5000 beigefügt.
1.12
Schritt 100 in ArrayResize setzen
Angenommen:
Wie kann ich dies auf MQL-Typen nach Deserialize abbilden?
Liebe Fachleute! Bitte helfen Sie mir, die Bibliothek zu verstehen. (Ich bin noch nicht gut in objektorientierter Programmierung, daher kann ich den Code der Bibliothek selbst und den Artikel, der dem BTC-E-Austausch gewidmet ist, nicht verstehen. Deshalb bitte ich um ein einfaches Beispiel wie im Beitrag #58 ).
Ich muss zwei öffentliche Api der WEX.NZ-Börse parsen.
https://wex.nz/api/3/info
{ "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ...Von hier aus muss ich alle verfügbaren Paare (btc_usd, btc_rur, ...) in ein Array übertragen (nur die Namen der Paare, ohne Parameter, ich kann die Parameter durch bekannte Namen erhalten...).
https://wex.nz/api/3/depth/btc_usd
{ "btc_usd": { "asks": [ [ 11550, 0.00998 ], [ 11559.9, 0.01731136 ], ... ] ], "bids": [ [ 11506.031, 1.756 ], [ 11506.03, 1.23 ], ... ] ] } }und von hier aus in zwei Arrays (asks und bids), um den Preis und den Wert der Aufträge zu erhalten.
Ich werde sehr dankbar für Hilfe sein!!! Vielen Dank im Voraus!