Скачать MetaTrader 5

Создание офф-лайн графиков .hst

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Занеси ветку в избранное. Отслеживай изменения еще быстрее!
Fedor Arkhipov
17418
Fedor Arkhipov 2016.08.06 15:57 

Может кто сталкивался с таким?

Мною написан конвертер тиковой истории. Каждые 10 секунд конвертер пишет в файл .hst по определенному алгоритму High, low, open, close, volume.

Через какое-то время файл разрастается в размере и метатрадер 4 начинает сильно тормозить.

Появилась идея отображать только последние 1000 баров.

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

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


Будет ли толк от такого алгоритма перезаписи или же нет смысла пробовать?

Yuriy Asaulenko
3331
Yuriy Asaulenko 2016.08.06 18:31  
Fedor Arkhipov:

Может кто сталкивался с таким?

Мною написан конвертер тиковой истории. Каждые 10 секунд конвертер пишет в файл .hst по определенному алгоритму High, low, open, close, volume.


Будет ли толк от такого алгоритма перезаписи или же нет смысла пробовать?

Я пишу в базу данных (БД). Можно даже в Access. Никаких тормозов. И никаких ограничений до 1000. Если данных оч много, то лучше бесплатный MS SQL или MySQL.

Где-то в статьях было как связать МТ с БД. 

В файл безусловно не оч здорово. 

Fedor Arkhipov
17418
Fedor Arkhipov 2016.08.07 14:05  
Yuriy Asaulenko:

Я пишу в базу данных (БД). Можно даже в Access. Никаких тормозов. И никаких ограничений до 1000. Если данных оч много, то лучше бесплатный MS SQL или MySQL.

Где-то в статьях было как связать МТ с БД. 

В файл безусловно не оч здорово. 

Спасибо, поишу про Access.
Dmytro Zelenskyy
4318
Dmytro Zelenskyy 2016.08.07 16:13  

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

 

Может это поможет. Двигает массив   Mas[]   на 1 позицию.

ArrayCopy(Mas, Mas, 0, 1, WHOLE_ARRAY); 

Dmitry Fedoseev
42883
Dmitry Fedoseev 2016.08.08 06:42  

Не надо двигать каждый раз. Как размер разросся до, этак 5000-10000, тогда обрезать до 1000.

БД вообще тут не при делах, для offline графика файл hst нужен.  Даже если файлы резать, соединять, не проблема в бинарном режиме с использованием массива, будет быстро работать. Только по одному бару не надо. 

Nikolay Khrushchev
19182
Nikolay Khrushchev 2016.08.08 07:29  
Fedor Arkhipov:

Может кто сталкивался с таким?

Мною написан конвертер тиковой истории. Каждые 10 секунд конвертер пишет в файл .hst по определенному алгоритму High, low, open, close, volume.

Через какое-то время файл разрастается в размере и метатрадер 4 начинает сильно тормозить.

Появилась идея отображать только последние 1000 баров.

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

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


Будет ли толк от такого алгоритма перезаписи или же нет смысла пробовать?

это не эфективно. лучше копить записи до 1050й, и когда накопится - обрезать 50 записей. 
чтобы операция "обрезания" выполнялась раз в 50 баров, т.е. каждые 500 секунду а не каждые 10. так будет работать быстрей.
Yuriy Asaulenko
3331
Yuriy Asaulenko 2016.08.08 11:51  

Про БД сходу ищется статья SQL И MQL5: РАБОТАЕМ С БАЗОЙ ДАННЫХ SQLITE

Ну, а катит БД - не катит, решайте сами.) 

Alexey Oreshkin
3751
Alexey Oreshkin 2016.08.08 11:55  
а зачем двигать весь массив каждый раз, это же глупо учитывая что изменился всего 1 элемент. Гораздо эффективнее организовать запись "по кругу" и ввести индекс, указывающий начало массива.
Dmitry Fedoseev
42883
Dmitry Fedoseev 2016.08.08 12:03  
Хоть заголовок темы читайте, прежде чем советовать.
Fedor Arkhipov
17418
Fedor Arkhipov 2016.08.09 09:13  
Dmitry Fedoseev:

Не надо двигать каждый раз. Как размер разросся до, этак 5000-10000, тогда обрезать до 1000.

БД вообще тут не при делах, для offline графика файл hst нужен.  Даже если файлы резать, соединять, не проблема в бинарном режиме с использованием массива, будет быстро работать. Только по одному бару не надо. 

Вы имеете ввиду копировать данные из файла в массив и перезаписывать файл? Не каждый бар, а каждые 50, например. Возможно тогда сам график будет зависать и не известно как будут работать индикаторы на таком графике, тоже еще вопрос. Надо наверное пробовать и смотреть что получиться.
Ihor Herasko
9033
Ihor Herasko 2016.08.09 09:53  
Видимо, что-то не так с реализацией. Уже несколько лет работаю с оффлайн-графиками, никогда не замечал особых тормозов (история с 2000-го года минутки). Возможно, приведенный код поможет найти проблему.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий