Архив котировок с сервера брокера

Опубликовано в Утилиты

Этот скрипт позволяет накопить историю котировок и параметров, используя базу, находящуюся на сервера брокера QUIK.

В терминале QUIK в процессе работы доступна не вся история инструмента. На каждое утро терминал получает примерно 3000 свечей предыдущей истории и пополняет ее новыми, формирующимися в течение торгового дня. На следующее утро количество доступных в терминале свечей снова уменьшается до 3000 и снова идет пополнение новыми возникающими свечами.

Что делать, если необходимо накопить больший объём информации?

Придётся собирать ее на своём компьютере. Скрипт как раз для этого и предназначен.

 

Что он делает?

  • Скрипт создаёт базы котировок по произвольному количеству инструментов в формате CSV
  • Работает с любыми инструментами (акции, фьючерсы и т.д.)
  • Умеет создавать базы по любым параметрам инструментов
  • Запрашивает пропущенную историю с сервера брокера
  • Дописывает архивы в реальном времени
  • Умеет работать как с регулярными таймфреймами, так и с тиковым
  • Для тикового таймфрейма выводит обезличенные сделки со временем, включающим миллисекунды
  • Все записи всегда отсортированы по возрастанию времени

Таким образом, нет насущной необходимости держать терминал постоянно включённым во время торгов. Достаточно подключаться к серверу брокера время от времени - и пропущенная информация будет запрошена и корректно внесена в базу. Разумеется, перерывы не должны быть уж очень большими, чтобы брокер все-таки располагал этой требуемой историей. На результате работы скрипта не отобразятся сбои в питании, пропадание интернета - при следующем подключении к брокеру скрипт запросит у сервера пропущенные данные и аккуратно их склеит с уже имеющимися.

Скрипт создаёт файлы стандартного формата csv, который является родным для Excel, OpenOffice и еще ряда распространенных программ. Программы технического анализа типа Metastock или Amibroker также понимают этот формат и позволяют импортировать содержащиеся в нём данные в свои базы.

Скрипт обновляет данные в файлах в реальном времени. Создаваемые CSV файлы создаются в разделяемом режиме. Это означает, что параллельно с накоплением данных в самом файле можно читать их внешней программой. Таким образом можно исполнить простой реал-тайм экспорт котировок во внешнюю программу.

 

Вид создаваемых файлов баз

Для регулярного таймфрейма (Лукойл 1 минута):

Date;Time;Open;High;Low;Close;Volume
06-02-2015;04:57:00;2900;2903.2;2897;2902;3169
06-02-2015;04:58:00;2902.2;2917.9;2900.5;2912.6;5063
06-02-2015;04:59:00;2912.6;2917.7;2910.6;2917.7;3185
06-02-2015;05:00:00;2917;2919.8;2916.3;2918.7;2180
06-02-2015;05:01:00;2916.6;2918.5;2905.2;2909.8;6909
06-02-2015;05:02:00;2906.9;2907;2897.7;2901.3;7096
06-02-2015;05:03:00;2901.3;2904.7;2898.8;2902.7;3152
06-02-2015;05:04:00;2902.7;2904.6;2901.1;2903.4;2989
06-02-2015;05:05:00;2903.4;2904.8;2901.1;2902.5;3025
06-02-2015;05:06:00;2904;2904.8;2903;2904.8;146

Для тикового таймфрейма (RIH5):

Date;Time;Count;Close;Volume
06-02-2015;09:06:17.547;7001;79160;1
06-02-2015;09:06:17.559;9001;79160;2
06-02-2015;09:11:48.900;1;79160;1
06-02-2015;09:12:03.270;1;79160;1
06-02-2015;09:12:47.266;6001;79200;1
06-02-2015;09:19:04.395;5001;79200;3
06-02-2015;09:51:35.179;9001;79200;1
06-02-2015;09:53:14.008;8001;78840;1
06-02-2015;09:53:14.008;8002;78820;4
06-02-2015;09:53:51.108;8001;79200;1
06-02-2015;09:53:51.108;8002;79200;2

 

Если в вашей ОС настроены другие разделители, можно настроить скрипт для сохранения информации с использованием именно этих разделителей и иных форматов даты и времени:

DELIMITER = |                    // Разделитель CSV ( ; по умолчанию)
FORMATDATE = DD/MM/YYYY // Формат задания даты (DD - день, MM - месяц, MMM - месяц строкой, YY - короткий год, YYYY - полный год)
FORMATTIME = hh:mm:ss // Формат задания времени (hh - часы, mm - минуты, ss - секунды)

