Ошибки, баги, вопросы - страница 3005

 

Рис №1

Заметил такое. Если при форвард тестировании данные форвард повторяются (одинаковы), то при просмотре Бэктест по всем трем вариантам будет показан только вариант (10384.88) первый.

Рис2

Данные по вариантам с результатам = 10435 или 10843 неизвестны (в отчетах всё по варианту отчета = 10384)??? 

 

 

Подскажите, кто знает, как правильно скопировать данные по указателям.

Нужно из одного объекта скопировать данные в другой. Потом начальный объект - удалить. Когда удаляешь первоначальный объект, то становиться недоступными данные в объекте-копии.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;        // создаем объект для текущих параметров
    pCur.id = 25;               // вносим текущие данные
    ArrCur.Add(pCur);           // помещаем в массив объектов
    
    CID* pPrev = ArrCur.At(0);  // копируем данные??? Указатель???
    ArrPrev.Add(pPrev);         // помещаем в массив объектов
    
    ArrCur.Clear();             // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_INVALID
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

}
 
Там указатель копирует
 
Aliaksandr Hryshyn:
Там указатель копирует
А каким образом можно скопировать данные? Ну, кроме как, поэлементно?
 
Vasiliy Pushkaryov:
А каким образом можно скопировать данные? Ну, кроме как, поэлементно?

Не знаю, насколько это правильно, но через дополнительный конструктор задача решилась. Может кому-то пригодится.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
           CID() {}
           CID(CID* pt) {this = pt;}
           
};


void OnStart()
{
  // -----------------------------------------------------------------
    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();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_DINAMYC
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

  ArrPrev.Clear();             // чистим массив
}
 
fxsaber:

В визуальном режиме тестера ChartScreenShot не работает правильно.

void OnTick()
{
  Print(ChartScreenShot(0, "Test.png", 100, 100)); // true, но файл нулевой длины
  
  ExpertRemove();
}

Здравствуйте ув. разработчики. Можно узнать, когда заработает ChartScreenShot() в тестере?

 

Подскажите, как в подобном советнике изменить его входные параметры (F7) или изменить значение глобальной переменной (F3)?

input int i = 0;

const bool Init = EventSetTimer(1);

void OnTimer()
{
  Alert("");
}

Даже снять с графика проблематично.

 
Добрый вечер у меня такой вопрос? Установил агент менеджер на продажу но в графе облако написано отключено и за весь день на шести процессорах не одного движения. В аккаунте процессоры отображаются. Это нормально?
 

Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).

И случайно обнаружил в логе такие записи:

При этом сам скрипт выполняется. Попробовал вставить в код такую строку:

{ DebugBreak(); Print( "DebugBreak" ); }

Строка "DebugBreak" печатается, но остановки не происходит

 
A100:

(правда непонятно почему запуск идет на новом графике, а не на текущем).

В редакторе Сервис->Настройки->Отладка/Профилирование
там задаётся на каком символе будет запускаться отладка, но все равно запуск будет на отдельном графике.
Если там символ не указан, то будет запускаться на самом первом(верхнем) символе из Обзора рынка.

У меня вообще точки останова через раз срабатывают. build 2875
выставляю точки, жму начало отладки на реальных данных, а он блым, и пролетел без остановок, закончив отладку.
Перезагружаю терминал с редактором, и тогда начинает видеть точки останова, до какого нибудь очередного запуска/остановки отладки, потом снова начинает пропускать.
Запуск отладки на исторических данных, вообще окно тестера вызывает, и так же точки останова пропускает, завершая отладку.
На исторических данных ещё не разу не остановился на точке, всё время пропускает завершая отладку.
А вот нафига тестер вызывается на исторических данных, и сохраненные параметры из него берутся, х.з. что это, так задумано или кривизна.