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

Этот скрипт позволяет накопить историю котировок и параметров, используя базу, находящуюся на сервера брокера 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
Если в вашей ОС настроены другие разделители, можно настроить скрипт для сохранения информации с использованием именно этих разделителей и иных форматов даты и времени:
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 свечей.
Этот и некоторые других архивы на этом сайте защищены паролями.
Пароль требуется только для тех файлов, которые необходимы для полных версий.
Файлы, требующиеся для работы демо-версий, паролем не защищены и Вы можете свободно вынуть их из архива и использовать.
Рекомендую использовать архиватор winrar или подобный для удобства работы с архивами.
Не удается скачать архив с демо-версией, пишет соединение прервано.
Также хотел бы получить на почту информацию по стоимости скрипта и возможностях оплаты.
Покапал и понял, что из числа всех моих инструментов в sih6 и rih6, текущее число на линейке внизу отражается двумя днями ранее, т.е. сегодняшняя дата - 2 дня, а при наведении на сам график интересующего параметра, высвечивается верное. Закомментировал данные инструменты по всем параметрам - ошибка пропала.
Еще не могу понять, почему то инструментах со спота график цены не может сохранится позже 20.01.2016, а вот другие параметры (число заявок на покупку и т.п.) сохраняются. Что я недонастроил в Quik или в чем может быть проблема? Как решить если это возможно?
В этом вопросе я помочь вам не смогу - обратитесь за помощью к вашему брокеру.
Если после исправления проблем терминала ошибка скрипта повторится - присылайте мне файл настроек
Подскажите пожалуйста стоимость робота?
По ссылке bot4sale.ru/.../... вы можете скачатьдемо-вер сию скрипта. Там же указано условие получения полной версии.
Средствами этого скрипта нет, нельзя.
Нужно создать несколько разных секций, в каждой из которых задать один параметр
Не подскажите, как получить более ранние свечи?
Можно попробовать поскачивать эти данные с сайта финама или алора - но надежность этих данных заставляет плакать.
Но если вы олигарх - московская биржа вам продаст все что захотите
Пароль получил - спасибо!
А можно уточнить - что имеется в виду под "Также имеются версии, экспортирующие данные напрямую в лист Excel"?
Данный excel-файл должен быть открыт или закрыт?
Если первое, то каким образом происходит обмен? DDE?
Конечно, можно выводить данные в эксель по дде, но не всегда это удобно и не всегда через экпорт дде можно получить требуемый формат данных
Поэтому приходилось писать разные скрипты, посылающие в эксель данные через ole механизм
Именно запрашивает и склеивает пропущенную историю.
Скорее вы что-то не так делаете. Что именно - сказать не могу - у меня нет информации о ваших действиях
Проверяйте настройки терминала в вопросе получения пропущенных данных. Пропущенные данные терминал должен получать, иначе да, можно возмущаться неисправностью выключателя на стене, когда напряжение отрублено во всем квартале...
- можно с помощью этот скрипта брать только данные последней свечи или последние две - три свечи? (для множества инструментов) -в реальном времени?
- записывать данные этих свечей в один файл (может на разные листы)?
- этот файл должен быть запущен? и можно в нем сразу делать вычисления?
Этот скрипт пишет данные в файл, а не в открытую книгу MS Excel.
Другое дело что этот файл можно открыть экселем и в этот момент эксель из данных файла создаст книгу в памяти компьютера и позволит с этой книгой работать.
То, о чем пишите вы -это экспорт данных из терминала в уже открытую книгу экселя, которая в памяти.
Это абсолютно реально и таких скриптов приходилось писать в разных вариантах. Но к скрипту, который лежит на сайте отношения не имеет.
выложите их - может народу понадобиться
Я пользуюсь такими скриптами, но они написаны на QPILE - потом по DDE -
вывод последней свечи (нескольких) - на множестве инструментов сильно тормозит ПК - хотя ПК не хилый..
кому-то нужно три последние цены, кому-то 4, кому-то вся доступная история. Кому-то в один лист книги, кому-то по разныи листам, в одном формате, в другом.. Кому-то в уже открытую книгу и существующий лист. Кому-то в новую книгу, кому-то нужно проверить, есть ли уже такая книга на диске и использовать ее (а иначе создать с определенными умолчаниями)
На всех угодить одним скриптом невозможно. Поэтому и не выкладываю ничего из этой серии. Когда что-то нужно конкретное - люди сообщают. Если есть что-то похожее в наличии - даю за пиво, а если нет - исполняю заказ.
pmntrade.ru/quik_quotes_exporter.html
есть похожее, но на языке ЛУА - он же вроде быстрее
Но если все устраивает и скрипт по ссылке нормально работает, зачем городить огород и лишать честного заработка его автора?
Или не все устраивает?
Эксель использую как как наглядное отображение своих расчитанных значений - (там в таблице можно гистограмму выводить в цвете - зрительно лучше воспринимается чем цифры) и тд.
Дело в том, что многие индикаторы имеют особенность перерисовывать свои значения в уже закрытых свечах. А мы эти значения уже вывели в файл.
Поэтому для правильности придется выводить значения индикатора во всех свечах на каждом тике, что во-первых, некошерно, а во-вторых у вас уже такой скрипт имеется.
Я кстати на основе Вашего скрипта - Alert уже ничего в Эксель не вывожу - все вычисления делаю в скрипте и вывожу в таблицу Аlerta - там высвечиваются нужные вычисленные значения - с установленной мной периодичностью ( в данном случае алерт использую для визуализации данных)
Вот бы в Алерте в таблице можно было бы новые столбцы делать и раскидывать данные DESCRIPTION по столбцам))))
А сколько экземпляров Алерта сразу можно запустить?
Добавлять пользовательски е столбцы, чтобы можно было использовать алертер не по назначению?
Можно и добавить. Но давайте сначала попробуем с вентилятором и веником. Совмещайте их в одно целое и присылайте мне видео, как функционирует этот симбиоз
А вот чтобы на Lua, да и в самом квике была таблица (с разными вычислениями и подсвечивалась разными цветами - такого не встречал.
Если есть похожее с удовольствием приобрету.))
Конечно есть другой способ (программы - связки) - я до этого ещё не дорос.
извините, но создается впечатление, что Вы хотите хорошую утилиту под ключ забесплатно. Такое бывает, но редко. Сам использую данный скрипт - работает моментально. Комп он не грузит по той простой причине, что не переписывает все файлы каждую секунду, а просто добавляет строки (если я не ошибаюсь). Написано ОЧЕНЬ добротно. Посмотрел и другие скрипты. Кое-что потребовало модификации, пришлось делать через заказ. Конечно в разы дороже чем пиво, но забесплатно даже при коммунизме никто не обязан помогать делать инструмент ДЛЯ ЗАРАБАТЫВАНИЯ денег. В общем, по-моему это нормальный подход - хочешь зарабатывать, будь готов тратиться на инструмент. Иначе это не бизнес, если он не может отбить даже эти затраты.
Без обид ;).
Разработчика всячески рекомендую - его работа, безусловно, стоит денег, но оно того стоит.
Я у Михаила покупаю скрипты уже второй год, и какие то он дорабатывал - очень доволен
Тут уточнялись возможности этого скрипта.....
о бесплатности речи не было....
Согласен, не по теме.
Приношу Вам свои самые искренние извинения.
Скопируйте файл в другое место, откройте его экселем и добавьте нужные вам столбцы
После чего импортируете туда, куда вам нужно
Перед импортом в метасток
Скопируйте CSV файл в другое место, откройте его экселем и добавьте в листEXCEL нужные вам столбцы
после чего сохраните таблицу в файл csv и импортируйте в метасток
В вашем случае скорее всего неправильно настроен разделитель столбцов. Наверное, скрипт создает csv файл с разделителем точка с запятой, а вам для метастока нужна запятая. Если это так - измените в настройках скрипта разделитель полей CSV файла и заново соберите необходимую вам историю.
Если вам не хочется делать никаких манипуляций перед экспортом полученного файла в метасток, можно сделать для него готовый шаблон. Я напишу вам в почту об условиях
Как приобрести Вашу программу
Вот здесь: bot4sale.ru/.../... есть номер карты, на которую Вы можете перевести средства. Количество этих средств должно соответствовать ценности программы исходя из вашего понимания справедливости.
Кстати, ссылка есть и в этой статье.
Уже как 1,5 года пользуюсь Вашим скриптом. Все ок. Но вот периодически сталкиваюсь с проблемой - данные о свече записываются только после того как квик начнет отрисовывать следующую. Казалось бы логично, и как бывший программист даже подозреваю чем это вызвано (дописывать в конец файла проще). Но вот что делать, когда уже фактически (в реальной жизни) закрытая свеча все же нужна до старта новой?
Как пример - экспортирую дневной график. Провести анализ хочу после окончания торгов, но до начала завтрашних. Правильно ли я понимаю, что пока они не начнутся, нет способа настроить скрипт чтобы он все же записал данные уже фактически закрытой свечи? Или что еще круче - может ли скрипт перезаписывать данные текущей свечи с указанной периодичностью (т.е. на примере дневной - к примеру перезаписывать ее каждый час, а когда на графике появится следующая свеча - перестать это делать)? Понимаю, что так будет медленнее, но иногда действительно надо.
В теории момент окончания текущей свечи наступает только тогда, когда появляется новая свеча. Именно этот классический алгоритм реализован в скрипте.
Практически конечно можно пробовать записывать свечу досрочно, ориентируясь на текущее время. Однако этот способ принесет массу неприятных побочных эффектов, связанных с неточностью установки локальных часов компьютера или дискретностью получения времени сервера и тому подобных вещей. При этом наряду с некоторым удобством в виде более раннего появления информации о текущей цене рынка появится очень ненулевой риск записать в файл неверные значения. Я считаю такую ситуацию неверной и поэтому в "базовой" версии скрипта (сегодня ездил по автосалонам и выбирал новую машинку) такой опции нет и не планируется.
Если очень нужно -я могу ее сделать в качестве индивидуального заказа, но все описанные проблемы вам придется принять на свой страх и риск.
Касаемо постоянного обновления информации и текущей свече -да, можно. Какой то особой нагрузки это не привнесет. Но и тут есть нюанс. Если вы желаете читать этот файл в реальном времени другой программой, вы будете в ней часто получать ошибки, связанные с чтением фрагментов файла в момент перезаписи этих фрагментов. Ваша программа должна учитывать ситуации, когда она будет читать фрагмент наполовину состоящий из старой информации и наполовину из обновленной и правильно обрабатывать такие ситуации.
Подскажите плиз. Запускаю в демо версии (7.19) Выдает ошибку, вот ЛОГ:
Экспорт котировок www.bot4sale.ru 1.70
Сборка 19.12.2017 20:43:13 s_mike
Рабочее место QUIK 7.19.0.51
24-Авг-2018 Пятница Московс кое время (лето) +0400
20:00:25.906 Подключено к БрокерКредитСер вис (91.207.78.204:15102)
20:00:25.906 [LKOH] Не определён разделитель полей CSV. Используем системную настройку
20:00:25.906 [LKOH] Класс QJSIM не обнаружен
20:00:42.656 Выполнение прервано
спасибо
Посмотрите. Скрипт вам говорит что нет такого о класса QJSIM, в котором должен находиться инструмент LKOH.
Этот класс *обычно* есть в демоквике. На боевых торгах Лукойл находится в классе TQBR. Исправьте параметр в файле .ini на правильный - и все засверкает и заискрится !)
RSS лента комментариев этой записи