Заметил такое. Если при форвард тестировании данные форвард повторяются (одинаковы), то при просмотре Бэктест по всем трем вариантам будет показан только вариант (10384.88) первый.
Данные по вариантам с результатам = 10435 или 10843 неизвестны (в отчетах всё по варианту отчета = 10384)???
Подскажите, кто знает, как правильно скопировать данные по указателям.
Нужно из одного объекта скопировать данные в другой. Потом начальный объект - удалить. Когда удаляешь первоначальный объект, то становиться недоступными данные в объекте-копии.
#include <Arrays\ArrayObj.mqh>
CArrayObj ArrCur; // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev; // массив с объектами, каждый объект содержит структуру с полями ордеров и его idclass CID : public CObject
{
public: int id;
};
voidOnStart()
{
// -----------------------------------------------------------------
CID* pCur = new CID; // создаем объект для текущих параметров
pCur.id = 25; // вносим текущие данные
ArrCur.Add(pCur); // помещаем в массив объектовCID* pPrev = ArrCur.At(0); // копируем данные??? Указатель???
ArrPrev.Add(pPrev); // помещаем в массив объектов
ArrCur.Clear(); // чистим текущий массив// -----------------------------------------------------------------// --- для вывода в журналint sizeCur = ArrCur.Total(); // размер = 0int sizePrev = ArrPrev.Total(); // размер = 1ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0)); // POINTER_INVALIDENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0)); // POINTER_INVALIDPrint(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));
}
Vasiliy Pushkaryov: А каким образом можно скопировать данные? Ну, кроме как, поэлементно?
Не знаю, насколько это правильно, но через дополнительный конструктор задача решилась. Может кому-то пригодится.
#include <Arrays\ArrayObj.mqh>
CArrayObj ArrCur; // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev; // массив с объектами, каждый объект содержит структуру с полями ордеров и его idclass CID : public CObject
{
public: int id;
CID() {}
CID(CID* pt) {this = pt;}
};
voidOnStart()
{
// -----------------------------------------------------------------
CID* pCur = new CID; // создаем объект для текущих параметров
pCur.id = 25; // вносим текущие данные
ArrCur.Add(pCur); // помещаем в массив объектов CID* pTemp = ArrCur.At(0); // вытягиваем объект по указателю
CID* pPrev = new CID(pTemp); // в дин.объект копируем в конструкторе данные с предыд.указателя
ArrPrev.Add(pPrev); // помещаем в массив объектов
ArrCur.Clear(); // чистим текущий массив// -----------------------------------------------------------------// --- для вывода в журналint sizeCur = ArrCur.Total(); // размер = 0int sizePrev = ArrPrev.Total(); // размер = 1ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0)); // POINTER_INVALIDENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0)); // POINTER_DINAMYCPrint(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));
ArrPrev.Clear(); // чистим массив
}
Добрый вечер у меня такой вопрос? Установил агент менеджер на продажу но в графе облако написано отключено и за весь день на шести процессорах не одного движения. В аккаунте процессоры отображаются. Это нормально?
Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).
И случайно обнаружил в логе такие записи:
При этом сам скрипт выполняется. Попробовал вставить в код такую строку:
{ DebugBreak(); Print( "DebugBreak" ); }
Строка "DebugBreak" печатается, но остановки не происходит
(правда непонятно почему запуск идет на новом графике, а не на текущем).
В редакторе Сервис->Настройки->Отладка/Профилирование там задаётся на каком символе будет запускаться отладка, но все равно запуск будет на отдельном графике. Если там символ не указан, то будет запускаться на самом первом(верхнем) символе из Обзора рынка.
У меня вообще точки останова через раз срабатывают. build 2875 выставляю точки, жму начало отладки на реальных данных, а он блым, и пролетел без остановок, закончив отладку. Перезагружаю терминал с редактором, и тогда начинает видеть точки останова, до какого нибудь очередного запуска/остановки отладки, потом снова начинает пропускать. Запуск отладки на исторических данных, вообще окно тестера вызывает, и так же точки останова пропускает, завершая отладку. На исторических данных ещё не разу не остановился на точке, всё время пропускает завершая отладку. А вот нафига тестер вызывается на исторических данных, и сохраненные параметры из него берутся, х.з. что это, так задумано или кривизна.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Заметил такое. Если при форвард тестировании данные форвард повторяются (одинаковы), то при просмотре Бэктест по всем трем вариантам будет показан только вариант (10384.88) первый.
Данные по вариантам с результатам = 10435 или 10843 неизвестны (в отчетах всё по варианту отчета = 10384)???
Подскажите, кто знает, как правильно скопировать данные по указателям.
Нужно из одного объекта скопировать данные в другой. Потом начальный объект - удалить. Когда удаляешь первоначальный объект, то становиться недоступными данные в объекте-копии.
Там указатель копирует
А каким образом можно скопировать данные? Ну, кроме как, поэлементно?
Не знаю, насколько это правильно, но через дополнительный конструктор задача решилась. Может кому-то пригодится.
В визуальном режиме тестера ChartScreenShot не работает правильно.
Здравствуйте ув. разработчики. Можно узнать, когда заработает ChartScreenShot() в тестере?
Подскажите, как в подобном советнике изменить его входные параметры (F7) или изменить значение глобальной переменной (F3)?
Даже снять с графика проблематично.
Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).
И случайно обнаружил в логе такие записи:
При этом сам скрипт выполняется. Попробовал вставить в код такую строку:
{ DebugBreak(); Print( "DebugBreak" ); }Строка "DebugBreak" печатается, но остановки не происходит
(правда непонятно почему запуск идет на новом графике, а не на текущем).
В редакторе Сервис->Настройки->Отладка/Профилирование
там задаётся на каком символе будет запускаться отладка, но все равно запуск будет на отдельном графике.
Если там символ не указан, то будет запускаться на самом первом(верхнем) символе из Обзора рынка.
У меня вообще точки останова через раз срабатывают. build 2875
выставляю точки, жму начало отладки на реальных данных, а он блым, и пролетел без остановок, закончив отладку.
Перезагружаю терминал с редактором, и тогда начинает видеть точки останова, до какого нибудь очередного запуска/остановки отладки, потом снова начинает пропускать.
Запуск отладки на исторических данных, вообще окно тестера вызывает, и так же точки останова пропускает, завершая отладку.
На исторических данных ещё не разу не остановился на точке, всё время пропускает завершая отладку.
А вот нафига тестер вызывается на исторических данных, и сохраненные параметры из него берутся, х.з. что это, так задумано или кривизна.