Wie kann den Agenten beigebracht werden, in dieselbe Datei zu schreiben? Zurzeit erstellt jeder seine eigene Datei in seinem eigenen Ordner, was nicht gut ist.
Um die Daten der Agenten in dieselbe Datei zu schreiben, müssen Sie den Frame-Modus verwenden.
// Пример записи данных Агентов (включая Облачные) в один файлinputint Range = 0;
voidOnTick()
{
// ....
}
// Файл открываем только в режимах одиночночного прогона или Фрейма.constint handle = ((MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_OPTIMIZATION)) || MQLInfoInteger(MQL_FRAME_MODE)) ?
FileOpen(__FILE__, FILE_WRITE | FILE_TXT) : INVALID_HANDLE;
// Подготовка данныхvoid GetData( string &Str, MqlTick &Ticks[], double &Balance )
{
Str = "Hello World!";
CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 2); // Последние два тика (пример)
Balance = AccountInfoDouble(ACCOUNT_BALANCE);
}
// Запись данныхvoid SaveData( conststring &Str, constMqlTick &Ticks[], constdouble Balance )
{
FileWrite(handle, Str);
for (int i = 0; i < ArraySize(Ticks); i++)
FileWrite(handle, Ticks[i].bid);
FileWrite(handle, Balance);
}
voidOnTesterDeinit()
{
if (handle != INVALID_HANDLE)
FileClose(handle);
ChartClose();
}
#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280doubleOnTester()
{
string Str;
MqlTick Ticks[];
double Balance;
GetData(Str, Ticks, Balance); // Подготовка данных для записиif (MQLInfoInteger(MQL_OPTIMIZATION)) // Оптимизация
{
CONTAINER<uchar> Container; // https://www.mql5.com/ru/forum/95447/page4#comment_5464205
Container[0] = Str;
Container[1] = Ticks;
Container[2] = Balance;
FrameAdd(NULL, 0, 0, Container.Data); // Отправили данные из Агента на Терминал
}
else// Одиночный прогон
{
if (handle != INVALID_HANDLE)
SaveData(Str, Ticks, Balance); // Данные будут записаны в MQL5\Files-папку Агента (не Терминала)FileClose(handle);
}
return(0);
}
voidOnTesterPass()
{
if (handle != INVALID_HANDLE)
{
ulong Pass;
string Name;
long ID;
double Value;
CONTAINER<uchar> Container; // https://www.mql5.com/ru/forum/95447/page4#comment_5464205while (FrameNext(Pass, Name, ID, Value, Container.Data))
{
string Str;
MqlTick Ticks[];
double Balance;
// Получили данные от Агента
Container[0].Get(Str);
Container[1].Get(Ticks);
Container[2].Get(Balance);
// FileWrite(handle, Pass); // Если хочется записать номер прохода
SaveData(Str, Ticks, Balance); // Данные будут записаны в MQL5\Files-папку Терминала (не Агента)
}
}
}
Ich verstehe jedoch nicht, ob es möglich ist, 100 Indikatoren in einem Stapel in diesem Rahmen zu übergeben? Warum in einem Bild - da jedes Bild als ein separater Durchgang betrachtet wird, wie ich es in der Beschreibung verstanden habe, oder habe ich es falsch verstanden?
Und wo kann ich die Beschreibung des*.mqd-Dateiformats finden?
Ich habe eine Menge Fragen, darf ich sie Ihnen stellen?
Hier ist die Funktion im Code
Die Bedeutung ist klar - wir sammeln Daten, die später geschrieben werden sollen.
Ich verstehe nicht ganz, warum wir Variablen in Klammern deklarieren müssen und was das "&"-Zeichen vor der Variable bedeutet?
Aus der Dokumentation
Es ist möglich, Parameter einfacher Typen per Referenz zu übergeben. In diesem Fall wirkt sich die Änderung solcher Parameter innerhalb einer aufgerufenen Funktion auf die entsprechenden Variablen aus, die als Referenz übergeben werden. Um anzugeben, dass ein Parameter als Referenz übergeben wird, muss ein Modifikator "&" hinter dem Datentyp stehen.
Vielleicht die Grundlagen, keine Argumente, ich komme nur nicht in den Code hinein, wo er beginnt, wo er endet... Daher die Fragen. Ok, es ist ein Verweis(?), aber auf was?
Woher stammt die Variable"Str" ursprünglich?
while (FrameNext(Pass, Name, ID, Value, Container.Data))
{
string Str;
MqlTick Ticks[];
double Balance;
// Получили данные от Агента
Container[0].Get(Str);
Container[1].Get(Ticks);
Container[2].Get(Balance);
// FileWrite(handle, Pass); // Если хочется записать номер прохода
SaveData(Str, Ticks, Balance); // Данные будут записаны в MQL5\Files-папку Терминала (не Агента)
}
Dort heißt es: "... Schritt 1 ...".
Zu Schritt 2 - überlegen Sie nun selbst, wie mehrere Threads OHNE KONFLIKT in EINE Datei schreiben können.
Das ist die Sache, sie können nicht...
Ich nehme an, dass Netzwerkagenten nicht mit DLL-Bibliotheken arbeiten können?
Gibt es eine Möglichkeit, die Prüfnummer des Prüfers herauszufinden? Um die Dateien zusammenkleben zu können...
Wie kann den Agenten beigebracht werden, in dieselbe Datei zu schreiben? Zurzeit erstellt jeder seine eigene Datei in seinem eigenen Ordner, was nicht gut ist.
Um die Daten der Agenten in dieselbe Datei zu schreiben, müssen Sie den Frame-Modus verwenden.
Sie müssen den Frame-Modus verwenden, um die Daten der Agenten in eine einzige Datei zu schreiben.
Ich danke Ihnen! Ich werde mich damit befassen müssen.
Was ist der "Frame-Modus"?
Was ist der "Frame-Modus"?
https://www.mql5.com/ru/docs/optimization_frames
https://www.mql5.com/ru/docs/optimization_frames
Danke - wie ist der Modus zu verstehen.
Ich verstehe jedoch nicht, ob es möglich ist, 100 Indikatoren in einem Stapel in diesem Rahmen zu übergeben? Warum in einem Bild - da jedes Bild als ein separater Durchgang betrachtet wird, wie ich es in der Beschreibung verstanden habe, oder habe ich es falsch verstanden?
Und wo kann ich die Beschreibung des*.mqd-Dateiformats finden?
Allerdings verstehe ich nicht, ist es möglich, 100 Indikatoren in diesem Rahmen in einem Stapel zu übergeben?
Sehen Sie sich das obige Beispiel an. Dort können beliebige Datenmengen übertragen werden.
Sehen Sie sich das obige Beispiel an. Es überträgt beliebige Daten in beliebiger Menge.
Viele Fragen, darf ich sie stellen?
Hier ist die Funktion im Code
Die Bedeutung ist klar - wir sammeln Daten, die später geschrieben werden sollen.
Ich bin mir nicht ganz sicher, warum wir Variablen in Klammern deklarieren und was das "&"-Zeichen vor einer Variablen bedeutet?
Ich habe eine Menge Fragen, darf ich sie Ihnen stellen?
Hier ist die Funktion im Code
Die Bedeutung ist klar - wir sammeln Daten, die später geschrieben werden sollen.
Ich bin mir nicht ganz sicher, warum wir Variablen in Klammern deklarieren und was das "&"-Zeichen vor einer Variablen bedeutet?
Ich habe eine Menge Fragen, darf ich sie Ihnen stellen?
Hier ist die Funktion im Code
Die Bedeutung ist klar - wir sammeln Daten, die später geschrieben werden sollen.
Ich verstehe nicht ganz, warum wir Variablen in Klammern deklarieren müssen und was das "&"-Zeichen vor der Variable bedeutet?
Es ist möglich, Parameter einfacher Typen per Referenz zu übergeben. In diesem Fall wirkt sich die Änderung solcher Parameter innerhalb einer aufgerufenen Funktion auf die entsprechenden Variablen aus, die als Referenz übergeben werden. Um anzugeben, dass ein Parameter als Referenz übergeben wird, muss ein Modifikator "&" hinter dem Datentyp stehen.
Beispiel:
Das sind die Grundlagen. Lesen Sie in der Hilfe über formale Funktionsparameter und die Übergabe von Parametern per Referenz.
Vielleicht die Grundlagen, keine Argumente, ich komme nur nicht in den Code hinein, wo er beginnt, wo er endet... Daher die Fragen. Ok, es ist ein Verweis(?), aber auf was?
Woher stammt die Variable"Str" ursprünglich?