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

 
Почему EX5 такого кода
void OnStart() {}

весит 5 Кб?

 
fxsaber:
Почему EX5 такого кода

весит 5 Кб?

Защита от декомпила?
 
fxsaber:
Локализовал баг на Metaquotes-Demo

Скрипт уходит в глубокие размышления.

Воспроизводится.

Наверное, потому, что на тиковом графике этого инструмента "ожидание обновления".

При остановке скрипта положенные -1 в журнал выводятся, т.е. он не висит наглухо, а ждет ответа терминала.

 
fxsaber:
Локализовал баг на Metaquotes-Demo

Скрипт уходит в глубокие размышления.

Все правильно работает (согласно документации):
В экспертах и скриптах функция CopyTicks() может дожидаться результата до 45 секунд: В отличие от индикатора каждый эксперт и скрипт работает в собственном потоке, и поэтому может дожидаться окончания синхронизации до 45 секунд. Если за это время тики так и не будут синхронизированы в необходимом объёме, то CopyTicks() по таймауту вернёт только имеющиеся в наличии тики, при этом синхронизация продолжится.
2017.05.11 14:41:31.154 Scripts script test_bug (EURUSD,M1) loaded successfully
2017.05.11 14:42:14.742 Scripts script test_bug (EURUSD,M1) removed

 

Долгое ожидание копитиков исправим - это проявляется на мертвых символах, у которых давным давно нет тиков.

Будет все мгновенно отрабатывать

 
Renat Fatkhullin:

Долгое ожидание копитиков исправим - это проявляется на мертвых символах, у которых давным давно нет тиков.

Будет все мгновенно отрабатывать

Какие временные издержки надо считать за норму?

Проверил SymbolInfoTick (96 символов)

#define _CS(A) ((!IsStopped()) && (A))
#define TOSTRING(A) #A + " = " + (string)(A)

void OnStart()
{
  ulong MaxInterval = 0;
  MqlTick Tick;
  
  while (_CS(true))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = SymbolsTotal(true) - 1; _CS(i >= 0); i--)
      SymbolInfoTick(SymbolName(i, true), Tick);

    const ulong Interval = GetMicrosecondCount() - StartTime;              
    
    if (Interval > MaxInterval)
    {
      MaxInterval = Interval;
      
      Print(TOSTRING(MaxInterval));
    }
  }
}

Получил

MaxInterval = 7631

Норм?

 
fxsaber:

Какие временные издержки надо считать за норму?

Проверил SymbolInfoTick (96 символов)

Получил

Норм?

45 секунд на каждый мертвый инструмент.
 
Andrey Khatimlianskii:
45 секунд на каждый мертвый инструмент.
Интересуют только живые. Один за другим 100 штук.
 

Это вообще нормально?

На разные ситуации возвращается одинаковое значение.

Понимаю, что нужно проверять, но всякое бывает...

позиции

распечатка результата


Файлы:
posi.mq5  2 kb
 
Alexandr Bryzgalov:

Это вообще нормально?

На разные ситуации возвращается одинаковое значение.

Понимаю, что нужно проверять, но всякое бывает...

позиции

распечатка результата



И в чём вопрос?

Где видно, что под номером "i" находится позиция с тикетом таким-то, по символу такому-то? В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.


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