Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всё относительно. Вы не забывайте, что это просто архив, к которому обращение происходит очень редко. А помимо него есть ещё файл с кэшем этой истории, из которого собственно и происходит основное чтение. Так вот спрашивается, если есть кэш, то нахрена тогда весь архив держать в распакованном виде?
Однако я признаю, что погорячился насчёт "миллисекунд". Сейчас набросал код по перегонке запакованных приращений в конечный формат MqlRates. Для минутной истории за 15 лет получается 200 мс. Но это в одном потоке, да и процессор тут слабоватый. Если распараллелить, то получится вполне приемлемо. Тем более что эта история обычно не грузится целиком, а подгружается по мере необходимости, и разбита на файлы по одному году. Так что тащить всю историю с точки старта не нужно. Более того, в начале файла обычно помечаются опорные точки, по которым можно быстро перейти в нужный участок файла. Так что это всё не проблема.
Тормоза могут быть только если начнётся подгрузка одновременно по множеству символов. Для обычного юзера это точно не грозит. Да и это однократная процедура. Потом данные будут уже в кэше.
Ну смотрите ... Вы отметаете алгоритм 1
и предложили алгоритм 2-й
1 схватить кусок истории - допустим 20140201 - 20141001 и сразу его гнать получая прямые котировки ( не вычисляемые )
2 пойти в начало в 1976 год - затем начитывая по ТФ каждое наращение получая цены (вычисляя их на лету ) дойти до 29140201 и только потом идти далее
в любом случае алгоритм 2-й будет медленней
а если советник работает не с одним ТФ а с несколькими то будет еще медленней
Поделюсь своим опытом - пользуюсь MT4 , заметил, что терминал начал тормозить, а так как он 32 битный, то работает только с одним ядром процессора, загружая его так, что затруднительно становится перемещать трендовую линию, а торговать вообще не реально. Грешил на индикаторы - экспериментально исключая их так и не установил, который самый прожорливый. Что же помогло!? Помня о размерах песочницы решил сделать дефрагментацию, сторонней утилитой, а для скорости папку с терминалами заархивировал на другой диск (сжатие более чем в 10 раз!), произвел дефрагментацию, разархивировал и случилось чудо - ядро процессора загружается в среднем на 5%!
Из этого можно сделать выводы:
1. Производите периодически дефрагментацию, или пользуетесь архивацией и разархивацией, что может быть быстрей, так как файлы истории сильно фрагментируются.
2. Исходя из того, что файлы сильно фрагментируются, я бы предложил разработчику подумать о создании пустого файла для занятия размера на винчестере, и постепенно его заполнять данными (актуально при постоянном онлайне и работе со множеством валютных пар) - так можно будет уменьшить дефрагментацию и повысить производительность системы.
3. Разумно создавать файлы в виде отрезков по годам - текущий год без архива, а прошедшие в архиве - фактически данные нужны для работы с тестером, и разумно их просто подготавливать для его работы, сбрасывая их в кэш, возможно данную функцию можно использовать по желанию пользователя.
1 схватить кусок истории - допустим 20140201 - 20141001 и сразу его гнать получая прямые котировки ( не вычисляемые )
2 пойти в начало в 1976 год - затем начитывая по ТФ каждое наращение получая цены (вычисляя их на лету ) дойти до 29140201 и только потом идти далее
в любом случае алгоритм 2-й будет медленней
а если советник работает не с одним ТФ а с несколькими то будет еще медленней
Зачем идти в начало 1976 ? Вы невнимательно читали, я же написал, что история разделена по годам. Загляните в папку с историей и посмотрите.
И даже один год не нужно перебирать полностью, об этом я тоже написал. Должны быть предусмотрены опорные точки (якоря), ориентируясь по которым можно найти искомый участок за несколько итераций.
Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.
Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.
Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.
Итак, идём дальше. Как уже писал выше, время распаковки 15-летней истории заняло приблизительно 200 мс в одном потоке. При распараллеливании получается 60-100 мс. Кто-то может сказать: у, это много!
А теперь смотрим, сколько занимает процесс чтения диска. На моём SSD-диске чтение 15 файлов .hcc общим объёмом 200 МБ заняло 700 мс. Это конечно далеко не самый быстрый SSD, но на обычном HDD это займёт гораздо больше. Раза в 2 точно. Щас нет под рукой HDD, вечером проверю.
Итого: затратив лишние 60 мс на распаковку, мы добьёмся трёхкратного (в среднем) сокращения времени чтения файла, сэкономив 450 мс времени (для SSD). А для обычного диска экономия будет почти секунду! И при этом ещё и экономим гигабайты пространства на диске.
Вот такие дела. А вы тут заладили: "метатрэйдер эффективен, метатрэйдер экономичен".... Поменьше надо читать советских газет.
Поделюсь своим опытом - пользуюсь MT4 , заметил, что терминал начал тормозить, а так как он 32 битный, то работает только с одним ядром процессора, загружая его так, что затруднительно становится перемещать трендовую линию, а торговать вообще не реально. Грешил на индикаторы - экспериментально исключая их так и не установил, который самый прожорливый. Что же помогло!? Помня о размерах песочницы решил сделать дефрагментацию, сторонней утилитой, а для скорости папку с терминалами заархивировал на другой диск (сжатие более чем в 10 раз!), произвел дефрагментацию, разархивировал и случилось чудо - ядро процессора загружается в среднем на 5%!
Из этого можно сделать выводы:
1. Производите периодически дефрагментацию, или пользуетесь архивацией и разархивацией, что может быть быстрей, так как файлы истории сильно фрагментируются.
2. Исходя из того, что файлы сильно фрагментируются, я бы предложил разработчику подумать о создании пустого файла для занятия размера на винчестере, и постепенно его заполнять данными (актуально при постоянном онлайне и работе со множеством валютных пар) - так можно будет уменьшить дефрагментацию и повысить производительность системы.
3. Разумно создавать файлы в виде отрезков по годам - текущий год без архива, а прошедшие в архиве - фактически данные нужны для работы с тестером, и разумно их просто подготавливать для его работы, сбрасывая их в кэш, возможно данную функцию можно использовать по желанию пользователя.
Чтобы быть уверенным, что файлы MT фрагментированы, надо представить доказательства в виде указания "файл такой-то = столько фрагментов, итд".
Массивные файлы МТ (даже логи) все пишутся исключительно с четким механизмом противодействия фрагментации. Поэтому исторические файлы или логи не фрагментируются сверх неизбежного минимума (и не считая случая "весь диск фрагментирован донельзя").
Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.
Вы проявляете детское непонимание.
Вы самолично запросили данные и их вам предоставили автоматически и прозрачно.
Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.
Вы сами не запрашивайте больше нужного, не работайте с дневными графиками, не интересуйтесь месячными и будет у вас тот объем, насколько вы скроллитесь вглубь.
А вот мы не будем ради этого лимитировать и напрягать остальных трейдеров, кто хочет нажать и получить все без всяких настроек. Переключился на дневки - получил сколько есть, переключился на месяцы - тоже все получит.
Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.
Итак, идём дальше. Как уже писал выше, время распаковки 15-летней истории заняло приблизительно 200 мс в одном потоке. При распараллеливании получается 60-100 мс. Кто-то может сказать: у, это много!
Вы еще не знаете, что эфемерный выигрыш в одном дает серьезный проигрыш в других местах (расход оперативки, усложнение, невозможность прямого доступа, серьезный расход CPU, кратное увеличение расходов на записи).
Вопрос "память vs скорость" в нашем случае решается исключительно в пользу скорости. И не надо говорить про проблему 200 мб за 10 лет истории - это смешно.
Это не так. У обычного компа куча применений помимо трейдинга, и если разработчик каждой программы не озабачивается задачей (задачей, достаточно просто решаемой в данном случае) оптимизации объема хранимых данных, то место на диске заканчивается. МетаТрейдер - самая неэкономичная программа, причем такая реализация ничем не обоснована.
Еще раз спрашиваю - в чем проблема сделать опцию с указанием начальной даты истории, начиная с которой пользователь заинтереснован в котировках? Например, введу я там 01.01.2013 - и 90% места под историю МетаТрейдера, занятого сейчас впустую, освободится.
Предлагаете покупать выделенный комп под МТ? Может тогда и разработчику каждой софтины тоже самое юзеру предлагать? Это просто роспись в неуважении к клиенту и собственной лени.
Поддерживаю решение, я частенько в индикаторах применял явный метод блокирования расчёта раньше какой то даты, хотя бы для корректного расчёта индикаторов заглядывающих на М1 или на М5.
Те это альтернативное решение maxbars в окне.
для торговли хватит маленьких ресурсов - и нафиг история не нужна
для - тестирования и разработок нужны другие ресурсы
портативные машинки не для этого
Зришь в корень, МТ универсален, и как всё универсальное не идеален.
Дальнейший путь развития в пользовательской сборке из блоков под конкретные нужды.
При этом я не отрицаю что мастера из MQ выжали из универсальной модели все соки и довели её до приемлемого уровня для всех видов использования.
Но хочется то идеального.