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

(b3566) Компилятор разрешает выполнять статические функции приватного класса A::Inner, хотя вроде бы не должен. Это не баг?

class A
  {
   class Inner
     {
     public:
      static void    sf() {Print(__FUNCSIG__);}
     };
  };

void OnStart()
  {
   //так нельзя - ошибка компилятора
   A::Inner ai;   //cannot access to private class 'Inner' declared in class 'A'
   
   // а так можно - почему?
   A::Inner::sf();
  }
Функция iBarShift работает не корректно
datetime starting_point = 0;

//--- код ниже располагается в блоке OnCalculate
if( starting_point == 0 )
     {
      if( _Period >= PERIOD_D1 )
       starting_point = time[ rates_total - 2 ];
      else
        {
         MqlDateTime time1, time2;
         for( int i = rates_total - 1; i >= 0; i-- )
           {
            TimeToStruct( time[i], time1 );
            TimeToStruct( time[ i - 1 ], time2 );
            if( time1.day != time2.day )
              {
               starting_point = time[i];
               break;
              };
           };
        };
     } else
   Alert( iBarShift( _Symbol, PERIOD_CURRENT, starting_point, true ) );
   
Alert( starting_point );


и вот что по итогу

* тот же результат будет если четвёртый параметр будет false - просто я тестировал, и забыл оставить его по умолчанию
Alexandr Sokolov #:
Функция iBarShift работает не корректно


и вот что по итогу

* тот же результат будет если четвёртый параметр будет false - просто я тестировал, и забыл оставить его по умолчанию

https://www.mql5.com/ru/forum/438066#comment_43923901
пока игнорят.
костыльное решение, пока не исправят - использовать мою функцию fBarShift или  wBarShift (работает быстрее штатной iBarShift в несколько раз, но требует библиотеки iCanvas_CB.mqh)

Файлы:
iBars.mqh  8 kb
iCanvas_CB.mqh  57 kb
Nikolai Semko #:

https://www.mql5.com/ru/forum/438066#comment_43923901
пока игнорят.
костыльное решение, пока не исправят - использовать мою функцию fBarShift или  wBarShift (работает быстрее штатной iBarShift в несколько раз, но требует библиотеки iCanvas_CB.mqh)

Благодарю

Я бы и сам сделал бы такую же функцию по функционалу. По существу там можно обойтись формулой - разницу между текущим и запрашиваемым временем делить на временной шаг соответствующего таймфрейма, но есть нюанс что нужно "сместить индексацию" с учётом не торговых дней и часов. Это конечно же можно реализовать, но мне лень и я ищу этот индекс простым перебором цикла
Alexandr Sokolov #:
Благодарю

Я бы и сам сделал бы такую же функцию по функционалу. По существу там можно обойтись формулой - разницу между текущим и запрашиваемым временем делить на временной шаг соответствующего таймфрейма, но есть нюанс что нужно "сместить индексацию" с учётом не торговых дней и часов. Это конечно же можно реализовать, но мне лень и я ищу этот индекс простым перебором цикла
Это реализовано в wBarShift, которая внутри iCanvas, но эта библиотека делает весьма дорогое обновление данных при наступлении события ChartChange, в том числе обновляет внутренний массив времени открытия баров текущего ТФ и символа. Именно поэтому эта функция значительно превосходит в производительности штатную iBarShift. Это оправданно только если активно использовать пользовательскую графику.

За что отвечает выделенный пункт меню на этой картинке?


В Документации (online/offline) про это пусто.

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

Новая версия платформы MetaTrader 5 build 3540: 2FA/TOTP аутентификация и улучшенный Обзор рынка в веб-терминале

MetaQuotes, 2022.12.09 10:16

MQL5: Добавлены значения TERMINAL_CPU_NAME и TERMINAL_OS_VERSION в перечисление ENUM_TERMINAL_INFO_STRING. Они позволяют получить наименование процессора и операционной системы пользователя.
void OnStart()
  {
   string cpu,os;
//---
   cpu=TerminalInfoString(TERMINAL_CPU_NAME);
   os=TerminalInfoString(TERMINAL_OS_VERSION);
   PrintFormat("CPU: %s, OS: %s",cpu,os);
  }
Результат:
CPU: Intel Xeon  E5-2630 v4 @ 2.20GHz, OS: Windows 10 build 19045
fxsaber #:
В Документации (online/offline) про это пусто.

Было бы не плохо получать MAC или уникальный номер процессора.

Vladimir Pastushak #:

Было бы не плохо получать MAC или уникальный номер процессора.

MAC можно сменить за 7 секунд школьной программой. Его учёт имеет мало смыла, также как и SN-жёсткого диска.

Ontimer()

В тестере и при оптимизации я так понял не работает?