Автозапуск QUIK

Рубрика [ Автоматизация ]

Не все знают, что QUIK умеет восстанавливать связь автоматически при обрыве соединения. А ведь это, возможно, самая необходимая функция терминала. Особенно, когда за вас торгует механическая торговая система, а вас нет рядом.

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

Восстановление связи

Важным остаётся вопрос автозапуска самого терминала QUIK.

К сожалению, невозможно запустить терминал из командной строки с параметрами типа -login, -password. Задача сводилась бы к созданию простого ярлыка и помещению его в Автозапуск или Шедулер, чтобы первый запуск состоялся без нашей помощи.
Всё ещё кто-то должен вводить Логин и Пароль.

На счастье автоматизаторов существует утилита AutoHotkey, способная запускать приложения и эмулировать нажатия клавиш. А это как раз то, что нам всем нужно.

Идём на официальный сайт (здесь по-русски), скачиваем программу, устанавливаем и начинаем писать скрипт автозапуска терминала QUIK.

Для начала создадим файл с расширением .ahk, например quik.ahk.
Запишем и сохраним несколько строк.

Автозапуск QUIK

Что делаем.
1. Запускаем окно командной строки cmd.exe, путь с нашим терминалом QUIK.
2. Ждем 3 секунды. Можно не ждать. Чисто для визуализации процесса.
3. Запускаем терминал QUIK. Точнее сказать, утилита сама наберёт в командной строке info.exe и нажмет Enter.

Эти три строки, как будто бы, можно заменить всего одной:
Run, "C:\quik\info.exe"
Но лично у меня Квик в этом случае загружается нулевой, т.е. без всех таблиц и загруженных до этого роботов. Не знаю с чем это связано, поэтому запускаю терминал из командной строки.

4. Ждем 60 секунд пока загружается Квик.
5. Активируем окно для ввода Логина и Пароля. Вдруг оно стало неактивным во время загрузки.
6. Вводим Логин (Имя пользователя), жмём Tab (перескакиваем на следующую строку).
7. Вводим Пароль, жмём Enter.

Понятно, что пункты 6 и 7 можно объединить в один:
Send Login{Tab}Password{Enter}

Теперь при запуске этого скрипта будет происходить запуск терминала QUIK и ввод Логина/Пароля без вашего участия.

Если вы способны самостоятельно запустить терминал, то первые три строки вообще не нужны. Программе просто останется ввести за вас Логин и Пароль.

Теперь осталось поместить наш скрипт в Шедулер (Scheduler Tasks, Диспетчер задач), чтобы он запускался в необходимое для нас время перед открытием рынка. Как это сделать можно поискать в сети.

Есть два пути запуска скрипта.
Первый - скомпилировать в исполняемый exe-файл с помощью программки Ahk2Exe.exe (находится в папке Compiler).
Второй - создать ярлык и запускать его.

Вот и все телодвижения для создания автоматизированного запуска терминала QUIK.

Скачать скрипт автозапуска QUIK.

Всем бесперебойной работы!


27 комментариев для “Автозапуск QUIK”

  • Albert
    21 Сентябрь, 2009, 18:42

    К сожалению, это не сработает, если квик надо запускать под другим пользователем, не тем, который сейчас неактивен :(

  • Макс
    21 Сентябрь, 2009, 20:51

    Зато мне подойдет :) Я как раз на работу ухожу в 8. В это время серваки квика ещё выключены...

  • Lex
    23 Сентябрь, 2009, 15:15

    А что, простите делать, если связь "прерывается" без явного разъединения?
    То есть, связь установлена, но все застыло, при чем на глухо..
    Как это лечить?
    Пока я просто в ручную разрываю соединение, выбираю другой сервер и заново устанавливаю соединение... и все снова работает.

    но по сути от компа не отойти... такой вот бред!

  • Иван
    23 Сентябрь, 2009, 16:34

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

  • Сергей из Чебоксар
    24 Сентябрь, 2009, 12:53

    Вот еще 1 скрипт. С ним квик будет постоянно пытаться соединиться с сервером.

    path = "D:\QUIK\info.exe"
    login = "логин"
    pass = "пароль"
    set WshShell = WScript.CreateObject("WScript.Shell")
    Set quik = WshShell.Exec(path)
    Do Until Dummy = true
    WScript.Sleep 1000
    ' просто останов, т.к. в VBScript нету DoEvents
    Loop
    Call Logon
    Function Dummy
    Dummy = false
    If WshShell.AppActivate("Идентификация пользователя") then
    Dummy = True
    Exit Function
    End If
    End Function
    Sub Logon
    WshShell.SendKeys login
    WshShell.SendKeys "{TAB}"
    WScript.Sleep 100
    WshShell.SendKeys pass
    WshShell.SendKeys "{Enter}"
    End Sub

  • Сергей из Чебоксар
    24 Сентябрь, 2009, 12:57

    Свою новую проблему я описал в соседней теме
    http://www.selftrade.ru/automatization/perevodim-strelki-u-robotov/#comment-752

    Сможет ли утилита AutoHotkey сама запускать портфель и откючать текущий? То бишь организовать автонажатие клавиш CTRL+F12, Enter (запустить портфель)
    И Esc, CTRL+F12, Down, Enter. (Закрыть текущее окно портфеля, запустить портфель, в списке на строчку ниже)

  • Сергей из Чебоксар
    24 Сентябрь, 2009, 14:51

    Движок портала изменил кавычки. Поменяйте их у себя в блокноте на " (те что над цифрой 2) и сохраните файл в формате .vbs

  • Иван
    24 Сентябрь, 2009, 21:30

    Проблема с кавычками решена.
    Скрипт из под чего запускать?

  • Сергей из Чебоксар
    24 Сентябрь, 2009, 22:12

    Закинуть в блокнот. Изменить первые три строки под себя и сохранить в формате .vbs
    Для надежности закидываем полученный файл в папку с квиком. 2 клика по нему и вуаля!!!
    Я на рабочий стол вынес ссылку на файл с криптом. Так даже возни меньше, не надо каждый раз самому вводить свой логин и пароль.

  • 28 Сентябрь, 2009, 20:02

    Сайт отличный. Вам бы награду за него или орден почета. 😉

  • я
    28 Сентябрь, 2009, 22:11

    я просто отметил "восстанавливать связь автоматически"
    при этом терминал не закрываем никогда и пк отправляем или в ждущий или в спящий режимы

    все

    терминал обавыет связь автоматически и восстанавливает также автоматически при выходе из вышеназванных режимов и никаких проблем ни с каким автозапуском нет

  • я
    28 Сентябрь, 2009, 22:13

    т.е. если он закрыл соединение сам то и восстановит тоже сам
    вот что я хотел сказать

  • Сергей из Чебоксар
    29 Сентябрь, 2009, 13:05

    Это мы знаем. Но не у всех есть возможность оставлять комп включенным на ночь. + форс-мажор.

  • bankir
    18 Октябрь, 2009, 16:49

    Добрый день Иван. Скажите пожалуйста, как с вами связаться? (e-mail)
    Хочу обсудить заказ торгового робота, точнее его состовляющей - реализация стратегии входа на qpile..

  • Андрей
    28 Октябрь, 2009, 14:45

    Иван, можно как-то решить такую задачу: например, на счету 1 млн руб. При достижении 900 тыс., весь портфель должен продаваться автоматически. Т.е. чтобы каждый день можно было вводить минимальнодопустимую сумму на счету.

  • Иван
    28 Октябрь, 2009, 15:07

    Можно, почти без проблем.
    К сожалению в таблице лимитов по бумагам нет кода класса. При закрытии позиций необходимо будет его как-то узнавать.

  • Кинстинтин
    24 Ноябрь, 2009, 9:13

    предлагаю включения AutoHotkey в определенное время (например в 10:25 мск) использовать вот эту прогу [это ссылка] - прововал => получается

  • Алексей
    20 Апрель, 2010, 11:35

    Добрый день, Иван.
    Я уже обыскался, а вы вроде неплохо разобрались в quik'е, может в курсе. Не сталкивались с описанием протокола общения квиковского клиента с сервером, или может быть какой-то апи, который берет на себя низкоуровневый транспорт, или любое описание из этого направления?

  • Иван
    23 Апрель, 2010, 17:37

    Нет. Квиковцы держат это в тайне :)

  • Рамиль
    22 Май, 2010, 23:05

    здраствуйте иван.

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

  • Иван
    24 Май, 2010, 6:05

    Можно.

  • Алексей
    6 Июнь, 2010, 23:13

    Иван можете переделать индикатор из мт4 для quik и сколько это будет стоить

  • Андрей
    21 Июнь, 2010, 11:24

    Добрый день Иван!
    Ищем специалистов способных написать софт (адаптер) для связки торговой платформы Laser c wealth lab либо с иной внешней программой (описание способов подключением имеется)

    Кроме того ищем готового робота (возможно в виде скрипта) имеющего стабильные результаты на исторических и реальных данных на рынке акций Nasdaq и Nyse
    Возможно вас заинтересует

  • Иван
    21 Июнь, 2010, 21:18

    У них вполне внятное API. Было бы интересно сделать связку, но пока время не позволяет.

  • Александр
    5 Октябрь, 2010, 0:57

    А не перестает ли Quik после автовосстановления продолжать импорт транзакций из файла и экспорт данных по DDE?

  • 3 Ноябрь, 2010, 16:44

    К вопросу о пропадании связи.
    В QPILE есть функция IS_CONNECTED()
    Я сделал отдельны портфель, который кроме всего прочего отслеживает состояние связи. Если связи нет, то в текстовый файл пишется нужная строка (в примере "CONNECT"), а скрипт VBS, при её наличии, перезапускает QUIK с вводом пароля.

    if IS_CONNECTED()=1 then
    CLEAR_FILE("C:\QUIK\command_file\connect_.txt")
    WRITELN ("C:\QUIK\command_file\connect_.txt","OK")
    else
    ' Записываем файл для подключения программы
    CLEAR_FILE("C:\QUIK\command_file\connect_.txt")
    WRITELN ("C:\QUIK\command_file\connect_.txt","CONNECT")
    end if

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

    Если интересен текст скрипта VBS могу выложить позже.

  • ильшат
    17 Ноябрь, 2010, 14:35

    при запуске файла авто запуск квик в окне появляется что фаил info.exe не может быть внутренней или внешней командой........подскажите что не так. с уважением Ильшат