Date|Time|Open|High|Low|Close|Volume
11/03/2015|13:10:00|83000|83050|82930|82940|91
11/03/2015|13:11:00|82990|82990|82900|82900|16
11/03/2015|13:12:00|82850|82920|82840|82860|65
11/03/2015|13:13:00|82880|82890|82880|82880|9
11/03/2015|13:14:00|82860|82860|82620|82620|211
11/03/2015|13:15:00|82630|82650|82520|82650|79
11/03/2015|13:16:00|82640|82660|82590|82600|9
11/03/2015|13:17:00|82580|82580|82540|82540|4
11/03/2015|13:18:00|82540|82540|82540|82540|1
11/03/2015|13:19:00|82510|82520|82440|82460|23
11/03/2015|13:20:00|82450|82480|82410|82480|15
11/03/2015|13:21:00|82510|82530|82510|82510|9
11/03/2015|13:22:00|82470|82520|82470|82520|11
11/03/2015|13:23:00|82510|82580|82510|82580|8
11/03/2015|13:25:00|82620|82620|82620|82620|5
11/03/2015|13:26:00|82640|82650|82630|82630|9
11/03/2015|13:28:00|82670|82670|82640|82640|4
11/03/2015|13:29:00|82690|82740|82670|82740|6
11/03/2015|13:30:00|82690|82690|82690|82690|1
11/03/2015|13:32:00|82700|82760|82700|82760|7
11/03/2015|13:33:00|82750|82750|82740|82740|5
11/03/2015|13:34:00|82670|82670|82670|82670|2

 

Конечно, для того чтобы иметь возможность экспортировать тиковые котировки, они должны быть доступны в терминале. Другими словами, брокер должен вам их поставлять. Некоторые брокеры экономят и по умолчанию тиковые котировки своим клиентам не транслируют. В этом случае обычно достаточно их вежливо попросить исправить это досадное недоразумение Улыбаюсь

Скачать демонстрационную версию скрипта можно по этой ссылке. Также имеются версии, экспортирующие данные напрямую в лист Excel и OpenOffice, минуя файл.

 


 Update 28.03.2017

В версии 7.10 рабочего места Quik количество свечей в локальном хранилище увеличено до 65000. Однако при перезаказе архивов графиков накопленная история графиков очищается, и рабочее место получает с сервера QUIK лишь 3000 свечей.

Комментарии   

# rotvex 07.06.2015 11:00
Какой пароль на архив Export.rar? :zzz
Ответить | Ответить с цитатой | Цитировать
# admin 07.06.2015 13:02
Здравствуйте.

Этот и некоторые других архивы на этом сайте защищены паролями.

Пароль требуется только для тех файлов, которые необходимы для полных версий.

Файлы, требующиеся для работы демо-версий, паролем не защищены и Вы можете свободно вынуть их из архива и использовать.

Рекомендую использовать архиватор winrar или подобный для удобства работы с архивами.
Ответить | Ответить с цитатой | Цитировать
# genom 25.01.2016 22:32
Михаил, приветствую! Сегодня получил вот такую ошибку при сборе данных "bad argument #3 to 'gsub' (string/functio n/table expected)".
Покапал и понял, что из числа всех моих инструментов в sih6 и rih6, текущее число на линейке внизу отражается двумя днями ранее, т.е. сегодняшняя дата - 2 дня, а при наведении на сам график интересующего параметра, высвечивается верное. Закомментировал данные инструменты по всем параметрам - ошибка пропала.
Еще не могу понять, почему то инструментах со спота график цены не может сохранится позже 20.01.2016, а вот другие параметры (число заявок на покупку и т.п.) сохраняются. Что я недонастроил в Quik или в чем может быть проблема? Как решить если это возможно? :-)
Ответить | Ответить с цитатой | Цитировать
# admin 25.01.2016 22:41
Думаю, что прежде чем озадачиваться вопросами, связанными со скриптом, необходимо сначала нормализовать поведение своего терминала.

В этом вопросе я помочь вам не смогу - обратитесь за помощью к вашему брокеру.

Если после исправления проблем терминала ошибка скрипта повторится - присылайте мне файл настроек
Ответить | Ответить с цитатой | Цитировать
# Елена 06.06.2016 18:04
Добрый день.
Подскажите пожалуйста стоимость робота?
Ответить | Ответить с цитатой | Цитировать
# admin 06.06.2016 18:11
Здравствуйте.

