Торговый робот для quik своими руками

Добавил пользователь Morpheus
Обновлено: 05.10.2024

robot

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

p, blockquote 1,0,0,0,0 -->

p, blockquote 2,0,0,0,0 -->

Рассматриваемая торговая площадка активно используется в странах Российской Федерации и Украины для предоставления возможности торговли валютой в национальных биржах.

p, blockquote 3,0,1,0,0 -->

Преимущества применения сервиса

  1. В предоставлении прямого доступа к электронным торгам.
  2. В получении информации о котировках цен торговых активов в режиме реального времени.
  3. В графическом изображении изменения ценовых котировок.
  4. В возможности автоматизации торговли при помощи советников.
  5. В получении дополнительной информации, предоставляемой в виде бегущих лент о выходе новостей и о решениях заседаний правительства и глав центральных банков.
  6. В предоставлении возможности общения с администратором и другими пользователями системы.
  7. В автоматическом обновлении версии программного обеспечения.

Зачем нужны торговые роботы?

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

p, blockquote 4,0,0,0,0 -->

Использование роботов в торговле имеет ряд преимуществ:

  1. Участвовать в торгах может даже новичок, не владеющий теоретической базой о работе на финансовых рынках.
  2. Моментальная скорость реакции. Сигнал поступил – программа быстро распоряжается об открытии ордера, фиксации прибыли или ограничения убытка.
  3. Обеспечивается работа без лишних эмоциональных факторов, таких как страх и жадность.
  4. Беспрекословное следование торговой стратегии.
  5. Отсутствие усталости.
  6. Отслеживание роботом одновременно несколько торговых активов на автоматическом уровне.

Несмотря на множество преимуществ, при работе с советниками, пользователя также подстерегает множество неприятных неожиданностей:

Какие торговые роботы для Quik существуют сегодня?

Для сервиса Quik на сегодняшний день создано достаточное количество торговых роботов с самыми разнонаправленными принципами работы:

  1. BOT Trailing-stop Acceleration предназначен для совершения рискованных сделок. Торгует в агрессивном стиле
  2. BOT Smart SAR относится к трендовым индикаторам. Он легко определяет начало смены рыночной тенденции и осуществляет вход в рынок в самом начале тренда, охватывая, буквально, все его движение.
  3. BOT Level Breakout также трендовый индикатор, однако, он отличается от предыдущего своей большей прогрессивностью по причине его возможности определения волантильного состояния цены. Данный робот не открывает сделки, если рынок низковолантилен.

Особенности применения торговых роботов и выбор робота

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

Особенности применения торговых роботов:

robot

  1. Торговый робот работает по четкому алгоритму, изменение которого не может осуществиться ни при каких условиях.
  2. Обладает скоростной реакцией на полученный сигнал к входу или выходу из рынка.
  3. Робот не подвержен психологическим воздействиям. Если человек сомневается открывать или не открывать сделку, то робот поступает в соответствии с заложенной в нем программой. Если человек сомневается закрывать или нет убыточную сделку, то робот просто ее закрывает, если соблюдаются программные условия.
  4. Невозможно купить робота, чтобы он работал прибыльно все время. Прибыльный робот – это тот, который трейдер создал самостоятельно, на основе своей личной торговой стратегии.
  5. Необходимо понимать стратегию торговли, по которой торгует советник. Несмотря на его самостоятельность и автоматизацию, контроль все равно нужен.
  6. Главная задача при сотрудничестве с роботом – умет им управлять, знать досконально все его настройки.
  7. В случае, выключения электроэнергии, интернета, открытая сделка не будет закрытой и может принести убытки.

При выборе робота необходимо руководствоваться:

  • Временным периодом, с которым планируется работать,
  • Количеством торговых активов
  • Частоту совершения сделок
  • Личные предпочтения касательно какой – либо стратегии.

Классификация стратегий

В зависимости от степени участия пользователя в работе торгового работа, они подразделяются на несколько типов:

  • полностью автоматизированные,
  • требующие подтверждение действия пользователем.

В зависимости от трендового стиля работы роботы бывают:

Советники подразделяются в зависимости от вида анализа, заложенного в их программе для принятия решения о входе в рынок и выходе из него:

robo-up

  1. Индикаторные. У таких торговых роботов все сигналы основаны на значениях и сигналах, полученных при помощи различных индикаторов.
    • Советники, работающие с трендовыми индикаторами.
    • Торговые роботы, принимающие во внимание сигналы осцилляторов.
    • Роботы, торгующие по объемным индикаторам.
    • Роботы, торгующие по стандартным индикаторам торгового терминала.
    • Роботы, торгующие по авторским индикаторам
  2. Безиндикаторные. В эту категорию относятся роботы, торгующие:
    • По стратегии Мартингейла.
    • По сеточной системе.
    • По локирующей системе.
    • По графическому анализу.
    • По свечному анализу.
    • По волнам Вульфа.


[ Евгений Ерошкин, частный инвестор ]

На чем пишем?

Написать автомат для торговли можно практически на любом современном языке программирования, самое главное – установить обмен данными между терминалом (или шлюзом биржи) и автоматизированной торговой системой. А это требует достаточно серьезных навыков программирования. Самый доступный путь – написание робота на языке Qpile.

С чего начать?

Стратегия и инструмент

Любой робот работает по заранее заданному алгоритму, который является логическим воплощением торговой стратегии. Cтратегия является самой важной частью любого автомата (хотя по объему может занимать небольшую часть кода). Ее выбор – основополагающий этап для построения любой торговой системы, именно она делает одну систему прибыльной, а другую убыточной при прочих равных условиях. Вопросу выбора стратегии посвящено немало книг [2,3]. Целью данного цикла статей является процесс написания робота, который самостоятельно принимает решения о покупке/продаже, выставляет заявки и проверяет их исполнение (но не гарантируется, что он обязательно окажется прибыльным). Какой алгоритм выбрать для торговой системы, каждый трейдер решает сугубо индивидуально. Мы же рассмотрим одну из самых простых стратегий – торговлю в канале. Ее алгоритм прост: если цена ниже определенного уровня, покупаем, а если выше – продаем. Если котировки выходят за пределы канала в невыгодном для нас направлении, фиксируем убытки.

В качестве рабочего инструмента используем фьючерс на обыкновенные акции Сбербанка. На момент написания статьи ближайшими контрактами были SRU1 (исполнение 14 сентября 2011 года) и SRZ1 (исполнение 14 декабря). Этот инструмент хорош тем, что характеризуется высокой ликвидностью и небольшим размером гарантийного обеспечения (1700 рублей на момент написания статьи). То есть, если мы будем торговать одним контрактом и закрывать позицию в случае убытка, даже в худшем случае это не приведет к существенным финансовым потерям. Но не следует забывать, что фьючерс имеет ограниченный срок жизни и вхождение в позицию незадолго до исполнения увеличивает риск возможных потерь. Для покупки и продажи выберем уровни 8500 и 9100 рублей (см. рис. 1).


Реализовать стратегию торговли в канале можно двумя способами. Первый подразумевает отслеживание уровня цены и выставление заявки при достижении цели. Также можно сразу размещать ордера на уровнях, независимо от текущей цены, и затем следить за исполнением. Первый способ применим только для инструментов, цены которых изменяются не слишком быстро, в противном случае, при резких движениях можно просто не успеть. Второй метод подходит для всех активов, однако при этом надо все время следить за исполнением заявок, при необходимости их переставлять или же во- все снимать (например, при динамически изменяющихся уровнях покупки/продажи). Первый подход более прост в реализации, поэтому пока остановимся на нем. А бороться с быстрым изменением цены и неисполнением заявок будем заведомо более выгодными для рынка ценами, то есть в них будет изначально закладываться проскальзывание.

Рис. 2 Пункты меню для загрузки и запуска программ Qpile


Рис. 3 Программа, выводящая текущее время сервера


Рис. 4 Вывод параметров инструмента в таблицу



' Если цена спроса выше уровня HI, надо продавать

IF PriceBid >= HiLevel SERVER_TIME ="SELL"

' Если цена спроса ниже уровня LOW, надо покупать

IF PriceOffer Понятия:

Qpile (ProgrammableInterfaceandLogicEnvironment) – бейсикоподобный язык, который имеет в своемарсенале операторы для получения данныхиз терминала Quik и отправки заявок.

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

Торговая сессия – период времени, в течение которого проводятся торги на бирже.


Добрый день! Хочу понять как можно создавать роботов на LUA. для QUIK Но не понятно с чего начать . Скачал кучу Visual Studio 2015 , установил, так же установил Notepad++. установил LUA 5.1 а что дальше не знаю, нашел учебник для начинающих, но там не понятно где пишут и непонятно где это потом должно выводится. Может направит кто меня в нужное русло?

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Научиться создавать роботов в Квике на LUA: 31 комментарий

Здравствуйте Дмитрий!
Нужна ваша помощь, не могли бы вы написать мне на почту?

