Главная > QUIK, Полезные программы для QUIK, Торговый робот > Торговый робот — сборщик исторических данных из QUIK

Торговый робот — сборщик исторических данных из QUIK

SborИли как выворачивать карманы у 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:

График QUIK

График QUIK

Код на QPILE доступен только зарегистрированным пользователям.


  1. 9 Июнь 2010 в 18:03 | #1

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

    Евгений Reply:

    Привет Игорь!

    Из таблтекпарам их можно получить, но только на текущий момент. Этот робот — собирает историю по этим параметрам, для анализа.

    А вдруг?! :)

  2. dalbit
    31 Январь 2011 в 16:27 | #2

    объясните зачем сравнивать NUMBER и DEEP, они же не меняют свои значения?

    Мне думаю что логичней сначала вычислить дату\время начала интервала, и выполнять цикл по возрастанию времени, тогда этот код встраивается в любого робота и тестирует его на истории =)

    Евгений Reply:

    Логично!

  3. dalbit
    7 Февраль 2011 в 10:31 | #3

    Можно ли сделать так, чтобы на каждом шаге цикла по времени обновлялись значения таблицы? я добавил

    OUTPUT=CREATE_MAP ()

    OUTPUT=SET_VALUE (OUTPUT,"TIME",TIME)

    DELETE_ALL_ITEMS ()

    ADD_ITEM (1,OUTPUT)

    в тело цикла, но нужного результата это не дало...

    Евгений Reply:

    Для этого нужно еще в самом низу робота сделать описание поля TIME, и внутри цикла получать само значение времени, т.е. блок «время серверное» поместить внутрь цикла.

  4. strelec
    22 Февраль 2011 в 09:23 | #4

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

    Евгений Reply:

    Можно.

    Необязательно.

  5. strelec
    22 Февраль 2011 в 10:56 | #5

    Увеличил до шести параметров. Загрузил. Выскакивает сообщение с коротким словом END. Это потому, что еще торговля не началась?

    Евгений Reply:

    Вообще это сообщение появляется при завершении работы. Проверьте файлы с данными.

  6. strelec
    22 Февраль 2011 в 11:04 | #6

    Файл на диске С создан,но в нем ничего, кроме оглавления

    Евгений Reply:

    Значит данные не собрались. ПРоверяйте соответствие идентификаторов в графиках и в функции обращения к этим графикам. Вообще рекомендую вначале запустить робота в том виде, в котором он есть. При полном понимании как он работает — уже потом редактировать.

  7. Maxwell1234567
    1 Декабрь 2011 в 19:31 | #7

    Добрый день! Я не добавлял дополнительных параметров, но у меня тоже выдает сообщение END и ни чего не показывает. Хотя идентификаторы присвоил верно и интервал прописал в соответствии с открытым ТФ на графике. Подскажите в чем еще может быть проблема???

    Евгений Reply:

    Проверьте чтоб бумага была доступна в меню связь-списки.

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

  8. uncle_ko
    23 Декабрь 2011 в 12:57 | #8

    Попробовал робота, всё работает. Спасибо большое, очень помогает в изучении QUIK на примере реализации простых задач. Есть однако проблема при экспорте — у меня в квике доступны только ~2000 последних свечек, что на минутном и 15-минутном таймфрейме дает очень малый период в днях — для исследований маловато, как мне кажется.

    Пробовал выставлять в настройках графика опцию с количеством свечек больше двух тысяч, но результата нет — показывается примерно те же 2000. Этот параметр как-то настраивается на клиенте или он приходит от брокера/захаржкожен в QUIK? Можно ли как-то вообще (необязательно через QPILE) из квика выгнать достоверные данные за длительный период (скажем, 15-минутки за полгода-год)?

    На FINAM данные недостоверные — одинаковые запросы выдают разные данные + некоторые свечки потеряны. Поэтому надежда только на себя...

    Евгений Reply:

    Привет.

    Это скорее всего ограничение квика или брокера по доступности свечей.

Необходимо войти на сайт, чтобы написать комментарий.