Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Даже после внесения этого изменения ошибка не исчезла, извините.
Скачайте каждый файл отдельно от русской версии кодовой базы.
Здравствуйте,
Подскажите пожалуйста, застрял на одном моменте. Сделал 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 дня не замечая его в упор)
Спасибо Вам большое!
Все идеально работает, возможность обмениваться пользовательскими структурами между алгоритмами с помощью Вашей библиотеки - огромное подспорье для моей торговли, снимаю шляпу!