Объём файлов истории - страница 4

 
meat:

Всё относительно.  Вы не забывайте, что это просто архив, к которому обращение происходит очень редко.  А помимо него есть ещё файл с кэшем этой истории, из которого собственно и происходит основное чтение.  Так вот спрашивается, если есть кэш, то нахрена тогда весь архив держать в распакованном виде?

Однако я признаю, что погорячился насчёт "миллисекунд". Сейчас набросал код по перегонке запакованных приращений в конечный формат MqlRates. Для минутной истории за 15 лет получается 200 мс. Но это в одном потоке, да и процессор тут слабоватый. Если распараллелить, то получится вполне приемлемо.  Тем более что эта история обычно не грузится целиком, а подгружается по мере необходимости, и разбита на файлы по одному году.  Так что тащить всю историю с точки старта не нужно.  Более того, в начале файла обычно помечаются опорные точки, по которым можно быстро перейти в нужный участок файла.  Так что это всё не проблема.

Тормоза могут быть только если начнётся подгрузка одновременно по множеству символов. Для обычного юзера это точно не грозит.  Да и это однократная процедура. Потом данные будут уже в кэше.

Ну смотрите ...   Вы отметаете алгоритм 1

и предложили алгоритм 2-й


1  схватить кусок истории - допустим 20140201 - 20141001 и сразу его гнать получая прямые котировки ( не вычисляемые )

2  пойти в начало в 1976 год -  затем начитывая по ТФ каждое наращение  получая цены (вычисляя их на лету ) дойти до 29140201  и только потом идти далее 

в любом случае алгоритм 2-й будет медленней

а если советник работает не с одним ТФ а с несколькими то будет еще медленней 

 

Поделюсь своим опытом - пользуюсь MT4 , заметил, что терминал начал тормозить, а так как он 32 битный, то работает только с одним ядром процессора, загружая его так, что затруднительно становится перемещать трендовую линию, а торговать вообще не реально. Грешил на индикаторы - экспериментально исключая их так и не установил, который самый прожорливый. Что же помогло!? Помня о размерах песочницы решил сделать дефрагментацию, сторонней утилитой, а для скорости папку с терминалами заархивировал на другой диск (сжатие более чем в 10 раз!), произвел дефрагментацию, разархивировал и случилось чудо - ядро процессора загружается в среднем на 5%!

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

 
YuraZ:
 

1  схватить кусок истории - допустим 20140201 - 20141001 и сразу его гнать получая прямые котировки ( не вычисляемые )

2  пойти в начало в 1976 год -  затем начитывая по ТФ каждое наращение  получая цены (вычисляя их на лету ) дойти до 29140201  и только потом идти далее 

в любом случае алгоритм 2-й будет медленней

а если советник работает не с одним ТФ а с несколькими то будет еще медленней 

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

И даже один год не нужно перебирать полностью, об этом я тоже написал. Должны быть предусмотрены опорные точки (якоря), ориентируясь по которым можно найти искомый участок за несколько итераций.

 
Renat:

Не надо делать вид, что не хватает ресурсов у обычных компьютеров.

Метатрейдер очень экономичен и эффективен. 

Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.

Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.

Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.

 

Итак, идём дальше.   Как уже писал выше, время распаковки 15-летней истории заняло приблизительно 200 мс в одном потоке.  При распараллеливании получается 60-100 мс.  Кто-то может сказать:  у, это много!

А теперь смотрим, сколько занимает процесс чтения диска.  На моём SSD-диске чтение 15 файлов .hcc общим объёмом 200 МБ заняло 700 мс. Это конечно далеко не самый быстрый SSD, но на обычном HDD это займёт гораздо больше. Раза в 2 точно.  Щас нет под рукой HDD, вечером проверю.

Итого:  затратив лишние 60 мс на распаковку, мы добьёмся трёхкратного (в среднем) сокращения времени чтения файла, сэкономив 450 мс времени (для SSD). А для обычного диска экономия будет почти секунду!  И при этом ещё и экономим гигабайты пространства на диске. 

Вот такие дела.  А вы тут заладили: "метатрэйдер эффективен, метатрэйдер экономичен".... Поменьше надо читать советских газет.

 
-Aleks-:

Поделюсь своим опытом - пользуюсь MT4 , заметил, что терминал начал тормозить, а так как он 32 битный, то работает только с одним ядром процессора, загружая его так, что затруднительно становится перемещать трендовую линию, а торговать вообще не реально. Грешил на индикаторы - экспериментально исключая их так и не установил, который самый прожорливый. Что же помогло!? Помня о размерах песочницы решил сделать дефрагментацию, сторонней утилитой, а для скорости папку с терминалами заархивировал на другой диск (сжатие более чем в 10 раз!), произвел дефрагментацию, разархивировал и случилось чудо - ядро процессора загружается в среднем на 5%!

Если не нашли причины и индикатора/эксперта, значит следующие выводы не верны.


Из этого можно сделать выводы:

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

Чтобы быть уверенным, что файлы MT фрагментированы, надо представить доказательства в  виде указания "файл такой-то = столько фрагментов, итд".

Массивные файлы МТ (даже логи) все пишутся исключительно с четким механизмом противодействия фрагментации. Поэтому исторические файлы или логи не фрагментируются сверх неизбежного минимума (и не считая случая "весь диск фрагментирован донельзя").

 
marketeer:

Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.

Вы проявляете детское непонимание.

Вы самолично запросили данные и их вам предоставили автоматически и прозрачно.


Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.

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

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


Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.

Хватит уже гнать про якобы недостаток ресурсов. Вы откровенно лжете.
 
meat:

Итак, идём дальше.   Как уже писал выше, время распаковки 15-летней истории заняло приблизительно 200 мс в одном потоке.  При распараллеливании получается 60-100 мс.  Кто-то может сказать:  у, это много!

Вы еще не знаете, что эфемерный выигрыш в одном дает серьезный проигрыш в других местах (расход оперативки, усложнение, невозможность прямого доступа, серьезный расход CPU, кратное увеличение расходов на записи).

Вопрос "память vs скорость" в нашем случае решается исключительно в пользу скорости. И не надо говорить про проблему 200 мб за 10 лет истории - это смешно.

 
marketeer:

Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.

Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.

Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.

Поддерживаю решение, я частенько в индикаторах применял явный метод блокирования расчёта раньше какой то даты, хотя бы для корректного расчёта индикаторов заглядывающих на М1 или на М5.

Те это альтернативное решение maxbars в окне. 

 
YuraZ:

для торговли хватит маленьких ресурсов - и нафиг история не нужна

для - тестирования и разработок нужны другие ресурсы

портативные машинки не для этого

Зришь в корень, МТ универсален, и как всё универсальное не идеален.

Дальнейший путь развития в пользовательской сборке из блоков под конкретные нужды.

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

Но хочется то идеального.