Die Bibliothek schreibt eine Containerklasse vor, die Variablen und Arrays von beliebigen anderen einfachen Typen in einem Array eines bestimmten Typs speichert.
// Beispiel für die Arbeit mit einem Container#include <TypeToBytes.mqh>
#define PRINT(A) Print(#A + " = " + (string)(A));
voidOnStart()
{
// Beliebige Daten für das Beispielstring Str[] = {"123", "Hello World!"};
double Num = 5;
MqlTick Tick = {0};
Tick.bid = 1.23456;
CONTAINER<long> Container; // Erstellen eines Containers - alles wird in einem Array eines einfachen Typs gespeichert (in diesem Beispiel wird long gewählt)// Füllen Sie den Container mit verschiedenen Daten
Container[0] = Str;
Container[1] = Num;
Container[2] = Tick;
ArrayPrint(Container.Data); // Ausgabe des Inhalts des Arrays, in dem der Container alle Daten speichert// Drucken der im Container gespeicherten Datentypenfor (int i = 0; i < Container.GetAmount(); i++)
PRINT(Container[i].GetType())
// Holen wir uns die Daten selbst string Str2[];
Container[0].Get(Str2); // Ich habe das Array
ArrayPrint(Str2);
PRINT(Container[1].Get<double>()) // Wir haben eine Nummer
PRINT(Container[2].Get<MqlTick>().bid) // Wir haben die Struktur
Container[1] = "Replace"; // Ersetzte Daten durch Index// Überprüfen, ob die Ersetzung stattgefunden hat
PRINT(Container[1].GetType())
PRINT(Container[1].Get<string>())
}
fxsaber: Die Bibliothek enthält eine Containerklasse, die Variablen und Arrays von beliebigen anderen einfachen Typen in einem Array eines bestimmten Typs speichert.
Beispiel einer praktischen Anwendung in der Report-Bibel
Senden eines Frames mit verschiedenen Daten
string Str;
REPORT::ToString(Str);
double Balance[];
REPORT::GetBalanceHistory(Balance);
#ifdef __TYPETOBYTES__
CONTAINER<uchar> Container;
Container[0] = Str; // den Berichtsstring in den Container legen
Container[1] = Balance; // Hinzufügen eines doppelten Arrays mit der Historie der Saldenänderungen zum Container
::FrameAdd(NULL, 0, ::AccountInfoDouble(ACCOUNT_BALANCE), Container.Data); // Senden eines Rahmens mit String-Bericht und Saldo-Array#else // __TYPETOBYTES__
Empfangen eines Rahmens mit anderen Daten
CONTAINER<uchar> Container;
while (::FrameNext(Pass, Name, ID, Value, Container.Data))
{
string Str;
Container[0].Get(Str); // Abrufen der Berichtszeichenfolge aus dem Rahmendouble Balance[];
Container[1].Get(Balance); // Abrufen des entsprechenden Double-Arrays aus dem Rahmen// .....
Zwei Zeilen mit demselben Ergebnis
Die Bibliothek enthält eine Containerklasse, die Variablen und Arrays von beliebigen anderen einfachen Typen in einem Array eines bestimmten Typs speichert.
Beispiel einer praktischen Anwendung in der Report-Bibel
Senden eines Frames mit verschiedenen Daten
Empfangen eines Rahmens mit anderen Daten
Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien
Fragen von MQL5 MT5 MetaTrader 5 Anfängern
fxsaber, 2017.08.23 14:10
Sie müssen den Frame-Modus verwenden, um die Daten der Agents in eine Datei zu schreiben.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Neue Version von MetaTrader 5 build 1640: Erstellen und Testen von eigenen Finanzinstrumenten
fxsaber, 2017.10.10 07:51
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Beta-Version von MetaTrader 5 build 1995: Wirtschaftskalender, MQL5-Programme als Dienste und API für die Sprache R
fxsaber, 2019.02.18 16:36
Hallo. Es klappt also.
Und so funktioniert es.
Ich habe es von hier für MT4
https://www.mql5.com/ru/forum/5905/page11#comment_6134460Das ist so.