Автоматический запуск QUIK!
Наконец-то дошли руки — сделал отдельную настраиваемую утилиту, которая запускает QUIK, и самостоятельно вводит в него логин и пароль, тем самым мы имеем возможность настроить полный автоматический запуск торгового процесса!
Для начала давайте рассмотрим аспекты поддержания соединения с торговым сервером. В меню «настройки — основные» в QUIK есть функция «устанавливать соединение», включив которую, при запуске QUIK будет автоматически открывать диалог установления связи с сервером:
В меню «связь — доступные соединения» есть раздел «при разрыве связи», в котором есть две отключаемые и настраиваемые функции: восстановление соединения и опции повторного соединения. В первой функции мы указываем через какой промежуток времни, после разрыва, QUIK сам будет восстанавливать соединение, также можем указа в какой период времени нам нужно восстановление соединения. Активация второй функции позволит нам при повторном соединении не вводить опять пароль и логин:
Таким образом, один раз запустив QUIK, он будет самостоятельно поддерживать соединение, но в первый запуск, нам все равно надо вводить пароль и логи самостоятельно.
Как вводить логин и пароль автоматически?
К чему это все я веду — я стремлюсь к полной автоматизации процесса. Есть компьютер, в настройках BIOS которого, есть функция включения компьютера в установленное время. Стартует Windows, в автозагрузке стоит утилита автостарта QUIK, запускает QUIK, вводит логин и пароль, производится соединение с сервером, и тут же начинает работу торговый робот. Т.е. участия человека не нужно. Совсем не нужно! У меня сервер стоит в стойке у провайдера с подобными настройками, администрировать который я захожу через интернет, в т.ч. со смартфона. А у провайдера связь отличная, поэтому за нее можно не волноваться. В итоге я имею мощную систему, управлять которой я могу из любой точки мира, которая может работать абсолютно автономно! Представили себе? Это как раз и есть свобода.
Итак, подробнее об утилите: настройка минимальна — логин и пароль при первом запуске, при повторном запуске утилита больше ничего не спрашивает — просто запускает QUIK. Если вдруг по каким-то причинам QUIK кто-то выключит — она опять запустит его и опять введет логин и пароль. Зарегистрированные пользователи могут скачать утилиту.



