Wenn diese Artikel zu einer Serie werden, ist das einfach großartig!!!!
Wie sehr habe ich solche Artikel vor etwa vier Jahren vermisst, als ich anfing, das Schreiben von Code zu lernen.
Und jetzt finde ich immer noch Dinge in ihnen, die ich noch nicht wusste.
Besonders der letzte Artikel über StringFormat und PrintFormat ist sehr informativ, wenn man bedenkt, dass die Hilfe zu diesen Funktionen sehr dürftig ist.
Vielen Dank an den Autor für die interessanten und notwendigen Artikel!

- www.mql5.com
Sehr guter Artikel. Wo finden wir die mqh-Datei zum Herunterladen?
Dateien sind dem Artikel nicht beigefügt, da er als eine Art erweiterte Referenzinformation konzipiert wurde. Sie können die Codes aus dem Artikel einfach per Copy-Paste in den Code-Editor von MetaEditor übernehmen.
Dem Artikel sind keine Dateien beigefügt, da er als eine Art erweiterte Referenzinformation konzipiert wurde. Sie können die Codes aus dem Artikel einfach per Copy-Paste in den Code-Editor von MetaEditor übernehmen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Vladimir Karputov, 2016.10.15 08:38 AM
Bitte schreiben Sie auf Russisch in den russischen Teil des Forums.Ich habe sie wohl vergessen. Danke!
//+------------------------------------------------------------------+ //| Protokolliert die Beschreibung aller Felder der MqlRates-Struktur | //+------------------------------------------------------------------+ void MqlRatesPrint(const string symbol,const ENUM_TIMEFRAMES timeframe,const MqlRates &rates, const bool short_entry=true,const uint header_width=0,const uint indent=0,int index=WRONG_VALUE) { //--- Deklarieren Sie eine Variable zum Speichern des Ergebnisses string res=""; //--- Abrufen der Anzahl der Dezimalstellen und des Stringwerts des Zeitrahmens int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); string tf=StringSubstr(EnumToString(timeframe==PERIOD_CURRENT ? Period() : timeframe),7); string num=(index==WRONG_VALUE ? ":" : StringFormat("[%ld]:",index)); //--- Wenn kurze Aufzeichnung - Ausgabe von Taktdaten in das Protokoll im Format Symbol TF[index]: Zeit, O, H, L, C, S, V/VR if(short_entry) { res=StringFormat("%s %s%s %s, O: %.*f, H: %.*f, L: %.*f, C: %.*f, S: %2ld, V: %5lld, RV: %lld", symbol,tf,num,(string)rates.time,dg,rates.open,dg,rates.high,dg,rates.low,dg,rates.close,rates.spread,rates.tick_volume,rates.real_volume); Print(res); } /* Beispielausgabe: GBPUSD H1: 2023.07.21 08:00:00, O: 1.28794, H: 1.28848, L: 1.28772, C: 1.28772, S: 4, V: 448, RV: 0 */ //--- Ansonsten. else { //--- eine Zeichenkette erstellen, die alle Daten der Struktur mit Einrückung und angegebener Breite des Kopffelds beschreibt res=StringFormat("%s %s%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",symbol,tf,num, MqlRatesTime(rates,header_width,indent), MqlRatesOpen(symbol,rates,header_width,indent), MqlRatesHigh(symbol,rates,header_width,indent), MqlRatesLow(symbol,rates,header_width,indent), MqlRatesClose(symbol,rates,header_width,indent), MqlRatesTickVolume(rates,header_width,indent), MqlRatesSpread(rates,header_width,indent), MqlRatesRealVolume(rates,header_width,indent) ); //--- Ausgabe der empfangenen Zeichenfolge in das Logbuch Print(res); } /* Beispielausgabe (wenn Last nicht null ist): Zeit: 2023.07.20 14:42:33 Bid: 1.28958 Ask: 1.28962 Letzter: 1.28947 Volumen: 33 Zeit msc: 2023.07.20 14:42:33.401 Flags: BID|ASK Volumen Real: 33.45 Beispielausgabe (wenn Last Null ist): Zeit: 2023.07.20 14:42:33 Bid: 1.28958 Ask: 1.28962 Zeit msc: 2023.07.20 14:42:33.401 Flags: BID|ASK */ } //+------------------------------------------------------------------+
Ich schlage vor, die Funktionalität zu vervollständigen.
string GetPrintSource( const string Source );
Gibt die Quelle der Druckfunktion durch die Quelle der Struktur zurück.
string GetPrintSource( const string Source ) { return("string ToString( const STRUCT &Data ) { return(\"i = \" + (string)Data.i); }"); } void OnStart() { Print(GetPrintSource("struct STRUCT { int i; };")); }Ich habe hier etwas Ähnliches gemacht, aber mit Eingaben.

- www.mql5.com

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Strukturen in MQL5 und Methoden zum Drucken deren Daten :
In diesem Artikel werden wir uns die Strukturen von MqlDateTime, MqlTick, MqlRates und MqlBookInfo ansehen sowie die Methoden zum Drucken von deren Daten. Um alle Felder einer Struktur auszudrucken, gibt es die Standardfunktion ArrayPrint(), die die im Array enthaltenen Daten mit dem Typ der behandelten Struktur in einem praktischen Tabellenformat anzeigt.
Die Strukturen MqlParam und MqlTradeRequest übermitteln technische Informationen zur Erstellung von Indikatoren und zum Senden von Handelsaufträgen an den Server. Wir füllen die erforderlichen Felder der Strukturen entsprechend dem gewünschten Ergebnis der Datenübermittlung in der ausgefüllten Struktur aus. Mit anderen Worten, diese Strukturen müssen nicht unbedingt die Daten ausgeben, die den Feldern dieser Strukturen von einem Programmierer zugewiesen wurden.
Die übrigen Strukturen liefern jedoch Abfrageergebnisse, und jedes Feld wird entweder vom Terminal-Subsystem oder vom Handelsserver ausgefüllt. Das Abrufen von Daten aus diesen Strukturen, das Analysieren von programmatisch gefüllten Feldern von Strukturen oder das Ausdrucken in ein Protokoll für eine anschließende manuelle Analyse ist sehr praktisch und notwendig, um sowohl programmatische Entscheidungen zu treffen als auch den Ort eines logischen Fehlers zu verstehen und zu finden.
Um alle Felder einer Struktur auszudrucken, gibt es die Standardfunktion ArrayPrint(), die die im Array enthaltenen Daten mit dem Typ der behandelten Struktur in einem praktischen Tabellenformat anzeigt. Aber manchmal müssen wir die Daten aus der Struktur in einem anderen Format ausgeben, das vielleicht bequemer ist als eine tabellarische Darstellung. So kann es beispielsweise erforderlich sein, alle Felder der Struktur in einer Zeile anzuzeigen - mit Überschriften und entsprechenden Daten. Dies kann sich bei der Analyse großer Datenmengen als vorteilhaft erweisen. Gleichzeitig benötigen wir manchmal eine detailliertere Ansicht - mit einer Beschreibung der Strukturfelder und einer anderen Darstellung der entsprechenden Daten.
Autor: Artyom Trishkin