По ссылке bot4sale.ru/.../... вы можете скачатьдемо-вер сию скрипта. Там же указано условие получения полной версии.
Ответить | Ответить с цитатой | Цитировать
# sm 17.10.2016 16:14
Доброго дня. А по тикам направление сделки можно получить? Спасибо.
Ответить | Ответить с цитатой | Цитировать
# admin 17.10.2016 16:21
Здравствуйте.

Средствами этого скрипта нет, нельзя.
Ответить | Ответить с цитатой | Цитировать
# Bo$$ 26.10.2016 12:51
Здравствуйте! Как перечислить несколько параметров одного инструмента?("P ARAMETER=bid/of fer/value" какой синтаксис между перечисляемыми параметрами)
Ответить | Ответить с цитатой | Цитировать
# admin 26.10.2016 13:39
Добрый день.

Нужно создать несколько разных секций, в каждой из которых задать один параметр
Ответить | Ответить с цитатой | Цитировать
# Bo$$ 26.10.2016 16:31
Тогда получится на выходе три файла одного инструмента? Нельзя ли чтоб в один файл писались параметры.
Ответить | Ответить с цитатой | Цитировать
# admin 26.10.2016 16:57
Это невозможно. Да и незачем. У каждого параметра 5 полей, несколько параметров с повторяющиеся полями в одном файле? Да ну...
Ответить | Ответить с цитатой | Цитировать
# bobahrus 29.11.2016 23:58
Судя по всему, младшие таймфреймы (к примеру, 5 минут) ограничены у брокера. Экспортируется только последние ~3000 свечей. На графиках в терминале, более ранней истории по этому ТФ тоже нету.
Не подскажите, как получить более ранние свечи?
Ответить | Ответить с цитатой | Цитировать
# admin 30.11.2016 01:43
Ну вот вы сами пишете, что у брокера более ранних данных нет. Как их можно у него взять? - никак...

Можно попробовать поскачивать эти данные с сайта финама или алора - но надежность этих данных заставляет плакать.

Но если вы олигарх - московская биржа вам продаст все что захотите
Ответить | Ответить с цитатой | Цитировать
# Алексей М 13.12.2016 20:09
Добрый день!
Пароль получил - спасибо!

А можно уточнить - что имеется в виду под "Также имеются версии, экспортирующие данные напрямую в лист Excel"?
Данный excel-файл должен быть открыт или закрыт?
Если первое, то каким образом происходит обмен? DDE?
Ответить | Ответить с цитатой | Цитировать
# admin 13.12.2016 21:01
Мне приходилось писать скрипты, которые эксрортируют данные напрямую в лист эксель. При этом сам эксель должен быть запущен.

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

Поэтому приходилось писать разные скрипты, посылающие в эксель данные через ole механизм
Ответить | Ответить с цитатой | Цитировать
# Константин Меснянкин 31.01.2017 21:07
Добрый вечер. Самая главная фича этого скрипта не работает, а именно "Запрашивает пропущенную историю с сервера брокера". Может быть я что то не так делаю ? я только для этого и брал чтобы комп весь день включённым не держать, я думал что он тиковые данные сам загружать будет, но судя по всему во сколько комп включил со стольки тиковые данные и идут.
Ответить | Ответить с цитатой | Цитировать
# admin 31.01.2017 21:55
Константин.

Именно запрашивает и склеивает пропущенную историю.

Скорее вы что-то не так делаете. Что именно - сказать не могу - у меня нет информации о ваших действиях
Ответить | Ответить с цитатой | Цитировать
# Константин Меснянкин 31.01.2017 23:33
Я пока тестирую только USDRUB_TOM тиковые данные. В тиковых данных существуют пробелы. Во сколько терминал запустил со столько и начинается запись. Часовики и дневки брокер и так сам предоставит эти данные меня не интересуют, в смысле ради них не вижу необходимости скрипта.
Ответить | Ответить с цитатой | Цитировать
# admin 01.02.2017 13:13
Очень уж вы категоричны.

Проверяйте настройки терминала в вопросе получения пропущенных данных. Пропущенные данные терминал должен получать, иначе да, можно возмущаться неисправностью выключателя на стене, когда напряжение отрублено во всем квартале...
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 12:28
Вопросы по скрипту
- можно с помощью этот скрипта брать только данные последней свечи или последние две - три свечи? (для множества инструментов) -в реальном времени?
- записывать данные этих свечей в один файл (может на разные листы)?
- этот файл должен быть запущен? и можно в нем сразу делать вычисления?
Ответить | Ответить с цитатой | Цитировать
# admin 17.02.2017 12:42
Здравствуйте.