Кстати да, тоже руки не доходили такое сделать.
Правда, меня не беспокоит автозапуск, просто надоело вводить логин-пароль каждый раз.
С точки зрения безопасности кража логина/пароля бесполезна — пароль от квика не позволяет перевести деньги на свой счет, только спустить чужой депозит. Постороннему человеку это не нужно, а свои могут сделать то же самое гораздо более простыми методами.
Хотелось бы видеть в этой софтинке возможность прятаться в трей (просто удобно), возможность закрываться после запуска квика (для тех, кому надоело вводить логин/пароль, но не нужен автоперезапуск) и хоть какое-то шифрование пароля в реестре (для параноиков, которые не читали предыдущий абзац).
Евгений Reply:
октября 26, 2009 at 10:01
Вот исходник на языке AutoIT (код может показаться корявым профессионалу в этом языке — это моя первая программа на нем, сделал за час...):
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=...\...\VistaOSX09\icons\RKLauncher.ico
#AutoIt3Wrapper_outfile=autostarter.exe
#AutoIt3Wrapper_Compression=4
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include «C:\Program Files\AutoIt3\Include\GUIConstants.au3»
GUICreate («Автостартер www.hirobot.ru», 290, 150)
GUISetState ()
$var = RegEnumVal («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog», 1)
if @error <>0 Then
MsgBox (4096, «Ошибка»,"Не найдены данные логина и пароля!")
GUICreate («Регистрационные данные», 290, 150)
$Log=GUICtrlCreateInput («Здесь введите логин», 45, 20)
$Pass=GUICtrlCreateInput («Здесь введите пароль», 45, 60)
$CTRL_btnOK = GUICtrlCreateButton («QUIK»,55, 100, 80, 29)
$CTRL_btnNO = GUICtrlCreateButton («Выход»,155, 100, 80, 29)
GUISetState ()
Do
$msg = GUIGetMsg ()
if $msg = $CTRL_btnNO then
GUIDelete ()
Exit
endif
if $msg = $CTRL_btnOK then
RegWrite («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog», «Key1», «REG_SZ», GUICtrlRead ($Log))
RegWrite («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog», «Key2», «REG_SZ», GUICtrlRead ($Pass))
GUIDelete ()
ExitLoop
endif
Until $msg = $GUI_EVENT_CLOSE
endif
$STOP_Button = GUICtrlCreateButton («Изменить логин и пароль»,55, 100, 180, 29)
$msg=0
GUICtrlCreatelabel («Состояние QUIK -», 45, 20)
$StringNotActive="«
$titlewindowfind2=0
$StringActive=»"
Do
$titlewindowfind=0
if ProcessExists («info.exe») Then
$titlewindowfind=1
endif
if $titlewindowfind=0 AND $titlewindowfind2<>2 Then
$StringNotActive=GUICtrlCreatelabel («Отключен», 137, 20)
$titlewindowfind2=2
run («info.exe»)
WinWaitActive («Идентификация пользователя»)
$Log=RegRead («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog»,"Key1")
Send ($Log)
Send («{TAB}»)
$Pass=RegRead («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog»,"Key2")
Send ($Pass)
Send («{ENTER}»)
EndIf
if $titlewindowfind=1 AND $titlewindowfind2<>3 Then
$StringActive=GUICtrlCreatelabel («Активен», 137, 20)
$titlewindowfind2=3
EndIf
GUISetState ()
If $msg =$STOP_Button then
GUICreate («Регистрационные данные», 290, 150)
$Log=GUICtrlCreateInput («Здесь введите логин», 45, 20)
$Pass=GUICtrlCreateInput («Здесь введите пароль», 45, 60)
$CTRL_btnOK = GUICtrlCreateButton («Сохранить»,55, 100, 80, 29)
$CTRL_btnNO = GUICtrlCreateButton («Отмена»,155, 100, 80, 29)
GUISetState ()
Do
$msg = GUIGetMsg ()
if $msg = $CTRL_btnNO then
GUIDelete ()
ExitLoop
$titlewindowfind=0
;$titlewindowfind2=0
endif
if $msg = $CTRL_btnOK then
RegWrite («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog», «Key1», «REG_SZ», GUICtrlRead ($Log))
RegWrite («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog», «Key2», «REG_SZ», GUICtrlRead ($Pass))
$PID = ProcessExists («info.exe»)
If $PID Then ProcessClose ($PID)
run («info.exe»)
WinWaitActive («Идентификация пользователя»)
$Log=RegRead («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog»,"Key1")
Send ($Log)
Send («{TAB}»)
$Pass=RegRead («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog»,"Key2")
Send ($Pass)
Send («{ENTER}»)
GUIDelete ()
ExitLoop
$titlewindowfind=0
;$titlewindowfind2=0
endif
Until $msg = $GUI_EVENT_CLOSE
endif
$msg = GUIGetMsg ()
Until $msg = $GUI_EVENT_CLOSE
Здравствуйте, Евгений. Какие вы ещё языки программирования знаете? (Это для того чтобы знать к чему надо стремится =)
Евгений Reply:
ноября 1, 2009 at 12:18
Привет.
ФоксПро, Купайл.
Авто ИТ на начальном уровне.
Добрый вечер!
Подскажите пжалста по такой ситуёвине: у меня у 3-х брокеров тоже стоит QUIK, можно ли для каждого из них настроить автозапуск?
Евгений Reply:
ноября 30, 2009 at 19:43
Нет, программа автозапуска в текущем виде может хранить логин и пароль только для одного квика. В каментах выложен код, он простой, попробуйте для себя сделать три версии с тремя разными местами хранения регистрационных данных.
Добрый день!
Подскажите пожалуйста!!!
У меня, после включения компьютера и запуска автостартера, загружается Quik, и просит ключи с диска А:, хотя ключи находятся на диске С:, в файле Qrypto, все связанное с диском А:, давно стерто.В течении дня, такой проблеммы не возникает.Все работает.
Евгений Reply:
декабря 15, 2009 at 19:16
А это единственный квик которые есть у вас на компе? файл автостартера лежит в его директории? В самом квике меню Настройки-шифрование указаны правильные пути ключей?
Вобщем попробуйте заново настроить шифрование.
@pilott55
Квик единственный,файл автостартера лежит в его директории.Если зайти в папку Квик и нажать автостартер, то все запускается без проблем, а вот если ставить через автозапуск(Стандартный) или Auto Power-on, то появляется проблема описанная выше.((((
Евгений Reply:
декабря 16, 2009 at 18:48
Проблема в том, что автостартер не открывает папку с квиком. Поэтому запускать автоматически надо через планировщик задач в винде. Там же можно настроить точное время запуска.
pilott55 Reply:
декабря 17, 2009 at 14:47
Ок. Спасибо большое.
Приветствую, у меня пасс от квика на англицком я зыке, а пользователь соответственно на русском... не работаит
Евгений Reply:
декабря 18, 2009 at 17:53
Вообще автостартеру все равно на каком языке логин и пароль.
Что конкретно не работает? Пароль не принимает квик?
yoni Reply:
декабря 22, 2009 at 16:45
да, тупо пишет неверный пароль и все тут...
Евгений Reply:
декабря 22, 2009 at 21:07
Квик это пишет? А пароль в форме ввода регистрационных данный в квике при автостарте появляется?
Может при вводе пароля в автостартер ошибку допустили? Попробуйте в автостартере нажать кнопку «изменить данные» и ввести пароль заново.
Я тоже решил установить вашу утилиту, Евгений. Потом прочёл ваш ответ на коментарий от 16.12.09. Задействовал планировщик: включить QUIK в 11.00 и ежедневно. На следующее утро перед уходом включил компьютер, установил рабочий стол, никаких программ. А он на моих глазах тут же включает QUIK и устанавливает связь с сервером. Получается, планировщик не нужен. Я хотел установить рабочий стол, а в 11.00 планировщик вытащит QUIK и ваша утилита установит связь с сервером. Что я неправильно сделал?
Евгений Reply:
января 25, 2011 at 18:16
Привет.
Утилита сама запускает квик, и вводит в него пароль. если для вас критично включение квика в определенное время — в планировщик надо сделать задание для утилиты, а не для квика.
Добрый день, будьте добры, подскажите. Установил в квике автоматическое соединение, вынимаю кабель, вставляю обратно. Квик пытается через указанное время восстановить соединение, но возвращает: «Вы уже работаете в системе». Что не так?
Евгений Reply:
февраля 21, 2011 at 21:31
Это пишет сервер брокера. Поставьте в меню связь-доступные соединения в параметре «Восстанавливать связь» через 15-20 сек.
murzin Reply:
февраля 22, 2011 at 13:32
Спасибо, с большим интервалом работает нормально. А может подскажите мне по несколько другому вопросы, Вы наверняка знаете.
В папке Info лежит экзешник Info. Если запустить его вручную, то открывается нормальный квик. Если же я пытаюсь запустить ровно тот же самый экзешник питоном или из коммандной строки, то открывается какая-то странная версия квика (видимо старая), которая не может найти пароли. То же самое если я запускаю Ваш автостартер например питоном. В чем тут проблема?
Евгений Reply:
февраля 22, 2011 at 18:53
Надо указывать рабочую папку самого квика. Вот у меня на рабочем столе создан ярлык для автостартера, который в свою очередь лежит в папке квика. Завтра опубликую статью об еще одном, альтернативном, автоматическом запуске квика.
У меня есть проблема с запуском Квика. Какой-то процесс, пока не могу определить какой, периодический перехватывает активность окна идентификации пользователя, а если окно не активно, то скрипт не может ввести логин и пароль. Можно ли в скрипте прописать принудительную активацию окна перед вводом пароля? С AutoIT не знаком, к сожалению.
Евгений Reply:
апреля 2, 2011 at 20:17
Привет.
Принудительное активирование окна ввода пароля уже есть. Попробуйте вариант на WBS: www.hirobot.ru/2011/03/al...avtozapusk-quik/
Rrider Reply:
апреля 2, 2011 at 20:51
Пробовал уже, тоже самое, видимо там тоже только с активным окном работает. Но я уже нашел решение, пришлось познакомиться с AutoIT, заменил операторы Send на ControlSend — этот умеет работать и с не активным окном. Теперь запускается стабильно:) Вот кусок:
$Log=RegRead («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog»,"Key1")
ControlFocus ( «Идентификация пользователя», "", [CLASSNN:Static3]"")
ControlSend ( «Идентификация пользователя», "", [CLASSNN:Static3]"«, $Log )
Send („{TAB}“)
$Pass=RegRead („HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SysLog“,»Key2")
ControlFocus ( «Идентификация пользователя», "", [CLASSNN:Static4]"")
ControlSend ( «Идентификация пользователя», "", [CLASSNN:Static4]"", $Pass )
ControlFocus ( «Идентификация пользователя», "", [CLASSNN:Button1]"")
ControlSend ( «Идентификация пользователя», "", [CLASSNN:Button1]"", «{ENTER}» )
Правда не уверен, что значения Static3, Static4, Button1 у других пользователей будут такими же, проверять надо, я же первый раз с этим языком...
Здравствуйте, если сервер стоит в стойке у провайдера, то при перезагрузки нужно войти в свою учетную запись перед тем как запустится автозагурзка в автостартером, т.е. если сервер после обновлений перегружался, то Квик сам, получается, не запустится. Как можно с таким справиться?
Евгений Reply:
апреля 4, 2011 at 18:55
Привет.
По моему надо настроить загрузку компьютера так, чтоб при включении/перезагрузке винда не спрашивала учетную запись/пароль, а загружала админскую по умолчанию. У меня именно так.
v_zhilov Reply:
апреля 16, 2011 at 1:38
Спасибо, попробую.