Автоматический запуск 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
Квик это пишет? А пароль в форме ввода регистрационных данный в квике при автостарте появляется?
Может при вводе пароля в автостартер ошибку допустили? Попробуйте в автостартере нажать кнопку «изменить данные» и ввести пароль заново.