Этот скрипт пишет данные в файл, а не в открытую книгу MS Excel.

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


То, о чем пишите вы -это экспорт данных из терминала в уже открытую книгу экселя, которая в памяти.

Это абсолютно реально и таких скриптов приходилось писать в разных вариантах. Но к скрипту, который лежит на сайте отношения не имеет.
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 12:51
Если у Вас есть готовые скрипты - то что я описывал,
выложите их - может народу понадобиться
Я пользуюсь такими скриптами, но они написаны на QPILE - потом по DDE -
вывод последней свечи (нескольких) - на множестве инструментов сильно тормозит ПК - хотя ПК не хилый..
Ответить | Ответить с цитатой | Цитировать
# admin 17.02.2017 13:02
Там огромное разнообразие потребностей.

кому-то нужно три последние цены, кому-то 4, кому-то вся доступная история. Кому-то в один лист книги, кому-то по разныи листам, в одном формате, в другом.. Кому-то в уже открытую книгу и существующий лист. Кому-то в новую книгу, кому-то нужно проверить, есть ли уже такая книга на диске и использовать ее (а иначе создать с определенными умолчаниями)

На всех угодить одним скриптом невозможно. Поэтому и не выкладываю ничего из этой серии. Когда что-то нужно конкретное - люди сообщают. Если есть что-то похожее в наличии - даю за пиво, а если нет - исполняю заказ.
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 13:09
Я сейчас использую
pmntrade.ru/quik_quotes_exporter.html
есть похожее, но на языке ЛУА - он же вроде быстрее
Ответить | Ответить с цитатой | Цитировать
# admin 17.02.2017 13:23
Понятно, что на lua будет гораздо удобнее и быстрее.

Но если все устраивает и скрипт по ссылке нормально работает, зачем городить огород и лишать честного заработка его автора?

Или не все устраивает?
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 14:10
Скрипт автора - в моём случае - когда много инструментов, сильно грузит ПК ( грузится и Квик и эксель), так что хотелось бы более лучшее решение, часть расчетов вести в скрипте, а не эксель.
Эксель использую как как наглядное отображение своих расчитанных значений - (там в таблице можно гистограмму выводить в цвете - зрительно лучше воспринимается чем цифры) и тд.
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 14:17
Хотелось бы - Типа вашего сканера рынка - только расчеты выводились бы в таблицу - которую можно экспортировать в Эксель
Ответить | Ответить с цитатой | Цитировать
# Юрий77 17.02.2017 14:19
Или сразу в Эксель , без таблице в Квике - если это сложно
Ответить | Ответить с цитатой | Цитировать
# admin 13.04.2017 11:02
Выводить индикаторы в файл - дело неблагодарное.

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

Поэтому для правильности придется выводить значения индикатора во всех свечах на каждом тике, что во-первых, некошерно, а во-вторых у вас уже такой скрипт имеется.
Ответить | Ответить с цитатой | Цитировать
# Юрий77 13.04.2017 13:20
Понял не дурак, дурак бы не понял)))
Я кстати на основе Вашего скрипта - Alert уже ничего в Эксель не вывожу - все вычисления делаю в скрипте и вывожу в таблицу Аlerta - там высвечиваются нужные вычисленные значения - с установленной мной периодичностью ( в данном случае алерт использую для визуализации данных)
Вот бы в Алерте в таблице можно было бы новые столбцы делать и раскидывать данные DESCRIPTION по столбцам))))
А сколько экземпляров Алерта сразу можно запустить?
Ответить | Ответить с цитатой | Цитировать
# admin 13.04.2017 13:37
Количество запущенных копий алертера не ограничено.

Добавлять пользовательски е столбцы, чтобы можно было использовать алертер не по назначению?

Можно и добавить. Но давайте сначала попробуем с вентилятором и веником. Совмещайте их в одно целое и присылайте мне видео, как функционирует этот симбиоз :-*
Ответить | Ответить с цитатой | Цитировать
# Юрий77 13.04.2017 14:24
Алерт в данном случае использовался из за неимение другого - так как другие скрипты (сторонних товарищей) сильно комп грузят, длинные связки получаются, да ещё и на языке Купаил.
А вот чтобы на Lua, да и в самом квике была таблица (с разными вычислениями и подсвечивалась разными цветами - такого не встречал.
Если есть похожее с удовольствием приобрету.))

