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

 
A100 #:
Критическая ошибка при выполнении:

Результат: зацикливание... а почему в С++ все работает без ошибки?

Потому, что C++ генерирует конструктор копирования по умолчанию, а MQL5 нет (пока/до сих пор).

Т.к. в вашем коде отсуствует конструктор копирования, то для возвращаемого объекта из "оператора копирования", вызывается: "конструктор по умолчанию" + "оператор копирования".

Получается рекурсия:
"оператор копирования" = "конструктор по умолчанию" + "оператор копирования".

 

Спасибо всем, за сообщение о неработающем Comment для Windows Server

Проблема не в ОС, а в 49.7 днях непрерывной работы (кто знает тот поймёт).

 
Ilyas #:

Спасибо всем, за сообщение о неработающем Comment для Windows Server

Проблема не в ОС, а в 49.7 днях непрерывной работы (кто знает тот поймёт).

И это так же по этой причине не работает?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 4230: больше встроенных приложений и расширение поддержки ONNX

Aleksey Vyazmikin, 2024.03.10 13:06

2024.03.09 20:35:49.244 Terminal        MetaTrader 5 x64 build 4231 started for MetaQuotes Software Corp.
2024.03.09 20:35:49.244 Terminal        Windows 7 Service Pack 1 build 7601, 8 x AMD FX-8350 Eight-Core, AVX, 14 / 31 Gb memory, 178 / 1794 Gb disk, admin, GMT+3

Когда заработает этот код:

//+------------------------------------------------------------------+
//|                                                          Bat.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Graphics\Graphic.mqh>
#define RESULT_OR_NAN(x,expression) ((x==0)?(double)"nan":expression)
//--- Functions
double BlueFunction(double x)
  {
   return(RESULT_OR_NAN((fabs(x)-1) *(fabs(x)-3),2*sqrt(-fabs(fabs(x)-1)*fabs(3-fabs(x))/
   ((fabs(x)-1)*(3-fabs(x))))*(1+fabs(fabs(x)-3)/(fabs(x)-3))*sqrt(1-pow(x/7,2))+(5+0.97*
   (fabs(x-.5)+fabs(x+.5))-3*(fabs(x-.75)+fabs(x+.75)))*(1+fabs(1-fabs(x))/(1-fabs(x)))));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double RedFunction(double x)
  {
   return(RESULT_OR_NAN(fabs(x)-4,(-3*sqrt(1-pow(x/7,2))*sqrt(fabs(fabs(x)-4)/(fabs(x)-4)))));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double OrangeFunction(double x)
  {
   return(fabs(x/2)-0.0913722*(x*x)-3+sqrt(1-pow(fabs(fabs(x)-2)-1,2)));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GreenFunction(double x)
  {
   return(RESULT_OR_NAN(fabs(x)-1,(2.71052+(1.5-.5*fabs(x))-1.35526*sqrt(4-pow(fabs(x)-1,2)))*
   sqrt(fabs(fabs(x)-1)/(fabs(x)-1))+0.9));
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double from=-7;
   double to=7;
   double step=0.01;
   CGraphic graphic;
   graphic.Create(0,"G",0,30,30,780,380);
//--- colors
   CColorGenerator generator;
   uint blue= generator.Next();
   uint red = generator.Next();
   uint orange=generator.Next();
   uint green=generator.Next();
//--- plot all curves
   graphic.CurveAdd(RedFunction,from,to,step,red,CURVE_LINES,"Red");
   graphic.CurveAdd(OrangeFunction,from,to,step,orange,CURVE_LINES,"Orange");
   graphic.CurveAdd(BlueFunction,from,to,step,blue,CURVE_LINES,"Blue");
   graphic.CurveAdd(GreenFunction,from,to,step,green,CURVE_LINES,"Green");
   graphic.CurvePlotAll();
   graphic.Update();  
  }
//+------------------------------------------------------------------+

На экране пустота - код из статьи MQ.


 
Ilyas #:

Проблема не в ОС, а в 49.7 днях непрерывной работы (кто знает тот поймёт).

https://www.mql5.com/ru/docs/common/gettickcount

Счетчик ограничен разрешающей способностью системного таймера. Так как время хранится как беззнаковое целое, то он переполняется каждые 49.7 дней при непрерывной работе компьютера.
 
Ilyas #:

Потому, что C++ генерирует конструктор копирования по умолчанию, а MQL5 нет (пока/до сих пор).

Т.к. в вашем коде отсуствует конструктор копирования, то для возвращаемого объекта из "оператора копирования", вызывается: "конструктор по умолчанию" + "оператор копирования".

Получается рекурсия:
"оператор копирования" = "конструктор по умолчанию" + "оператор копирования".

А почему тогда для struct компилятор не сообщает, что отсутствует конструктор копирования,

а для class - есть такое сообщение:

class A {
public:
    A operator=(const A&) { return this; } //Errror: object of 'class A' cannot be returned, copy constructor 'A::A(const A &)' not found
};
void OnStart()
{
    A a1, a2 = a1;
}
 

Выпустили версию 4232 с исправлением вывода комментов на компьютерах, работающих более 49 дней подряд.

Сегодня билд 4232 выложим в релиз.

 
MetaQuotes #:

Выпустили версию 4232 с исправлением вывода комментов на компьютерах, работающих более 49 дней подряд.

Сегодня билд 4232 выложим в релиз.

Благодарю, ошибки 4201 больше не наблюдаю...

 
Nikolai Semko #:
Не нашел на форуме реализации закачки истории символа через таймер с контролем текущего состояния в процентах(ведь объем закачки при макс. баров = Unlimited, достигает сотни Мб). Может кто подскажет, если плохо искал?
Не для себя (спрашивают в англоязычной части форума), т.к. у меня есть рабочая реализация подобного, но она интегрирована в сложный класс формирования внутренних данных для моих специфических задач. А сделать это универсальным отдельным классом для CodeBase пока руки не дошли. 

В пятерке проще всего открыть чарт с месячным таймфреймом, и он все сам закачает. 

 
Andrey Khatimlianskii #:

В пятерке проще всего открыть чарт с месячным таймфреймом, и он все сам закачает. 

Речь о том, чтобы программно контролировать процесс закачки с получением события полной 100% загрузки данных.
 
Vladimir Pastushak #:

Благодарю, ошибки 4201 больше не наблюдаю...

Подтверждаю.