Торговый робот — сборщик исторических данных из QUIK
Или как выворачивать карманы у QUIK. Как правило, я тестирую какие-то алгоритмы на исторических данных в программах теханализа. Это быстро, относительно просто и дает представление о эффективности той или иной стратегии. Вопрос доверия к результату это отдельная песня, в крайнем случае я тестирую дополнительно стратегию в экселе, или строю тестовый торговый робот в том же QUIK. Но все методы основываются что перед тестами мы имеем исторические данные нужного таймфрейма и нужной бумаги. С OHLC все просто: идем на финам и качаем то что нужно. А если нам нужны, например, значения уровней общего спроса и/или предложения? Или исторические данные по какому-то параметру из таблицы текущих параметров? Такой информации нет в сети (я не видел, по крайней мере), по этому я решил восполнить этот пробел и давно написал торгового робота, который вытаскивает эти данные из графиков QUIK. Для этого нужно построить график цены нужного инструмента и нужного таймфрейма (ТФ). Добавить туда же два (мне надо было два) графика нужных параметров, и присвоить этим графикам идентификаторы VALUE_1 и VALUE_2. В настройках робота указать в переменной INTERVAL выбранный ТФ и запустить робота. В итоге, торговый робот формирует файл C:\DATA.LOG с таким содержанием:
DATE;TIME;VALUE_1;VALUE_2
20100426;224800;399978;399978
20100426;224700;399345;399878
и т.д.
Эти данные загружаем уже в систему теханализа и используем как угодно.
Вот, например, как выглядят уровни общего спроса и предложения на графике QUIK:
Код на QPILE доступен только зарегистрированным пользователям.

Женя эти две переменные можно легче добыть, из текучей таблицы параметров, однако учитывать наиважнейшие параметры не только не имеет никакого смысла, но порой даже и вредно для кошелька, поскольку насколько большой стакан не знает ни кто и есть позыции, которые стоят по году и их не трогают. а на самом деле, я тебе писал и это аксиома, что сколько продают, столько и покупают. имеет значение только каким образом это происходит.
Евгений Reply:
июня 9, 2010 at 22:40
Привет Игорь!
Из таблтекпарам их можно получить, но только на текущий момент. Этот робот — собирает историю по этим параметрам, для анализа.
А вдруг?!
объясните зачем сравнивать NUMBER и DEEP, они же не меняют свои значения?
Мне думаю что логичней сначала вычислить дату\время начала интервала, и выполнять цикл по возрастанию времени, тогда этот код встраивается в любого робота и тестирует его на истории =)
Евгений Reply:
января 31, 2011 at 19:33
Логично!
Можно ли сделать так, чтобы на каждом шаге цикла по времени обновлялись значения таблицы? я добавил
OUTPUT=CREATE_MAP ()
OUTPUT=SET_VALUE (OUTPUT,"TIME",TIME)
DELETE_ALL_ITEMS ()
ADD_ITEM (1,OUTPUT)
в тело цикла, но нужного результата это не дало...
Евгений Reply:
февраля 7, 2011 at 10:57
Для этого нужно еще в самом низу робота сделать описание поля TIME, и внутри цикла получать само значение времени, т.е. блок «время серверное» поместить внутрь цикла.
Добрый день. Можно ли увеличить количество сохраняемых параметров? Обязательно ли им присваивать именной такие идентификаторы?
Евгений Reply:
февраля 22, 2011 at 10:26
Можно.
Необязательно.
Увеличил до шести параметров. Загрузил. Выскакивает сообщение с коротким словом END. Это потому, что еще торговля не началась?
Евгений Reply:
февраля 22, 2011 at 10:59
Вообще это сообщение появляется при завершении работы. Проверьте файлы с данными.
Файл на диске С создан,но в нем ничего, кроме оглавления
Евгений Reply:
февраля 22, 2011 at 11:06
Значит данные не собрались. ПРоверяйте соответствие идентификаторов в графиках и в функции обращения к этим графикам. Вообще рекомендую вначале запустить робота в том виде, в котором он есть. При полном понимании как он работает — уже потом редактировать.
Добрый день! Я не добавлял дополнительных параметров, но у меня тоже выдает сообщение END и ни чего не показывает. Хотя идентификаторы присвоил верно и интервал прописал в соответствии с открытым ТФ на графике. Подскажите в чем еще может быть проблема???
Евгений Reply:
декабря 4, 2011 at 22:05
Проверьте чтоб бумага была доступна в меню связь-списки.
Вообще самый быстрый способ сохранить историю в текстовом виде — правой кнопкой по линии графика — сохранить. Описанный мною способ использовать если не вся нужная информация сохраняется, либо график состоит из нескольких линий, например если трейбется история индикатора многолинейного.
Попробовал робота, всё работает. Спасибо большое, очень помогает в изучении QUIK на примере реализации простых задач. Есть однако проблема при экспорте — у меня в квике доступны только ~2000 последних свечек, что на минутном и 15-минутном таймфрейме дает очень малый период в днях — для исследований маловато, как мне кажется.
Пробовал выставлять в настройках графика опцию с количеством свечек больше двух тысяч, но результата нет — показывается примерно те же 2000. Этот параметр как-то настраивается на клиенте или он приходит от брокера/захаржкожен в QUIK? Можно ли как-то вообще (необязательно через QPILE) из квика выгнать достоверные данные за длительный период (скажем, 15-минутки за полгода-год)?
На FINAM данные недостоверные — одинаковые запросы выдают разные данные + некоторые свечки потеряны. Поэтому надежда только на себя...
Евгений Reply:
декабря 24, 2011 at 10:06
Привет.
Это скорее всего ограничение квика или брокера по доступности свечей.