Подскажите пожалуйста, вот я, понабрав ото всюду по-немножку, сделала вроде как работающий скрипт на QLua :-). Ну банальная мтс - если цена пробивает скользящую среднюю сверху - покупаем, и наоборот. Еще программа должна создавать стоп-лоссы, передвигать их. Заявки вроде отправляет как надо. Вопрос в следующем, никак не могу понять реализовано ли в Quik тестирование стратегии на исторических данных? В идеале хотелось бы получить отчет об эффективности МТС: прибыльность, риск и тд, так как это моя дипломная работа :-).
Подскажите, пожалуйста, есть такой функционал в Quik?
P.S. у меня сейчас вообще стоит Quik Junior с демо-доступом от финама.

Здравствуйте. Вы молодец 🙂 Но, к сожалению, в QUIK нет возможности тестирования на исторических данных. Может быть Вам в metatrader сделать эту работу, или нужен именно QUIK ? Или можете, например, в TSLab создать такой же алгоритм из кубиков, протестировать его на истории и использовать этот отчет. Есть, конечно, вариант самостоятельно сделать виртуальное тестирование на истории в QUIK и вычислить так нужные показатели, но это, наверное, не самый простой вариант, тем более, что в QUIK только 3000 свечей подгружается с сервера, остальные только если не выключать терминал и ждать, когда накопятся 🙂

Большое Вам спасибо!
А у Вас на сайте нет случайно скрипта для виртуального тестирования в Quik, также прекрасно разобранного как все остальные? 🙂

Спасибо, конечно, за комплимент 🙂 Но, к сожалению, такого скрипта у меня нет.

Как у Вас дипломная работа называется, если не секрет?

Жаль, в любом случае, спасибо за информацию)
давайте я Вам напишу на почту лучше, а то вдруг меня потом выследят, что не очень-то самостоятельная работа получается 🙂 🙂 🙂

Я Вам на почту написал со своего личного почтового ящика, пишите на тот адрес, потому что на почте хостинга сайта сейчас идут какие-то аварийно-восстановительные работы и она не работает уже 2-й день, надеюсь скоро все восстановят.

Давайте вместе с Вами создадим на данном сайте курс для начинающих! Как Вам такая идея?

Коды (роботы) и стратегии опционные? Я за

Я имел в виду курс для новичков, которые вообще QLua первый раз видят 🙂

Да, это было бы здорово. Как начинать, куда нажимать, к чему подключать. Когда появится хотя бы мало мальское понятие, появятся и стратегии и вопросы и решения. Если у Вас возникнет желание помочь нам (тем кто "которые вообще QLua первый раз видят :)" ) в первых шагах изучения, буду премного благодарен и не я один.

Было озвучено предложение: "Давайте вместе с Вами создадим на данном сайте курс для начинающих", Вы хотите поучаствовать в создании?

Хочу, но в силу своих скромных способностей))) Можно попробовать, но к сожалению не знаю буду ли полезен.

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

Доброго времени! Ваша идея про создание курса для начинающих еще актуальна.

Добрый вечер! Ну, в принципе, да, только времени свободного катастрофически не хватает, а Вы решили как-то поучаствовать?

Я готов всячески принимать участие, только нет навыков в программировании.

и что конкретно от меня требуется.

Честно говоря, не знаю, что Вам сказать, мне нужно как-то время выкроить, чтобы начать создавать этот курс, а я сейчас проект большой делаю, по завершении которого, навыки программирования не понадобятся для создания скриптов на QLua. Будет нужно только понимание алгоритмов и умение их создавать из блоков, т.е. будет конструктор роботов из функциональных, визуальных блоков, только в отличии от существующих решений в результате будут получатся не роботы, которые могут работать только на определенной платформе, а обычные скрипты QLua, которые можно будет запускать в терминале QUIK. Но первым этапом я сделаю и запущу именно редактор кода с полной поддержкой QLua синтаксиса, с подсказками, автозавершением кода и т.п. И если Вы захотите уже на этом этапе начать использовать проект, то навыки программирования все-таки понадобятся 🙂

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

Хотелось бы конечно с самых азов. Но для начала желательно было бы узнать от знающего что, куда и в чем. Если не сложно, можно написать пост, в котором конкретно расписано по пунктам где писать код скрипта, синтаксис и т.д.
п.с. Может я конечно слеповат (прошу прощения сразу). Если есть что то похожее, то тыкните лицом в это как говориться.

О том, что такое переменные, арифметические операции, операторы сравнения, условные операторы, циклы и функции на данном сайте нет информации, т.к. эта информация касается всех языков программирования, а сайт о QLua.

со всеми особенностями синтакса QLua можно ознакомиться в разделе меню "QLua(Lua) основы"

и, вобще, все пункты меню названы по принципу связи, т.е., например, в пункте "QUIK + QLua(Lua)" находится информация о взаимосвязях скрипта QLua и терминала QUIK.

Спасибо за подсказку, буду изучать.

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

Особого внимания заслуживает раздел "QLua(Lua основы)" -> "ФУНКЦИИ ОБРАТНОГО ВЫЗОВА, ВСТРОЕННЫЕ В QLUA", т.к. вся работа с терминалом строится на них, в данном разделе так же есть описания и примеры использования.

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

Если что-то будет не получаться, задавайте вопросы, я Вас быстрее в нужное русло направлю.

Решил еще пример использования сайта привести 🙂
Например, стоит у Вас задача: "Как в скрипте получить данные с графика", вы рассуждайте следующим образом:
Между какими элементами взаимосвязь? С одной стороны скрипт QLua (данные нужно получить в него), с другой стороны терминал QUIK (данные нужно получить из него, т.к. график в нем), значит первоначальный раздел меню "QUIK + QLua(Lua)", открываете его, и видите в нем пункт "Обмен данными", открываете его и видите в нем решение Вашей задачи, пункт: "ПОЛУЧЕНИЕ В QLUA(LUA) ДАННЫХ ИЗ ГРАФИКОВ И ИНДИКАТОРОВ"

Или, например, Вы на знаете как в QLua работать с массивами, Вы снова рассуждаете, массивы это что? Чисто скрипт, т.к. массивы не имеют никакого отношения к терминалу, значит раскрываете раздел меню "QLua(Lua) основы" и ищите там в названии пунктов слово "массив", находите пункт "ПЕРЕМЕННЫЕ, МАССИВЫ И ФУНКЦИИ В QLUA (LUA)"


Как установить робота в QUIK

Торговые роботы устанавливаеются и работают в системе интернет-трейдинга QUIK. Для запуска робота необходимо проделать ряд стандартных действий. Ниже по шагам описывается стандартный порядок установки и запуcка робота, который был написан мной.

Обычно Ваш робот состоит из двух основных частей - портфеля QUIK (файл с расширением .QPL) и настроек (файл с расширением .INI). Первый - это исполняемый код робота, во втором указываются настройки, такие как название инструментов, которыми Вы будете торговать, Ваш код в торговой системе и так далее. Допустим, Вы получили робот, состоящий из двух файлов - scalpRI.qpl и scalpRI.ini

Создайте каталог, котором будут находиться файлы робота. Допустим, это будет с:\robot. Поместите все полученные Вами файлы в этот каталог.

В последнее время все роботы, написанные на qpile я отдаю вместе с конфигаратором. Конфигуратор - это программа, позволяющая удобным образом настраивать параметры робота. Если вы получили такой конфигуратор, просто запустите его. Если у Вас конфигуратора нет, Вам придется делать настройки самому, используя текстовый редактор. Далее изменённым цветом выделены те действия, которые необходимо сделать за конфигуратор, если его нет и пропустить, если конфигуратор у вас имеется.

Настройте все необходимые Вам параметры в .ini файле. Это обычный текстовый файл, который можно отредактировать программой блокнот (notepad.exe), входящем в стандартную поставку Windows. Не стоит использовать текстовые редакторы типа MS Word. Формат задания параметров очень прост и интуитивен, почитать подробнее можно в статье Настройка параметров в .INI файле

После того как все параметры настроены, портфелю нужно указать, где находится файл с параметрами, чтобы он мог их получить. Для этого откройте блокностом файл портфеля (.QPL) и где-то в 7-8 строке Вы увидите что-то типа следующего:


Это тот путь, который был на моём компьютере. У Вас этот путь другой, поэтому исправьте эту строку, указав тот путь, по которому находится .INI файл у Вас.


Больше ничего не изменяйте. И, конечно, сохраните .QPL файл. Все готово к запуску портфеля.

Для запуска торгового робота запустите QUIK и выберите пункт меню "Таблицы / Портфели / Задать портфель" или нажмите Ctrl+F10.




После выполнения локальной загрузки нажмите кнопку "Выход".

Теперь установим период расчета робота. Выбираем в меню QUIK пункт "Таблицы / Портфели / Доступные портфели" (или Ctrl+F11). Выбираем наш портфель слева в верху (если он не один) и устанавливаем период расчета, равный 1 секунде


На этом загрузка робота в систему QUIK завершена. Теперь последнее действие - это собственно старт портфеля/ Выберите пункт меню "Таблицы - Портфели - Просмотр портфеля" или нажмите (или Ctrl-F12)

Опять выбираем наш портфель в списке, нажимаем "Добавить все" (потом можно будет выбрать только нужные Вам колонки) и нажимаем кнопку "Да".

Читайте также: