От чего зависит скорость подгрузки графиков?

 

Написал скрипт, который через систему

for (int x=0; x<23; x++)

{

for (int y=0; y<9; y++)

{

//Загружаем котировки по функции aSymbol(x) и таймфрейму tf(y) 

}  

 У котировки грузятся очень долго, неимоверно долго. Это нормально, или, возможно, есть какой-то более оптимальный код для таких задач? Просто я не понимаю, как еще можно пройтись по всем необходимым валютным парам и таймфреймам на каждой из них.
Если же я пробую в советнике использовать аналогичный прием, работая с данными индикатора

for (int x=0; x<23; x++)

{

for (int y=0; y<9; y++)

{

//записываем в массив (индикаторный буфер) данные по индикатору RSI с aSymbol(x) и таймфрейму tf(y)

 То первый прогон по "иксу" идет нормально, ошибок не выдает, но после месячного таймфрейма на первой паре терминал долго думает и выдает мне ошибку 4806, мол, извини, я не могу найти данные индикатора. Как я понял, это происходит из-за того, что не успевают обработаться все графики и таймфреймы, типа терминал не успел подгрузить данные и советнику не с чего брать значения. Так ли это? И если так - то как это исправить?

 
Эдуард Климуш:

Написал скрипт, который через систему

   for(int x=0; x<23; x++)
     {
      for(int y=0; y<9; y++)
        {
         //Загружаем котировки по функции aSymbol(x) и таймфрейму tf(y)
        }
     }

 У котировки грузятся очень долго, неимоверно долго. Это нормально, или, возможно, есть какой-то более оптимальный код для таких задач? Просто я не понимаю, как еще можно пройтись по всем необходимым валютным парам и таймфреймам на каждой из них.

Не обязательно ждать подгрузки.

Сначала нужно, обязательно, добавить нужные символы (или проверить наличие) символов в окне "Обзор рынка". Потом пробежаться (первый раз вообще без проверки результата) по всем символам и таймфреймам при помощи любой функции CopyXXXX - тем самым будет:

...Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута, но загрузка истории будет продолжаться, и при следующем аналогичном запросе функция вернет уже больше данных...

Затем повторно пройдитесь по символам и таймфреймам при помощи CopyXXXX, но только в этот раз контролируйте количество запрошенного и код возврата ошибки.

 

Ваш вопрос о:

  1. почему история долго грузится первый раз с серверов брокеров на локальную машину? или
  2. почему ранее загруженная история с диска медленно(дайте время в сек) поднимается в память и отдается в расчет каждый раз?
 
Renat Fatkhullin:

Ваш вопрос о:

  1. почему история долго грузится первый раз с серверов брокеров на локальную машину? или
  2. почему ранее загруженная история с диска медленно(дайте время в сек) поднимается в память и отдается в расчет каждый раз?
Интересуют оба вопроса - но больше второй - почему, когда я уже скриптом накачал несколько Гбайт данных, они находятся у меня в /адрес сервера/название символа, а советник все равно не может их считать/считывает медленно (м1-д1 проходит быстро, на w1 и mn1 - по нескольку секунд (иногда - десятков секунд висит)
 
Эдуард Климуш:
Интересуют оба вопроса - но больше второй - почему, когда я уже скриптом накачал несколько Гбайт данных, они находятся у меня в /адрес сервера/название символа, а советник все равно не может их считать/считывает медленно (м1-д1 проходит быстро, на w1 и mn1 - по нескольку секунд (иногда - десятков секунд висит)

Если второй, то приведите логи и дополнительные данные:

  1. первые две строки старта приложения, чтобы была понятна точная конфигурация компьютера
  2. логи начала и конца загрузок вашего цикла, чтобы было точно видно сколько времени грузится каждый объект. соответственно, надо добавить распринтовку в начале и конце загрузки
  3. указание объема баров на графиках и глубину поднимаемых данных (с какой даты)

Ответы на эти вопросы мгновенно покажут причины.

 
Renat Fatkhullin:

Если второй, то приведите логи и дополнительные данные:

  1. первые две строки старта приложения, чтобы была понятна точная конфигурация компьютера
  2. логи начала и конца загрузок вашего цикла, чтобы было точно видно сколько времени грузится каждый объект. соответственно, надо добавить распринтовку в начале и конце загрузки
  3. указание объема баров на графиках и глубину поднимаемых данных (с какой даты)

Ответы на эти вопросы мгновенно покажут причины.

2016.12.29 05:43:21.222 Terminal Alpari MT5 x64 build 1495 started (Alpari International Limited)

2016.12.29 05:43:21.314 Terminal Windows Server 2012 R2 Standard (x64 based PC), IE 11.00, RDP, UAC, Intel Xeon  E5-2620 0 @ 2.00GHz, RAM: 326 / 6141 Mb, HDD: 6727 / 19950 Mb, GMT-08:00

P.S. это удаленка - вчера пробовал на домашнем компьютере с core i7 + 8Гбайт оперативки - плюс минус, то же самое (это если вопрос будет, что слишком слабая машина)

Последовал совету Владимира, сейчас скину дату первого и последнего забора данных (беру по 100 баров последних) - пока жду, когда прогрузится все

К слову, эта проблема появилась где-то два дня назад - до этого все было отлично (работало как часы, за 30 секунд успевали подгрузиться на веб-сервис 23 пары по всем тф с альпаришного мт5 и 32 акции по всем тф с инсты) 

 

Даже без остальных данных:

  1. Памяти свободной мало - 326 мб свободно из  6141 мб означает, что кто-то другой отъел всю память. Сколько терминалов на компьютере?
  2. Это однозначно сурово урезанная виртуалка (даже диск на 20 гб). Сколько там ядер доступно? Диски HDD, а не SSD?

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

Ну а "два дня назад работало" означает, что хост нагрузили и ваша виртуалка оказалась в стесненных условиях.  Даже поднять 1 гб данных чартов (исходные данные - это минутки) на дешевом VPS - это часто не десятки секунд, а до пары минут. Если при этом проявляется недостаток оперативной памяти, то в работу включается своп и тогда все вообще умирает. Ссылка на домашний компьютер недостоверна, так как не были представлены ни логи с виртуалки, ни с домашнего компьютера.

Не забывайте, что вы кроме подъема кучи данных создаете 207 копий индикаторов.


Это к слову(может не про этот случай, ибо данных мало) "я беру VPS за 5 долларов, ставлю туда 5-10 терминалов и все ок!". Нисколько не ок. Люди просто даже не понимают, какие дикие задержки они имеют на дисках, памяти, сети, графике и цпу. На ровном месте у них латенси прыгает до сотен миллисекунд на простых операциях, которые в обычных условиях занимают меньше миллисекунды.

Пишу это, так как практически за каждым вопросом о производительности стоит VPS или мизер ресурсов, о которых молчит автор. Это выясняется позже.

 
Renat Fatkhullin:

Даже без остальных данных:

  1. Памяти свободной мало - 326 мб свободно из  6141 мб означает, что кто-то другой отъел всю память. Сколько терминалов на компьютере?
  2. Это однозначно сурово урезанная виртуалка (даже диск на 20 гб). Сколько там ядер доступно? Диски HDD, а не SSD?

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

Ну а "два дня назад работало" означает, что хост нагрузили и ваша виртуалка оказалась в стесненных условиях.  Даже поднять 1 гб данных чартов (исходные данные - это минутки) на дешевом VPS - это часто не десятки секунд, а до пары минут. Если при этом проявляется недостаток оперативной памяти, то в работу включается своп и тогда все вообще умирает. Ссылка на домашний компьютер недостоверна, так как не были представлены ни логи с виртуалки, ни с домашнего компьютера.

Не забывайте, что вы кроме подъема кучи данных создаете 207 копий индикаторов.


Это к слову(может не про этот случай, ибо данных мало) "я беру VPS за 5 долларов, ставлю туда 5-10 терминалов и все ок!". Нисколько не ок. Люди просто даже не понимают, какие дикие задержки они имеют на дисках, памяти, сети, графике и цпу. На ровном месте у них латенси прыгает до сотен миллисекунд на простых операциях, которые в обычных условиях занимают меньше миллисекунды.

Пишу это, так как практически за каждым вопросом о производительности стоит VPS или мизер ресурсов, о которых молчит автор. Это выясняется позже.

Т.е. если я приведу логи с домашнего компьютера, на котором достаточно памяти, на котором достаточно всего, одним словом, и будут похожие результаты - то мы продолжим эту дискуссию?
 
Эдуард Климуш:
Т.е. если я приведу логи с домашнего компьютера, на котором достаточно памяти, на котором достаточно всего, одним словом, и будут похожие результаты - то мы продолжим эту дискуссию?

Когда приведете все полные ответы для двух компьютеров из комментария 4.

Но вы умудрились даже не ответить на проквотированный вами текст с вопросами. При таком уровне внимательности я сомневаюсь в целесообразности моего участия.

 
Renat Fatkhullin:

Если второй, то приведите логи и дополнительные данные:

  1. первые две строки старта приложения, чтобы была понятна точная конфигурация компьютера
  2. логи начала и конца загрузок вашего цикла, чтобы было точно видно сколько времени грузится каждый объект. соответственно, надо добавить распринтовку в начале и конце загрузки
  3. указание объема баров на графиках и глубину поднимаемых данных (с какой даты)

Ответы на эти вопросы мгновенно покажут причины.

1. 2016.12.29 06:19:36.675 Terminal Alpari MT5 x64 build 1495 started (Alpari International Limited)

2016.12.29 06:19:36.704 Terminal Windows Server 2012 R2 Standard (x64 based PC), IE 11.00, RDP, UAC, Intel Xeon  E5-2620 0 @ 2.00GHz, RAM: 4397 / 6141 Mb, HDD: 6535 / 19950 Mb, GMT-08:00

2. 2016.12.29 06:23:33.077 BWSignal_Alpari_Final (AUDCAD,H1) EURUSD MN1 20 bars have been copied //Это первый символ и таймфрейм

2016.12.29 06:26:08.322 BWSignal_Alpari_Final (AUDCAD,H1) USDSEK M1 20 bars have been copied //Это последний символ и таймфрейм

3. Подгружаю 20 баров через CopyTime 

Спасибо.
 

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