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

 
Denis Diakonov:

Подскажите пожалуйста!

Почему время сервера не обновляется по приходу новых тиков?

В момент запуска советника все срабатывает как надо, но дальше время то идёт, а в переменную новое значение текущей минуты не поступает.

Т.е. у меня советник работает в зависимости от числа полученного переменной int M = TimeMinute(TimeCurrent());

Собственно строка кода то из справочника и чёт не робит.

Например запустил в 12 минут - текущее время возвращаемое сервером соответствует времени в переменной, а дальше переменная так и остается на 12, хотя уже минут 15-20 на часах

TimeMinute() нету в MQL5.

Вопросы по MQL4 желательно задавать в соответствующей ветке по MetaTrader 4.

Если вам нужно кроссплатформенное решение, то используйте MqlDateTime.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Порядковый номер в году day_of_year в високосном году, начиная с марта, будет отличаться от порядкового номера соответствующего дня в невисокосном году.
 
Какое то сомнительное предупреждение:
void OnStart()
{
    for ( int i = 0, j; i < 10; i = j ) //(1) Warning: possible use of uninitialized variable 'j'
    {
        j = i+1;
    }
}

а так нормально:

void OnStart()
{
    for ( int i = 0, j; i < 10;       ) //(2) нормально
    {
        j = i+1;
                                i = j;
    }
}

а какая принципиальная разница?

 
A100:
Какое то сомнительное предупреждение:

а так нормально:

а какая принципиальная разница?

Правильное предупреждение. Переменная j не инициализирована перед первым её применением, когда переменной i присваивается значение j.

А во втором варианте переменной j присваивается значение i+1 и только потом i = j

Вот так должно быть без предупреждений, но не проверено…

void OnStart()
{
    for ( int i = 0, j = 0; i < 10; i = j )
    {
        j = i+1;
    }
}
 
Alexey Viktorov:

Правильное предупреждение.

для альтернативно одаренных - это идентичные циклы
 
TheXpert:
для альтернативно одаренных - это идентичные циклы

И что? Эта идентичность циклов позволяет использовать не идентифицированные переменные?

 
Alexey Viktorov:

И что? Эта идентичность циклов позволяет использовать не идентифицированные переменные?

Если циклы одинаковые, то и поведение компилятора должно быть одинаковым, а оно разное. В этом и заключается ошибка. Вы объяснили почему предупреждение есть в случае (1), тогда объясните почему его нет в случае (2) ? Что принципиально поменялось? А потом, если используется неинициализированная переменная, то почему конечный результат при выполнении правильный - там же случайное число должно в таком случае быть. 

Есть такая наука - логика. Если A и B одинаковые и А красного цвета, то В тоже должно быть красным, а не зеленым

 
A100:

Если циклы одинаковые, то и поведение компилятора должно быть одинаковым, а оно разное. В этом и заключается ошибка. Вы объяснили почему предупреждение есть в случае (1), тогда объясните почему его нет в случае (2) ? Что принципиально поменялось? А потом, если используется неинициализированная переменная, то почему конечный результат при выполнении правильный - там же случайное число должно в таком случае быть

Есть такая наука - логика. Если A и B одинаковые и А красного цвета, то В тоже должно быть красным, а не зеленым

Нет там случайного числа. Там ноль.
MQ и это фиксанули ))  

void OnStart()
{
   int val;
   
   Print(val);
   Print(IntegerToString(val));
}
 
Roman:

Нет там случайного числа. Там ноль.
MQ и это фиксанули ))  

Сначала проверить нужно - потом уже "нести пургу"

void OnStart()
{
        for ( int i = 0, j; i < 10; i++ )
        {
                Print( j );
                break;
        }
}

Результат: -2052256859


 
A100:

Сначала проверить нужно - потом уже "нести пургу"

Результат: -2052256859


void OnStart()
{
   for ( int i = 0, j; i < 10; i++ )
   {
      Print( j );                
   }
}
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0
2020.10.27 17:14:46.623 TestScript (NZDUSD,M1)  0

Возможно из за того, что у меня тестовый терминал установлен на VirtualBox
Так же, компилятор не предупреждает, что переменная не инициализирована.

А вот так предупреждает

void OnStart()
{
   for ( int i = 0, j; i < 10; i++ )
   {
      Print( IntegerToString(j) );                
   }
}
 
Roman:
Возможно из за того, что у меня тестовый терминал установлен на VirtualBox

У Вас случайное число 0, у меня 540016640

2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640
2020.10.27 17:24:25.244 0011 (EURUSD,H4)        540016640

но все равно это случайные числа

Причина обращения: