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

Этот скрипт позволяет накопить историю котировок и параметров, используя базу, находящуюся на сервере вашего брокера QUIK.
В терминале QUIK в процессе работы доступна не вся история инструмента. На каждое утро терминал получает примерно 3000 свечей предыдущей истории и пополняет ее новыми, формирующимися в течение торгового дня. На следующее утро количество доступных в терминале свечей снова уменьшается до 3000 и снова идет пополнение новыми возникающими свечами.
Что делать, если необходимо накопить больший объём информации?
Придётся собирать ее на своём компьютере. Скрипт как раз для этого и предназначен.
Что он делает?
- Скрипт создаёт базы котировок по произвольному количеству инструментов в формате CSV
- Работает с любыми инструментами (акции, фьючерсы и т.д.)
- Кроме котировок умеет создавать базы по любым параметрам инструментов (например, лучший бид или количество заявок на продажу)
- Запрашивает пропущенную историю с сервера брокера
- Дописывает архивы в реальном времени
- Все записи всегда отсортированы по возрастанию времени
Таким образом, нет насущной необходимости держать терминал постоянно включённым во время торгов. Достаточно подключаться к серверу брокера время от времени - и пропущенная информация будет запрошена и корректно внесена в базу. Разумеется, перерывы не должны быть уж очень большими, чтобы брокер все-таки располагал этой требуемой историей. На результате работы скрипта не отобразятся сбои в питании, пропадание интернета - при следующем подключении к брокеру скрипт запросит у сервера пропущенные данные и аккуратно их склеит с уже имеющимися.
Скрипт создаёт файлы стандартного формата csv, который является родным для Excel, OpenOffice и еще ряда распространенных программ. Программы технического анализа типа Metastock или Amibroker также понимают этот формат и позволяют импортировать содержащиеся в нём данные в свои базы.
Скрипт обновляет данные в файлах в реальном времени. Создаваемые CSV файлы создаются в разделяемом режиме. Это означает, что параллельно с накоплением данных в самом 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
По умолчанию разделители и формат данных определяется региональными настройками вашей операционной системы Windows. При необходимости можно настроить скрипт для сохранения информации с использованием других разделителей и иных форматов чисел, даты и времени:
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
Можно настроить состав и порядок столбцов в создаваемом csv файле.
Скачать демонстрационную версию скрипта можно по этой ссылке.
Скрипт можно использовать в качестве простейшего экспорта котировок во внешнюю программу. Формат CSV является универсальным, поэтому его легко экспортировать в базу данных типа SQL или любую другую.
Логика работы скрипта:
В обычном режиме свеча записывается в CSV файл в момент, когда проходит первая сделка в следующем интервале. Именно в этот момент свеча считается закрытой и начинается формирование новой свечи. Для всех свечей внутри для это удобно и единственно правильно за исключением последней свечи торгового дня.
Следующая за ней свеча будет формироваться только завтра (в начале следующего торгового дня). Поэтому до начала завтрашних торгов последняя свеча сегодняшнего дня считается незакрытой, хотя она по факту уже полностью сформирована. Бывают случаи, когда откладывать назавтра запись в файл последней свечи дня неудобно. Например, отсутствие в CSV файле информации о последней свече затрудняет анализ торгового дня после завершения торгов.
Чтобы избежать этого неудобства, перед началом этого послеторгового анализа можно принудительно вывести последнюю незаписанную свечу в файл. Клик мышкой в столбце "Время последней записи" вызовет диалог принудительной записи текущей свечи в файл. Если торговая сессия по инструменту еще идёт, то записать в файл данные о текущей свече не получится с целью сохранения корректности данных в csv файле.
Если мышкой нажать в ячейку столбца с именем создаваемого файла, он откроется на экране. Не пытайтесь что-либо записывать в этот файл, его структура повредится. Если вы открываете файл при помощи Microsoft Excel, он будет открыт в режиме только чтения.
Нажатие на клавиатуре клавиши F12 (можно указать другую клавишу в файле настроек) приводит к появлению экранного меню со списком служебных действий.
Update 28.03.2017
В версии 7.10 рабочего места Quik количество свечей в локальном хранилище увеличено до 65000. Однако при перезаказе архивов графиков накопленная история графиков очищается, и рабочее место снова получает с сервера QUIK лишь 3000 свечей.
