Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O mesmo erro ainda foi lançado mesmo depois de eu ter feito essa alteração, desculpe.
Baixe cada arquivo separadamente da versão russa da base de código.
Olá,
Por favor, me ajude, estou preso em um ponto. Criei dois EAs, um salva os dados e o outro os lê. Tenho um problema com a descoberta de recursos.
Esse código salva os dados e, a partir dele, posso acessá-los e lê-los:
#include "ResourceData.mqh" // https://www.mql5.com/pt/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;
}
E esse código lê os dados e sempre escreve que não há nada:
#include "ResourceData.mqh" // https://www.mql5.com/pt/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 faço tudo por analogia, mas por algum motivo não vejo nenhuma informação do que escrevi, nem uma matriz do tipo string, nem uma única string que obtenho de minha estrutura
Parece que faço tudo por analogia, mas, por algum motivo, nenhuma informação é exibida a partir do que escrevi, nem uma matriz do tipo string, nem uma única string que obtenho de minha estrutura.
Não o executei, mas presumo que seja esse o caso.
Tente da seguinte forma.
Não o executei, mas presumo que seja esse o caso.
Tente você mesmo.
Olá, obrigado por escrever
Tentei imediatamente, pois isso já foi mencionado aqui antes. Passei pelas opções de correção tanto no nome quanto no endereço, e também corrigi em "ResourceData.mqh". Infelizmente, não ajudou. Ainda não encontrei a causa
Fiz mais alguns progressos.
Ao usar ResourceReadImage(FullNameCorrect,Arr,width,height)) diretamente, posso aceitar dados de um recurso criado por outro EA, e tudo funciona corretamente. Ao acessar o mesmo nome de recurso por meio de funções de biblioteca (semelhante à anexada acima), os dados não são aceitos.
Farei um relatório mais detalhado quando descobrir qual é o problema.
Estou criando um recurso:
a - por meio da biblioteca
b - manualmente (ResourceCreate)
Eu acesso os dados do recurso de outro EA usando o mesmo nome de recurso:
a - por meio da biblioteca
b - manualmente(ResourceReadImage)
Resultado:
O recurso criado por meio da biblioteca não é encontrado nem manualmente nem por meio da biblioteca
Um recurso criado manualmente é encontrado e lido manualmente, mas não é encontrado por meio da biblioteca.
Um recurso criado por meio da biblioteca não é encontrado nem manualmente nem por meio da biblioteca
Um recurso criado manualmente é localizado e lido manualmente, mas não é localizado por meio da biblioteca.
Ele funciona por meio da biblioteca.
Não sei por que seu exemplo original ainda não funciona.
Ainda não sei por que seu exemplo original não funciona.
Se todo o resto estiver escrito corretamente, ele ajudará.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.
Bibliotecas: TradeTransactions
Alexander, 2025.09.15 21:09
Você criou um objeto em cada entrada do OnTimer e, consequentemente, o eliminou - na saída. É por isso que o recurso viveu por microssegundos e não estava ao lado.
estática
Que ponto óbvio, que eu deixei passar por dois dias sem perceber)
Muito obrigado!
Tudo funciona perfeitamente, a capacidade de trocar estruturas personalizadas entre algoritmos usando sua biblioteca é uma grande ajuda para minhas negociações.