Конечно есть другой способ (программы - связки) - я до этого ещё не дорос.
Ответить | Ответить с цитатой | Цитировать
# admin 13.04.2017 14:48
А чем не устраивает экcель?
Ответить | Ответить с цитатой | Цитировать
# АлексейМ 18.02.2017 10:48
Юрий77,
извините, но создается впечатление, что Вы хотите хорошую утилиту под ключ забесплатно. Такое бывает, но редко. Сам использую данный скрипт - работает моментально. Комп он не грузит по той простой причине, что не переписывает все файлы каждую секунду, а просто добавляет строки (если я не ошибаюсь). Написано ОЧЕНЬ добротно. Посмотрел и другие скрипты. Кое-что потребовало модификации, пришлось делать через заказ. Конечно в разы дороже чем пиво, но забесплатно даже при коммунизме никто не обязан помогать делать инструмент ДЛЯ ЗАРАБАТЫВАНИЯ денег. В общем, по-моему это нормальный подход - хочешь зарабатывать, будь готов тратиться на инструмент. Иначе это не бизнес, если он не может отбить даже эти затраты.
Без обид ;).
Разработчика всячески рекомендую - его работа, безусловно, стоит денег, но оно того стоит.
Ответить | Ответить с цитатой | Цитировать
# Юрий77 18.02.2017 14:55
Вот Вы совсем не по теме встряли...
Я у Михаила покупаю скрипты уже второй год, и какие то он дорабатывал - очень доволен
Тут уточнялись возможности этого скрипта.....
о бесплатности речи не было....
Ответить | Ответить с цитатой | Цитировать
# АлексейМ 18.02.2017 15:49
упс :(
Согласен, не по теме.
Приношу Вам свои самые искренние извинения.
Ответить | Ответить с цитатой | Цитировать
# Игорь777 22.09.2017 16:03
Добрый день. У Вас указано "Программы технического анализа типа Metastock также понимают этот формат и позволяют импортировать содержащиеся в нём данные в свои базы." А они не понимают, выдает ошибку при конвертации.
Ответить | Ответить с цитатой | Цитировать
# Игорь777 22.09.2017 17:08
Нужно чтобы в таблицу подставлялся Tiker и Per через запятую. Как это сделать, что бы демка работала?
Ответить | Ответить с цитатой | Цитировать
# admin 22.09.2017 18:30
Как понимаю, вы хотите привести формируемый формат к тому, который есть программа теханализа.

Скопируйте файл в другое место, откройте его экселем и добавьте нужные вам столбцы
После чего импортируете туда, куда вам нужно
Ответить | Ответить с цитатой | Цитировать
# Игорь777 22.09.2017 18:54
Не понимает столбцы, только строки и данные через запятую. Нужно, что бы первая строка начиналась Tiker,Per,DD-MM -YYYY,hh:mm:ss, Open,High,Low,C lose,Volume; а остальные допустим VTBR,5,20-07-17 ,10:05:00 ну т.д Формат CSV понимает, только нужно добавить Tiker и Per, и онлайн котировки в Metastok пойдут.
Ответить | Ответить с цитатой | Цитировать
# admin 23.09.2017 16:38
Игорь. Я вам уже об этом написал.

Перед импортом в метасток

Скопируйте CSV файл в другое место, откройте его экселем и добавьте в листEXCEL нужные вам столбцы

после чего сохраните таблицу в файл csv и импортируйте в метасток
Ответить | Ответить с цитатой | Цитировать
# Игорь777 23.09.2017 16:50
Зачем копировать, открывать, добавлять, сохранять, импортировать. Надо включить Quik и открыть график в Метасток. Просто добавить два значения в строку Tiker и Per, т.к. СТОЛБЦЫ не видит. Пробывал всяко. Вопрос цены напишите в почту.
Ответить | Ответить с цитатой | Цитировать
# admin 23.09.2017 17:04
Дело в том, что у каждой программы свой формат CSV файла, который он сглатывает. У метастока он один, у других программ другой.

В вашем случае скорее всего неправильно настроен разделитель столбцов. Наверное, скрипт создает csv файл с разделителем точка с запятой, а вам для метастока нужна запятая. Если это так - измените в настройках скрипта разделитель полей CSV файла и заново соберите необходимую вам историю.

Если вам не хочется делать никаких манипуляций перед экспортом полученного файла в метасток, можно сделать для него готовый шаблон. Я напишу вам в почту об условиях
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий


Защитный код
Обновить