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

 
fxsaber:
Это мультивалютник сразу по сотне символов, где в каждом OnTimer анализируется тиковая история всех символов.


нормальный способ самоубийства)) 

при запуске в тестере все же тиковые данные переподготавливаются?! 1 месяц/тикер примерно 100МБ. если по всему обзору рынка,то..винт должен быть резиновый,а сколько времени это займет? 

а если вспомнить,что кэш тестерного агента очищается через 5 минут простоя агента,представляете? вы готовили-готовили данные час-два,отошли на 5 мин,и все,придется начинать заново.

 
kaus_bonus:

нормальный способ самоубийства)) 

Поэтому и вопросы. Если правильно понял, то в S#-инфраструктуре тестер справляется. Возможно, ошибаюсь.
 

Похоже, привык к MT5, т.к. совсем не помню, чтобы в MT4  в журнал "Эксперты" шли записи от выполнения OrderSend.

С какого MT4-билда такое самовольное обращение с логом? В MT5 только Print и подобные спец. действия пользователя (+ошибки исполнения и кнопка автоторговли) способны делать туда записи. Или в MT4 так было всегда?

 
fxsaber:

Нужно получить баровую/тиковую историю на несколько тысяч последних единиц сразу по всем символам в Обзоре рынка (несколько сотен). И обновлять ее реал-тайм.

На подобные скринеры архитектура MT5 оптимизирована? Будет ли новый вид программ способен без костылей тянуть такие задачи?

Что нужно, чтобы поднять все кэши из холодного состояния и сделать их актуальными?

Разогрев кэшей
#define _CS(A) ((!IsStopped()) && (A))
#define TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnStart()
{
  ulong FullCycle = 0;
  MqlTick Ticks[];
  
  while (_CS(true))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = SymbolsTotal(true) - 1; _CS(i >= 0); i--)
      Comment(TOSTRING(SymbolsTotal(true)) + TOSTRING(SymbolName(i, true)) +
              TOSTRING(i) + TOSTRING(CopyTicks(SymbolName(i, true), Ticks)) +
              TOSTRING(MQLInfoInteger(MQL_MEMORY_USED)) + TOSTRING(MQLInfoInteger(MQL_MEMORY_LIMIT)) +
              TOSTRING(FullCycle));
              
    FullCycle = GetMicrosecondCount() - StartTime;              
  }
}

По выполнению скрипта хорошо видно, что CopyTicks в скриптах не является асинхронной. MQL_MEMORY_USED врет.

И главное, что-то кэши спотыкаются (Metaquotes-Demo)

Просьба запустить у себя с количеством символом в Обзоре рынка не меньше сотни.

При чем проблема с кэшами только на некоторых символах заметна. Остальные - норм.

Похоже, затык в CopyTicks на таких символах

 
Konstantin:

1. Когда будет описание union в документации?

2. Это замена простым структурам?

3. будут ли поддерживать union приведение типа как описано для структур в документации?

1. Добавлено Объединение (union)

2. Не совсем - это возможность получать разное представление данных

3. Нет

 

MT5 1598

void OnStart()
{
  string Array[];
  
  ArrayInitialize(Array, "");
}

Лог компилятора

'ArrayInitialize' - no one of the overloads can be applied to the function call Test2.mq5       5       3
could be one of 8 function(s)   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
1 error(s), 0 warning(s)                2       1

Сигнатуры функций будут видны в логе?

 

Повторный тест на скорость поднятия кеша чартов CopyXXX функциями в последнем релизе 1596 по сравнению с прошлым обсуждением: https://www.mql5.com/ru/forum/1111/page1871#comment_4867939

Описание условий
 MetaTrader 4 build 1065
MetaTrader 5 x64 build 1580
build 1596
Оборудование и операционка
Windows 10 Pro x64, Intel Xeon E5-2690 v3 @ 2.60GHz, RAM: 32 Gb, SSD Disk
Торговый сервер
MetaQuotes-Demo
MetaQuotes-Demo
Лимит баров на чартах в настройках
10 000
10 000
Лимит баров в истории в настройках 10 000 000
понятия об ограничении нет
Фактическое количество баров на диске у EURUSD, M1
 3.382 миллиона
6.538 миллиона
Проверяемый символ и период
EURUSD, M1
Открытые графики
только GBPUSD, M1, на него же бросается скрипт
Результаты холодные, после старта терминала
#0 pass, 1000 records in 680 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 113497 msc
#1 pass, 1000 records in 3 msc
#2 pass, 1000 records in 3 msc
#0 pass, 1000 records in 18288 msc
#1 pass, 1000 records in 7 msc
#2 pass, 1000 records in 2 msc
Результаты теплые, второй запуск сразу после первого
#0 pass, 1000 records in 13 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 14 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 13 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc

Тестовые скрипты приложены в исходном комментарии.

Время подъема с диска чарта (на диске 6.5 млн баров, поднималось 10 000 баров и запрашивалась 1000 последних баров, холодный старт) удалось снизить с 113 до 18 миллисекунд. Последующие запросы уже исполнялись за 2 микросекунды.
 
Renat Fatkhullin:

Повторный тест на скорость поднятия кеша чартов CopyXXX функциями в последнем релизе 1596 по сравнению с прошлым обсуждением: https://www.mql5.com/ru/forum/1111/page1871#comment_4867939

Описание условий
 MetaTrader 4 build 1065
MetaTrader 5 x64 build 1580
build 1596
Оборудование и операционка
Windows 10 Pro x64, Intel Xeon E5-2690 v3 @ 2.60GHz, RAM: 32 Gb, SSD Disk
Торговый сервер
MetaQuotes-Demo
MetaQuotes-Demo
Лимит баров на чартах в настройках
10 000
10 000
Лимит баров в истории в настройках 10 000 000
понятия об ограничении нет
Фактическое количество баров на диске у EURUSD, M1
 3.382 миллиона
6.538 миллиона
Проверяемый символ и период
EURUSD, M1
Открытые графики
только GBPUSD, M1, на него же бросается скрипт
Результаты холодные, после старта терминала
Результаты теплые, второй запуск сразу после первого

Тестовые скрипты приложены в исходном комментарии.

Время подъема с диска чарта (на диске 6.5 млн баров, поднималось 10 000 баров и запрашивалась 1000 последних баров, холодный старт) удалось снизить с 113 до 18 миллисекунд. Последующие запросы уже исполнялись за 2 микросекунды.

Молодцы!
 
Renat Fatkhullin:

Повторный тест на скорость поднятия кеша чартов CopyXXX функциями в последнем релизе 1596 по сравнению с прошлым обсуждением: https://www.mql5.com/ru/forum/1111/page1871#comment_4867939

Лучше переделать на SymbolsTotal.
 
fxsaber:
Лучше переделать на SymbolsTotal.

CopyTicks не асинхронная в скриптах и экспертах. Да и вообще нельзя в данном случае строго об асинхронности этих функций говорить. В индикаторах CopyXXX функции работают в режиме "выдать что есть сразу без задержек, а параллельно выставить режим фоновой подкачки".

MQL_MEMORY_USED не врет, так как показывает 1 мб использованной памяти. В самой программе из массивов данных есть только MqlTick Ticks[] на 2000 элементов, что дает 52 байта * 2000 = ~100 кб данных. Плюс остальные небольшие данные суммарно дают около мегабайта. Ну и округление до мегабайта вверх не надо забывать.

Поднятые кеши принадлежат терминалу, а не MQL5 программе.