Автор: Николай Камынин

В настоящее время все большую популярность находят автоматы для торговли на бирже.

Широко известный торговый терминал QUIK обладает большими возможностями для ручной торговли, но имеет существенные ограничения для разработки торговых роботов.

Встроенный язык QPILE не имеет средств для связи с пользователем, не позволяет подключать внешние DLL библиотеки.

Однако, используя совместно с QPILE бесплатное программное обеспечение AutoIt, можно существенно расширить возможности автоматической торговли на базе торгового терминала  QUIK.

Конечно, можно передать информацию из таблиц QUIK во внешнюю программу технического анализа через DDE или ODBC,  и на основе программы технического анализа разрабатывать торговых роботов.

Но не стоит сбрасывать со счетов возможность создания робота на основе QPILE.

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

Исполнение программы на QPILE осуществляется в режиме интерпретации, что снижает быстродействие по сравнению с DLL библиотеками.

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

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

Так, при отсутствии торговли , на считывание параметров 2500 свечей  и создания 7 коллекций параметров свечей и расчет дневных параметров  ушло 15 секунд.

Чтение информации из коллекций выполняется примерно в 5 раз быстрее.

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

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

Коллекция позволяет сохранить 8192 свечи по 7 значений объем примерно 300 Кбайт.

Кроме того, удалось реализовать алгоритм автоматического контроля интервала графика.

Программа сама определяет момент изменения временного интервала на графике и осуществляет обновление истории в коллекциях.

Далее, удалось решить проблему управления интервалом графиков из программы на QPILE.

Для этого реализован интерфейс связи программы на QPILE с AutoIt.

Если, для работы робота требуются графики цены или индикаторов с различными временными интервалами, то программа на QPILE посылает запрос в AutoIt и тот устанавливает требуемый временной интервал на графике.

Таким образом, совместное использование QPILE и AutoIt позволяет на только автоматизировать запуск торгового терминала ( http://www.kamynin.ru/archives/1355 ) , но и обеспечивает управление графической информацией в программах автоматической торговли на базе QPILE в QUIK.

Кроме того, расчеты и тестовые испытания показывают, что на QPILE можно построить торговую систему для одновременной торговли не более , чем по 20 инструментам.

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

Успехов.

Tags: , ,

Автор: Николай Камынин

При разработке программ для автоматической торговли в QUIK на языке QPILE возникает задача определения момента времени появления новой свечи и получение значений предыдущей.

Обычно , именно в момент закрытия свечи и открытия новой и принимается решение о выставлении или снятии заявки.

Привожу фрагмент программы показывающий, как определить в программе данный момент для графика с ИДЕНТИФИКАТОРом   RIZO:

~~~~~~~~~~~~~~~~~~~~~~

NEW_GLOBAL(«CANDLE_OLD»,»   «) ‘предыдущая свеча

FLAG=0  ‘ флаг новой свечи

X_=GET_VALUE(GET_DATETIME (),»DATETIME»)

Date=SUBSTR (X_,6,4) & SUBSTR (X_, 3,2) & SUBSTR (X_, 0,2) ‘текущая дата

Time=SUBSTR (X_,11,2) & SUBSTR (X_, 14,2) & SUBSTR (X_, 17,2) ‘текущее время

CANDLE = (GET_CANDLE_EX («RIZO», Date, Time)

IF (GET_VALUE (CANDLE,»TIME»)-GET_VALUE (CANDLE_OLD,»TIME») <>0)  ‘свеча новая

FLAG=1     ‘ флаг равен 1 в момент появления новой свечи на графике

END IF

‘ добавить в конце программы

IF (FLAG=1)  ‘запоминаем новую свечу

CANDLE_OLD= CANDLE

END IF

~~~~~~~~~~~~~~~~~~~~~~~~

Кроме того на графике выберите “параметры графика”   — можно правой кнопкой мышки

И в  закладке ДОПОЛНИТЕЛЬНО в окне ИДЕНТИФИКАТОР запишите   RIZO

На основе данного фрагмента не трудно  написать программу получения свечи по любому номеру, считая от последней.

Внимание: В тексте программы использованы русские кавычки »

при копировании в QPILE замените их на обычные.

Успехов в учебе

Tags: , , ,