Подскажите пожалуйста, застрял на одном моменте. Сделал 2 советника, один сохраняет данные, второй их считывает. У меня проблема с обнаружением ресурса.
Этот код сохраняет данные и из него я могу обратиться к ним и прочесть их:
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);
//---
}
Вроде все делаю по аналогии, но почему-то не отображается никакая информация из той, что записывал, ни массив string типа, ни единичный string который получаю из своей структуры
Вроде все делаю по аналогии, но почему-то не отображается никакая информация из той, что записывал, ни массив string типа, ни единичный string который получаю из своей структуры
Сразу пробовал, тк об этом писалось здесь ранее. Перебрал варианты исправления как в имени для обращения, также поправил в "ResourceData.mqh". К сожалению не помогло. Пока не нашел причину
Сверил имя ресурса с помощью Print("Full Name: ",Resource.GetFullName()); имя беру корректное, варианты пути TERMINAL_PATH и TERMINAL_DATA_PATH попробовал оба - итог пока тот-же
Созданный через библиотеку ресурс не находится ни вручную ни через библиотеку
Созданный вручную ресурс находится и считывается вручную, но не находится через библиотеку.
Через библиотеку работает.
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166#define PRINT(A) Print(#A + " = " + (string)(A));
voidOnStart()
{
// Произвольные данные для примераstring Str[] = {"123", "Hello World!"};
double Num = 5;
MqlTick Tick = {0};
Tick.bid = 1.23456;
const RESOURCEDATA<uint> Resource("::ResoC"); // Ресурс для обмена данными
CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)// Заполняем контейнер разными данными
Container[0] = Str;
Container[1] = Num;
Container[2] = Tick;
// Распечатаем типы хранимых в контейнере данныхfor (int i = 0; i < Container.GetAmount(); i++)
PRINT(Container[i].GetType())
Resource = Container.Data; // Отправили данные на обмен
CONTAINER<uint> Container2; // Сюда будем получать данныеconst RESOURCEDATA<uint> Resource2(Resource.GetFullName()); // Ресурс для обмена данными
Resource2.Get(Container2.Data); // Получили данные// Получим данные в исходном видеstring Str2[];
Container2[0].Get(Str2); // Получили массивArrayPrint(Str2);
PRINT(Container2[1].Get<double>()) // Получили число
PRINT(Container2[2].Get<MqlTick>().bid) // Получили структуру
}
До чего-же очевидный момент, мимо которого я смотрел уже как 2 дня не замечая его в упор)
Спасибо Вам большое!
Все идеально работает, возможность обмениваться пользовательскими структурами между алгоритмами с помощью Вашей библиотеки - огромное подспорье для моей торговли, снимаю шляпу!
Not sure if this is an error on my part or it is the cause of a new compiler directive i am getting the following errors compiling the library.
I did download the individual files from the RU section.
cannot convert parameter 'uint[]' to 'ONTRADETRANSACTION&[]' ResourceData.mqh 23 21
int RESOURCEDATA<ONTRADETRANSACTION>::Get(ONTRADETRANSACTION&[]) const ResourceData.mqh 26 7
call resolves to 'int RESOURCEDATA<ONTRADETRANSACTION>::Get(ONTRADETRANSACTION&[]) const' instead of 'int RESOURCE::Get(uint&[]) const' due to new rules of method hiding ResourceData.mqh 23 17
see declaration of function 'RESOURCEDATA<ONTRADETRANSACTION>::Get' ResourceData.mqh 26 7
see declaration of function 'RESOURCE::Get' Resource.mqh 20 7
cannot convert parameter 'uint[]' to 'ONTRADETRANSACTION&[]' ResourceData.mqh 42 18
int RESOURCEDATA<ONTRADETRANSACTION>::Get(ONTRADETRANSACTION&[]) const ResourceData.mqh 26 7
call resolves to 'int RESOURCEDATA<ONTRADETRANSACTION>::Get(ONTRADETRANSACTION&[]) const' instead of 'int RESOURCE::Get(uint&[]) const' due to new rules of method hiding ResourceData.mqh 42 14
see declaration of function 'RESOURCEDATA<ONTRADETRANSACTION>::Get' ResourceData.mqh 26 7
see declaration of function 'RESOURCE::Get' Resource.mqh 20 7
wrong parameters count, 1 passed, but 3 requires TradeTransactions.mqh 72 34
ulong TRADETRANSACTIONS::Get(MqlTradeTransaction&,MqlTradeRequest&,MqlTradeResult&) TradeTransactions.mqh 48 9
call resolves to 'ulong TRADETRANSACTIONS::Get(MqlTradeTransaction&,MqlTradeRequest&,MqlTradeResult&)' instead of 'int RESOURCEDATA<ONTRADETRANSACTION>::Get(ONTRADETRANSACTION&[]) const' due to new rules of hiding method TradeTransactions.mqh 72 34
see declaration of function 'TRADETRANSACTIONS::Get' TradeTransactions.mqh 48 9
see declaration of function 'RESOURCEDATA<ONTRADETRANSACTION>::Get' ResourceData.mqh 26 7
In any case. To resolve the compiler issues change the following:
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Даже после внесения этого изменения ошибка не исчезла, извините.
Скачайте каждый файл отдельно от русской версии кодовой базы.
Здравствуйте,
Подскажите пожалуйста, застрял на одном моменте. Сделал 2 советника, один сохраняет данные, второй их считывает. У меня проблема с обнаружением ресурса.
Этот код сохраняет данные и из него я могу обратиться к ним и прочесть их:
#include "ResourceData.mqh" // https://www.mql5.com/ru/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;
}
А этот код считывает данные и каждый раз пишет, что ничего нет:
#include "ResourceData.mqh" // https://www.mql5.com/ru/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);
//---
}
Вроде все делаю по аналогии, но почему-то не отображается никакая информация из той, что записывал, ни массив string типа, ни единичный string который получаю из своей структуры
Вроде все делаю по аналогии, но почему-то не отображается никакая информация из той, что записывал, ни массив string типа, ни единичный string который получаю из своей структуры
Не запускал, но предполагаю, что дело в этом.
Попробуйте у себя так.
Не запускал, но предполагаю, что дело в этом.
Попробуйте у себя так.
Здравствуйте, спасибо, что написали
Сразу пробовал, тк об этом писалось здесь ранее. Перебрал варианты исправления как в имени для обращения, также поправил в "ResourceData.mqh". К сожалению не помогло. Пока не нашел причину
Создаю ресурс:
а - через библиотеку
б - вручную(ResourceCreate)
Обращаюсь к данным ресурса из другого советника с использованием одного и того-же имени ресурса:
а - через библиотеку
б - вручную(ResourceReadImage)
Итог:
Созданный через библиотеку ресурс не находится ни вручную ни через библиотеку
Созданный вручную ресурс находится и считывается вручную, но не находится через библиотеку.
Созданный через библиотеку ресурс не находится ни вручную ни через библиотеку
Созданный вручную ресурс находится и считывается вручную, но не находится через библиотеку.
Через библиотеку работает.
Почему Ваш исходный пример не работает - пока не знаю.
Почему Ваш исходный пример не работает - пока не знаю.
Если все остальное правильно написано, то это поможет.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: TradeTransactions
Alexander, 2025.09.15 21:09
Вы создавали объект на каждом входе в OnTimer и, соответственно, убивали его - на выходе. Поэтому ресурс жил микросекунды и не находился со стороны.
static
До чего-же очевидный момент, мимо которого я смотрел уже как 2 дня не замечая его в упор)
Спасибо Вам большое!
Все идеально работает, возможность обмениваться пользовательскими структурами между алгоритмами с помощью Вашей библиотеки - огромное подспорье для моей торговли, снимаю шляпу!
Not sure if this is an error on my part or it is the cause of a new compiler directive i am getting the following errors compiling the library.
I did download the individual files from the RU section.In any case. To resolve the compiler issues change the following:
In ResourceData.mqh:
Replace:
with:
and replace:
with:
In TradeTransaction.mqh:
replace:
with: