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
Derselbe Fehler trat auch nach dieser Änderung noch auf, sorry.
Laden Sie jede Datei separat von der russischen Version der Codebasis herunter.
Hallo,
Bitte helfen Sie mir, ich stecke in einem Punkt fest. Ich habe 2 EAs gemacht, einer speichert Daten, der andere liest sie. Ich habe ein Problem mit der Ressourcenerkennung.
Dieser Code speichert die Daten und von dort kann ich darauf zugreifen und sie lesen:
#include "ResourceData.mqh" // https://www.mql5.com/de/code/22166
#define PRINT(A) Print(#A + " = " + (string)(A));
struct ExampleStruct
{
string ea_name;
string symbol;
string direction;
string time_for_command;
};
ExampleStruct qexamplestruct[2];
int OnInit(void)
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
// Произвольные данные для примера
string Str[] = {"123", "Hello World!"};
qexamplestruct[0].direction="buy";
qexamplestruct[0].ea_name="TestEAname";
qexamplestruct[0].symbol="EURUSD";
qexamplestruct[0].time_for_command="01.01.2021";
string stringtosend = Serialize(qexamplestruct[0]);
const RESOURCEDATA<uint> Resource("::ResoC"); // Ресурс для обмена данными
CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)
Container[0] = Str;
Container[1] = stringtosend;
const string NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::ResoC";
Print(NameOut); // Вывели полное имя ресурса.
Resource = Container.Data; // Отправили данные на обмен
//---
}
string Serialize(const ExampleStruct &s)
{
return s.ea_name + "\n" + s.symbol + "\n" + s.direction + "\n" + s.time_for_command;
}
ExampleStruct Deserialize(const string &line)
{
string parts[];
StringSplit(line, '\n', parts);
ExampleStruct s;
if(ArraySize(parts) > 0) s.ea_name = parts[0];
if(ArraySize(parts) > 1) s.symbol = parts[1];
if(ArraySize(parts) > 2) s.direction = parts[2];
if(ArraySize(parts) > 3) s.time_for_command = parts[3];
return s;
}
Und dieser Code liest die Daten und schreibt jedes Mal, dass da nichts ist:
#include "ResourceData.mqh" // https://www.mql5.com/de/code/22166
#define PRINT(A) Print(#A + " = " + (string)(A));
int OnInit(void){return(INIT_SUCCEEDED);}
void OnTick()
{
const RESOURCEDATA<uint> Resource("\Terminal\99A739E3DB06068691C851DE1765F329\MQL5\Experts\ZC\Conections\Draft4.ex5::ResoC"); // Ресурс для доступа к данным (только для чтения) из другой программы
CONTAINER<uint> Container4; // Сюда будем получать данные
Resource.Get(Container4.Data); // Считали данные из ресурса.
for (int i = 0; i < Container4.GetAmount(); i++)
Print("i==",i);
string Str4;
Container4[0].Get(Str4); // Получили массив
Print("Test!!!"+Str4);
Print(Str4);
//---
}
Ich scheine alles analog zu machen, aber aus irgendeinem Grund sehe ich keine Informationen aus dem Code, den ich geschrieben habe, weder ein Array vom Typ String, noch einen einzelnen String, den ich aus meiner Struktur bekomme
Ich scheine alles durch Analogie zu tun, aber aus irgendeinem Grund keine Informationen von der ich schrieb, weder ein Array von String-Typ, noch eine einzelne Zeichenfolge, die ich von meiner Struktur erhalten angezeigt wird.
Ich habe es nicht ausgeführt, aber ich nehme an, dass dies der Fall ist.
Versuchen Sie es auf diese Weise.
Ich habe es nicht ausprobiert, aber ich nehme an, dass das der Fall ist.
Probieren Sie es selbst aus.
Hallo, vielen Dank für Ihren Beitrag
Habe es gleich ausprobiert, da hier schon einmal darüber geschrieben wurde. Ich bin die Optionen durchgegangen, sowohl im Namen als auch in der Adresse zu fixieren, auch in "ResourceData.mqh" korrigiert. Hat leider nicht geholfen. Ich habe die Ursache noch nicht gefunden
Ich habe einige weitere Fortschritte gemacht -
Wenn ich ResourceReadImage(FullNameCorrect,Arr,width,height)) direkt verwende, kann ich Daten von einer Ressource akzeptieren, die von einem anderen EA erstellt wurde, alles funktioniert korrekt. Beim Zugriff auf denselben Ressourcennamen über Bibliotheksfunktionen (ähnlich der oben angehängten) - werden die Daten nicht akzeptiert.
Ich werde weiter berichten, wenn ich finde, was das Problem war.
Ich erstelle eine Ressource:
a - über die Bibliothek
b - manuell (ResourceCreate)
Ich greife auf die Ressourcendaten von einem anderen EA zu, der denselben Ressourcennamen verwendet:
a - über die Bibliothek
b - manuell(ResourceReadImage)
Ergebnis:
Die über die Bibliothek erstellte Ressource wird nicht gefunden, weder manuell noch über die Bibliothek
Eine manuell erstellte Ressource wird gefunden und manuell gelesen, aber nicht über die Bibliothek gefunden.
Eine über die Bibliothek erstellte Ressource wird nicht gefunden, weder manuell noch über die Bibliothek
Eine manuell erstellte Ressource wird manuell gefunden und gelesen, aber nicht über die Bibliothek gefunden.
Sie funktioniert über die Bibliothek.
Ich weiß nicht, warum Ihr ursprüngliches Beispiel noch nicht funktioniert.
Warum Ihr ursprüngliches Beispiel nicht funktioniert, weiß ich noch nicht.
Wenn alles andere richtig geschrieben ist, wird es helfen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.
Bibliotheken: TradeTransactions
Alexander, 2025.09.15 21:09
Du hast ein Objekt auf jedem Eingang zu OnTimer erstellt und es dementsprechend getötet - auf dem Ausgang. Das ist, warum die Ressource lebte für Mikrosekunden und war nicht auf der Seite.
statisch
Was für ein offensichtlicher Punkt, an dem ich 2 Tage lang vorbeigeschaut habe, ohne ihn zu bemerken)
Ich danke Ihnen sehr!
Alles funktioniert perfekt, die Möglichkeit, benutzerdefinierte Strukturen zwischen Algorithmen mit Ihrer Bibliothek auszutauschen, ist eine große Hilfe für meinen Handel, Hut ab vor Ihnen!