Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
El mismo error seguía apareciendo incluso después de hacer ese cambio, lo siento.
Descargar cada archivo por separado de la versión rusa de la base de código.
Hola,
Por favor, ayúdame, estoy atascado en un punto. Hice 2 EAs, uno guarda los datos, el otro los lee. Tengo un problema con el descubrimiento de recursos.
Este código guarda los datos y desde él puedo acceder a ellos y leerlos:
#include "ResourceData.mqh" // https://www.mql5.com/es/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;
}
Y este código lee los datos y cada vez escribe que no hay nada:
#include "ResourceData.mqh" // https://www.mql5.com/es/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);
//---
}
Parece que hago todo por analogía, pero por alguna razón no veo ninguna información de lo que escribí, ni un array de tipo cadena, ni una sola cadena que obtengo de mi estructura
Parece que hago todo por analogía, pero por alguna razón no se muestra ninguna información de la que escribí, ni un array de tipo cadena, ni una sola cadena que obtengo de mi estructura.
No lo he ejecutado, pero supongo que este es el caso.
Pruébalo de esta forma.
No lo he probado, pero supongo que es así.
Pruébelo usted mismo.
Hola, gracias por escribir
Probado de inmediato, ya que se ha escrito aquí antes. Fui a través de las opciones de fijación tanto en el nombre a la dirección, también se corrige en "ResourceData.mqh". Desafortunadamente no ayudó. No he encontrado la causa todavía
He hecho algunos progresos más -
Cuando uso ResourceReadImage(FullNameCorrect,Arr,width,height)) directamente, puedo aceptar datos de un recurso creado por otro EA, todo funciona correctamente. Cuando se accede al mismo nombre de recurso a través de funciones de biblioteca (similar a la adjunta arriba) - los datos no son aceptados.
Informaré más adelante cuando encuentre cuál era el problema.
Estoy creando un recurso
a - a través de la biblioteca
b - manualmente (ResourceCreate)
Accedo a los datos del recurso desde otro EA utilizando el mismo nombre de recurso:
a - a través de la biblioteca
b - manualmente(ResourceReadImage)
Resultado:
El recurso creado a través de la biblioteca no se encuentra ni manualmente ni a través de la biblioteca
Un recurso creado manualmente se encuentra y se lee manualmente, pero no se encuentra a través de la biblioteca.
Un recurso creado a través de la biblioteca no se encuentra ni manualmente ni a través de la biblioteca
Un recurso creado manualmente se localiza y se lee manualmente, pero no se localiza a través de la biblioteca.
Funciona a través de la biblioteca.
No sé por qué tu ejemplo original no funciona todavía.
Por qué tu ejemplo original no funciona, aún no lo sé.
Si todo lo demás está escrito correctamente, ayudará.
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.
Bibliotecas: TradeTransactions
Alexander, 2025.09.15 21:09
Usted creó un objeto en cada entrada a OnTimer y, en consecuencia, lo mató - en la salida. Es por eso que el recurso vivió durante microsegundos y no estaba en el lado.
estático
Qué punto tan obvio, que pasé por alto durante 2 días sin darme cuenta)
¡Muchas gracias!
¡Todo funciona perfectamente, la posibilidad de intercambiar estructuras personalizadas entre algoritmos utilizando su biblioteca es una gran ayuda para mi comercio, me quito el sombrero!