Индикатор из файла CSV

 

Сделал индикатор рисующий линию из данных файла CSV(данные дневные). Открывается на дневном графике.

Файл с дневными данными, одна колонка дата, другая цифра для отрисовки буфера.

Запустил его в советнике скорость с ним очень маленькая.

Думал, что файл читается каждый раз с самого начала, попробовал распринтовать.

Вроде все по порядку открытие файла:

17:14:16 test2 EURUSD,Daily: initialized
17:14:16 test2 EURUSD,Daily: В самом начале=0
17:14:16 test2 EURUSD,Daily: На новой строке в основном цикле=0Time=2000.01.03 00:00
17:14:16 test2 EURUSD,Daily: Конец строки=42Time=2000.01.03 00:00
17:14:16 test2 EURUSD,Daily: На новой строке в основном цикле=92019Time=2014.12.31 00:00
17:14:16 test2 EURUSD,Daily: Конец строки=92036Time=2014.12.31 00:00
17:14:16 test2 EURUSD,Daily: Отсчет закончен=92036Time=2014.12.31 00:00

и далее пошли повторы:

17:14:17 test2 EURUSD,Daily: В самом начале=0
17:14:17 test2 EURUSD,Daily: На новой строке в основном цикле=0Time=2015.01.09 00:00
17:14:17 test2 EURUSD,Daily: На новой строке в основном цикле=92036Time=2015.01.12 00:00
17:14:17 test2 EURUSD,Daily: Закрытие файла=1970.01.01 00:00

 

Вопрос: это в самом деле, будет такая низкая скорость или, что-то сделано некорректно?

Файлы:
test.mq4  4 kb
 
Forexman77:

Сделал индикатор рисующий линию из данных файла CSV(данные дневные). Открывается на дневном графике.

Файл с дневными данными, одна колонка дата, другая цифра для отрисовки буфера.

Запустил его в советнике скорость с ним очень маленькая.

Думал, что файл читается каждый раз с самого начала, попробовал распринтовать.

Вроде все по порядку открытие файла:

и далее пошли повторы:

 

Вопрос: это в самом деле, будет такая низкая скорость или, что-то сделано некорректно?


читайте сразу весь фаил в массив

из массива строите линии 

 
pako:


читайте сразу весь фаил в массив

из массива строите линии 

Можно немного поподробнее. Тут еще есть одно, что в файле количество ячеек может не совпадать с барами, то есть где-то может не быть значения.

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

 
Forexman77:

Можно немного поподробнее. Тут еще есть одно, что в файле количество ячеек может не совпадать с барами, то есть где-то может не быть значения.

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

нет значения - нет линии

не нужно ничего сравнивать

 
pako:

нет значения - нет линии

не нужно ничего сравнивать


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

ВООБЩЕМ СПАСИБО ЗА СОВЕТ!

Заполнил буфер из файла в  

int init()
а в старте начал сравнивать время с файла и цикла. Скорость в раз 7 выросла)
 
Forexman77:

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

ВООБЩЕМ СПАСИБО ЗА СОВЕТ!

Заполнил буфер из файла в  

ненужно ничего сравнивать

у вас в фаиле есть время и значение, строите обьект по времени и значению из фаила

например  в фаиле 13.01.2015 ; 12345 

строите обьект      13.01.2015 ;  12345 

у дневного бара тоже есть время , т.е сегодняшний дневной бар имеет время 13.01.2015, зачем вам индексы?

 

Сделал так:

 for(int i=limit;i>=0;i--)
   {
     for (int t=a;t>=0;t--)
     {
     if(Time[i]==TIME[t])
     {
     ExtMapBuffer1[i]=Bufer[t];
     a=t;
     break;
     }
     }
   }

 С объектов, в советнике можно информацию получать, через вызов индикатора?