Автор |
Сообщение |
znt
Зарегистрирован: 04.02.2016
Сообщения: 13
|
Возможно глупый вопрос, но не нашел в хэлпе, как настроить в Amibroker диапазон загружаемых по инструменту данных.
Что-то типа, “First Date” - “Last Date”, как это реализовано в TradeStation или Omega.
Amibroker каждый раз загружает все доступные в базе данные, что не всегда нужно - лишнее время загрузки, расход памяти, еще и расчет индикаторов по всей длине диапазона.
Пока что, единственный способ решить проблему, это клонировать базу и обрезать ненужное.
Но это тоже не совсем удобно - лишние телодвижения и дополнительное место на диске.
Может, есть еще какие-нибудь варианты? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В настройках базы есть опция Number of bars сколько "свечек" хранить в базе. Если плагин данных написан правильно, то эта опция работает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
znt
Зарегистрирован: 04.02.2016
Сообщения: 13
|
«Number of bars» определяет сколько "свечек" «правильно» написанный плагин может записать в вашу базу.
Т. е. если «Number of bars» – 1 000, а в базе 500, то он допишет ещё 500, а остаток отбросит, или будет удалять начальные "свечки", чтобы освободить место под конечные, если он очень «правильный» и в нем есть такая опция.
Если переключатель «Local data storage» установлен в «Enable», то «Number of bars» количество "свечек", в вашей базе не регулирует.
Т. е. если «Number of bars» – 1 000, в базе может быть и 1 000 000, и больше (сколько максимально, не знаю, не проверял).
Если переключатель «Local data storage» установить в «Disable», а количество "свечек" в базе превышает «Number of bars», то в момент запуска плагина Ami обрежет вашу базу, причем, по умолчанию, обрежет хвост, а не начало.
В любом случае это не решает мой вопрос.
Его можно решить, написав плагин, который будет на время «сбрасывать» базу во временный буфер (куча, файл, база данных) и оставлять только нужный интервал, а по окончании возвращать обратно.
По уму надо сразу делать с базой данных (MS SQL Server, MySQL, или что-нибудь подобное), потому что Ami под строку в своей базе выделяет 40 байт (и изменить это нельзя, по крайне мере – я не знаю, как).
A если работать с тиками, то нужно только 16 (DateTime, Price, Volume), т.е. 60 % просто не используется (это относится и к месту на диске, и к памяти).
И уже из этой базы формировать "свечки" с нужным интервалом (временным или объемным), и записывать в базу Ami. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
По моему все проще. Заведи 2 базы. Одна длинная для истории и одна короткая для скорости. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
znt
Зарегистрирован: 04.02.2016
Сообщения: 13
|
000 писал(а): |
По моему все проще. Заведи 2 базы. |
Это вариант из первой записи поста, он не подходит по двум причинам:
1. Если надо протестировать интервал какой-то части диапазона.
Здесь без новой базы – никак.
2. Уже сейчас на МБ оборот по Si доходит до 1 800 000 тиков в день.
Если работать с тиковой базой (а для серьезной МТС это необходимо - имхо), то для Ami это почти 70 Мбайт памяти за день по одному инструменту!!!
Если не сжимать данные с каким-то интервалом, то никакой памяти не хватит (либо это будет очень не дёшево).
А для дополнительных параметров характеризующих свечу (средневзвешенная цена - например) в Ami есть поля, под которые в любом случае (надо это, или не надо) выделяется память. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не понял сразу, что речь о тиковой базе. Тогда все понятно. Пожалуй в таком случае только если писать свой датаплагин. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
yser
Зарегистрирован: 30.11.2011
Сообщения: 76
|
znt писал(а): |
По уму надо сразу делать с базой данных (MS SQL Server, MySQL, или что-нибудь подобное), потому что Ami под строку в своей базе выделяет 40 байт (и изменить это нельзя, по крайне мере – я не знаю, как).
A если работать с тиками, то нужно только 16 (DateTime, Price, Volume), т.е. 60 % просто не используется (это относится и к месту на диске, и к памяти).
И уже из этой базы формировать "свечки" с нужным интервалом (временным или объемным), и записывать в базу Ami. |
в ami есть дата плагин "ODBC/SQL Universal plugin", можно подключиться к любой базе данных (mssql и т.п.) а в настройках плагина есть возможность вручную задать sql запрос для выборки данных - это дает широкие возможности, например можно в условие задать любой период выборки данных. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
znt
Зарегистрирован: 04.02.2016
Сообщения: 13
|
znt писал(а): |
По уму надо сразу делать с базой данных (MS SQL Server, MySQL, или что-нибудь подобное)... |
Очередную глупость озвучил, не подумавши – зачем мне SQL, если котировки – обычная отсортированная матрица?
Надо просто решить, как эффективнее уменьшить размер хранимых файлов.
Может, кто подскажет, алгоритм кодировки файлов базы данных Ami есть в открытом доступе или это закрытая информация? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я не встречал. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Да как же не встречал? Структура баров подробно описана в ADK. В файлах истории эти самые бары и записаны, только в начале ещё шапка с названием символа, датой обновления, количеством баров... Я уже не помню точно, из чего ещё она состоит, но в шестнадцатиричном редакторе её структуру замечательно видно. Я когда-то давно делал парсинг амишной базы сторонней программкой, никаких сложностей не было. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
znt
Зарегистрирован: 04.02.2016
Сообщения: 13
|
znt писал(а): |
Т. е. если «Number of bars» – 1 000, в базе может быть и 1 000 000, и больше... |
Пропустил:
Если Number of bars – 1 000, а в базе 2 000 и Local data storage - Enable, то и для плагина, Number of bars – 2 000, т. е. максимальное число.
znt писал(а): |
Если переключатель «Local data storage» установить в «Disable», а количество "свечек" в базе превышает «Number of bars», то в момент запуска плагина Ami обрежет вашу базу, причем, по умолчанию, обрежет хвост, а не начало. |
Здесь по другому:
Если переключатель Local data storage установить в Disable, Ami очищает только кеш (не затрагивая базу данных) и всё дальнейшее действо (до Local data storage - Enable или Data source - local database) касается только кеша и зависит от подключенного плагина.
Mechanic писал(а): |
Структура баров подробно описана в ADK. В файлах истории эти самые бары и записаны, только в начале ещё шапка с названием символа, датой обновления, количеством баров... |
Посмотрел – так и есть (шестнадцатеричный бинарник):
Служебный блок (1 184 байта) + по 40 байт на строку котировок (ADK - struct Quotation) + ещё 4 служебных байта.
Я почему-то думал, что здесь что-то особенное (типа .xpo Омеги). |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|