Инвестграм#14. QUIK. Подсказки по решению проблем.
Доброго времени суток, коллеги!
Сегодня подготовил информацию по часто встречающимся проблемам с торговым терминалом QUIK. Данная статья поможет вам решать основные проблемы самостоятельно.
Для начала хотел бы рассказать про банальные вещи. Но поверьте, и на таких этапах возникают проблемы.
Вот мы такие счастливые установили программу Quik, хотим торговать, но запнулись на генерации ключей.
Какие проблемы могут возникнуть при генерации ключей?
1) Системная ошибка при регистрации ключей в личном кабинете Брокера (если у вашего Брокера есть такая процедура)
Данная ошибка может быть связана с тем, что у вас в логине используются недопустимые символы, таким образом, кодировка ключей получается некоренной. Рекомендуется в логине указывать номер вашего счета. Этого будет достаточно. Потому что в программе Quik вам будет достаточно ввести только первый символ логина.
Также рекомендуется использовать Генератор ключей, который вы скачали непосредственно с сайта вашего Брокера. Его лучше запускать от имени администратора. Нажимаем правой кнопкой мыши на ярлык, далее выбираем “Запустить программу от имени администратора”.
Новые ключи и файл keydoc.txt будут созданы в папку new_keys, переместите их оттуда в нужную папку. Чтобы Quik увидел ваши ключи, необходимо указать к ним путь. Для этого в Quik нажимаем СИСТЕМА>НАСТРОЙКИ>ОСНОВНЫЕ НАСТРОЙКИ. Далее смотрим на рисунок ниже ;))
Указываем путь к ключам на компьютере.
Какие еще могут быть проблемы при входе в программу?
Если вы неверно указали путь, то ждите:
2) “Файл с ключами не найден”
Программе не удалось обнаружить файл с ключами, указанный в qrypto.cfg.
3) “Ключ сервера или пользователя не найден”
В файле публичных ключей pubring.txk отсутствует публичный ключ сервера с идентификатором, указанным в настройках выбранного соединения.
В файле секретных ключей secring.txk отсутствует секретный ключ пользователя, соответствующий введенному имени.
Давайте двигаться дальше, какие еще распространенные ошибки может показывать терминал?
4) “Неверный пароль”
Как бы банально не звучало, но вы действительно указываете неверный пароль, даже если вы на 100% уверены, что он точный. Проверьте CapsLock, раскладку клавиатуры. Либо при генерации ключей вы действительно совершили ошибку при вводе пароля, перегенерируйте ключи.
5) Часто бывает такое, что программа Quik загружается очень долго.. Это связано с тем, что при запуске ИТС QUIK программа считывает временные файлы за предыдущую торговую сессию. Для оперативного запуска необходимо перед каждым запуском предварительно удалять 3 файла из папки с программой:
Небольшой лайфхак. Для того, чтобы файлы в программе подчищались автоматически, нужно на рабочем столе нажать правой кнопкой мыши на ярлык Quik>Свойства>открыть вкладку Ярлык. Там мы находим поле Объект и после .exe” ставим пробел и пишем –clear
6) Не прокачиваются счета, не хватает классов бумаг. Ниже предлагаю несколько решений данной проблемы.
Все в тех же настройках в Сохранении данных выбираем следующие поля и сохраняем настройки.
В поле Торговля>Настройка счетов, все счета должны быть справа. Если у вас слева, переместите их.
Если у вас нет классов бумаг, то рекомендую посмотреть: Система>Заказ данных>Поток котировок. Посмотрите, чтобы у вас были выбраны все классы бумаг.
Если у вас проблемы с отображением лимитов, графиков и прочего, рекомендую нажать Система>Заказ данных>Перезаказать данные..
Выбираем:
После чего Quik перезапустится, и должно все работать корректно. Также рекомендую перед данной процедурой сохранить текущие настройки Quik.
Система>Сохранить настройки в файл> далее выбираем либо info.wnd/создаем свои настройки новым файлом. Рекомендую это делать периодически, особенно если вносите много правок в графики, и создаете часто новые таблицы и т. д.
7) Не хватило памяти под объекты..
Данная ошибка возникает по той причине, что было, скорее всего, некорректное завершение работы программы. Рекомендуется закрывать терминал через Х, после чего выключать компьютер.
— Испорчен файл настроек *.wnd, в таком случае его удаление должно решить проблему.
— Программе действительно не хватает памяти под объекты (Расход ОЗУ, ЦП, объектов GDI ), проверить это можно через диспетчер задач, построив его и настроив сортировку сначала по одному, потом по второму, потом по третьему признаку.
Как решать данную проблему?
В последней версии Quik есть программка Восстановление терминала.bat, которая находится прямо в папке с терминалом на компьютере.
Если версии предыдущие, то:
— Удалить все временные файлы с расширением .dat в папке с программой.
— Удалением или переименованием файла с настройками (по-умолчанию файл info.wnd).
После чего запускаем программу.
Я отобразил самые часто встречающиеся проблемы в программе Quik. Надеюсь информация будет полезной.
Спасибо за внимание, поменьше проблем с программой Quik и отличного дня! ;))
Источник
Не выставляет заявку на продажу\покупку
Внимание
Проблема в количестве лотов. Если я в транзакции сам прописываю количество, то всё хорошо
[«QUANTITY»] = «3»
А если пишу через переменную — количество лотов в позиции, то не ничего не происходит.
BuyVol = getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet; — Количество лотов в позиции BUY
lenght = string.len(BuyVol)
vol = string.sub(BuyVol,1,length) + 1
.
[«QUANTITY»] = tostring(vol)
Если вывести переменную через Message, то она содержит правильное количество лотов в позиции ( 13, 12 и т п )
| Цитата |
|---|
| Владимир Ишанин пишет: А если пишу через переменную — количество лотов в позиции, то не ничего не происходит. BuyVol = getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet; — Количество лотов в позиции BUY lenght = string.len(BuyVol) vol = string.sub(BuyVol,1,length) + 1 . [«QUANTITY»] = tostring(vol) |
| Цитата |
|---|
| Владимир Ишанин пишет: А если пишу через переменную — количество лотов в позиции, то не ничего не происходит. BuyVol = getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet; — Количество лотов в позиции BUY lenght = string.len(BuyVol) vol = string.sub(BuyVol,1,length) + 1 . [«QUANTITY»] = tostring(vol) |
У меня в таблице транзакций заявки регистрируются, но моя позиция при этом никак не изменяется, что может быть не так?
Скриншот
Я уже в недоумении от этого)
| Цитата |
|---|
| Владимир Ишанин пишет: У меня в таблице транзакций заявки регистрируются, но моя позиция при этом никак не изменяется, что может быть не так? |
| Цитата |
|---|
| Владимир Ишанин пишет: У меня в таблице транзакций заявки регистрируются, но моя позиция при этом никак не изменяется, что может быть не так? |
Позиция изменяется при исполнении заявки, т.е. после сделки .
| Цитата |
|---|
| Владимир Ишанин пишет: У меня в таблице транзакций заявки регистрируются, но моя позиция при этом никак не изменяется, что может быть не так? |
Позиция изменяется при исполнении заявки, т.е. после сделки .
Т.е. у меня не проходит сделка, получается, хотя заявка регистрируется.
Есть ли какой-то способ узнать, почему сделка не проходит?
Или по данной цене нету такого количества, которое я запрашиваю.. Тогда как из этого выходить
| Цитата |
|---|
| Владимир Ишанин пишет: Т.е. я так понял, чтобы полностью закрыть свою позицию, скрипт должен проверить объем контрактов по лучшей цене и если мне их не хватит, он должен проверить следующую цену и купить контрактов по этой цене и если снова не закроется делать эту последовательность дальше, пока не закроется? Или можно где-то прописать, чтобы он покупал всё, начинаю от лучшей цены и так далее пока не закроется одной функцией или параметром? |
Ну, в общем случае, для уверенности что заявка будет непременно исполнена — да.
Но для этой цели существует понятие g:Исполнение по рынку
Кроме того у заявки есть разные флаги. Типа «исполнить или отклонить».
Тут надо для себя решить, что важнее: цена исполнения или объем или сам факт исполнения заявки.
| Цитата |
|---|
| Владимир Ишанин пишет: Т.е. я так понял, чтобы полностью закрыть свою позицию, скрипт должен проверить объем контрактов по лучшей цене и если мне их не хватит, он должен проверить следующую цену и купить контрактов по этой цене и если снова не закроется делать эту последовательность дальше, пока не закроется? Или можно где-то прописать, чтобы он покупал всё, начинаю от лучшей цены и так далее пока не закроется одной функцией или параметром? |
Ну, в общем случае, для уверенности что заявка будет непременно исполнена — да.
Но для этой цели существует понятие g:Исполнение по рынку
Кроме того у заявки есть разные флаги. Типа «исполнить или отклонить».
Тут надо для себя решить, что важнее: цена исполнения или объем или сам факт исполнения заявки.
| Цитата |
|---|
| Старатель пишет: Это «недокументированные возможности» У вас в одной транзакции указывается и признак рыночной заявки ([«TYPE»] = «M») и цена ([«PRICE»] = tostring(bid1+5*bid3)). Видимо, с такими параметрами заявка выставляется с условием «Немедленно или отклонить», и если не находит встречного предложения, то сразу отклоняется. Надо задавать либо лимитированную заявку с ценой, либо маркет-заявку с нулевой ценой. |
Если вы торгуете на площадке фортс, то ставить признак «М» и цену = 0 не получится.
Нужно выставлять обычную лимитную заявку, но с ценой заведомо хуже текущих цен в стакане но не выходя за планку.
В примере выше, где заявка по 65607 на два лота отбилась — возможно стоял признак «немедленно или отклонить». В таком случае заявка на продажу по цене выше рынка не могла быть исполнена немедленно, и поэтому была отклонена.
Как вы можете видеть со своего же скрина, предыдущая заявка «по рынку» (а на самом деле по верхней планке) была удовлетворена, и вы купили один лот.
А вот продать не смогли.
Разбирайтесь с режимами подачи заявок. Нельзя просто так взять и смешать все в кучу и надеяться что «авось как-то сработает»
| Цитата |
|---|
| Imersio Arrigo пишет: Если вы торгуете на площадке фортс, то ставить признак «М» и цену = 0 не получится. Нужно выставлять обычную лимитную заявку, но с ценой заведомо хуже текущих цен в стакане но не выходя за планку. |
В примере выше, где заявка по 65607 на два лота отбилась — возможно стоял признак «немедленно или отклонить». В таком случае заявка на продажу по цене выше рынка не могла быть исполнена немедленно, и поэтому была отклонена.
Как вы можете видеть со своего же скрина, предыдущая заявка «по рынку» (а на самом деле по верхней планке) была удовлетворена, и вы купили один лот.
А вот продать не смогли.
Источник
По поводу стоп-заявок
Внимание
Здравствуйте у меня возник вопрос.
Например я поставил вчера стоп-заявку. Сегодня у моего брокера проблемы технического характера и я не могу подключиться к торгам. Сработает ли стоп-заявка или нет? Или для ее срабатывания должен работать хоть один сервер у брокера?
| Цитата |
|---|
| Sergey Gorokhov написал: Если будет работать другой сервер то стоп заявка не сработает пока Вы ее не сделаете «своей» (в таблице стоп заявок выполнить пункт «Сделать стоп заявку своей») |
| Цитата |
|---|
| Suntor написал: Я не могу понять, для чего нужен пункт меню «Сделать стоп заявку своей». В какой момент может возникнуть потребность в этом пункте? |
| Цитата |
|---|
| Sergey Gorokhov написал: Если этот конкретный сервер сломается, чтобы стоп заявка начала работать, ее надо привязать к другому серверу. Для этого и нужен пункт «Сделать стоп заявку своей». Т.е. Вы подключаетесь к рабочему серверу и делаете стоп своим. Если не сделаете, то стоп не сыграет. |
У меня просто ни разу такой ситуации не возникало, поэтому я и не представляю как это на практике выглядит.
Всё это выглядит мудрёно как-то. Если сервер со стоп-заявкой упал, то как другой сервер узнает о наличии оной? Если же сервера между собой обмениваются информацией о стоп-заявках, то почему другой сервер сразу не может подхватить эти стоп-заявки без ручного нажимания на пункт «сделать своей»? Не могу понять этого. получается, стоп-заявка вроде как есть, и сервер о ней знает, но пока не нажмёшь «сделать своей» она работать не будет. Зачем? какая-то избыточная функция лишняя.
| Цитата |
|---|
| Suntor написал: У меня просто ни разу такой ситуации не возникало, поэтому я и не представляю как это на практике выглядит. |
| Цитата |
|---|
| Suntor написал: как другой сервер узнает о наличии оной? |
А ему не надо «узнавать»
Все стопы одновременно присутствуют на всех серверах брокера.
Вы же когда переключаетесь с одного сервера на другой, стопы не пропадают не так ли?
И как уже говорилось, каждый конкретный стоп принадлежит конкретному серверу.
В таблице стопа заявок ,в колонке «Сервер» будет написано «Чужой» если стоп заявка принадлежит не к тому серверу к которому Вы подключены.
| Цитата |
|---|
| Suntor написал: Если же сервера между собой обмениваются информацией о стоп-заявках, то почему другой сервер сразу не может подхватить эти стоп-заявки без ручного нажимания на пункт «сделать своей» |
А от куда серверу должно быть известно что это надо сделать?
И как уже говорилось и еще раз повторим, у брокера есть возможность перенести стоп заявки без участия клиента и тыкать «сделать своей» в этом случае не обязательно.
| Цитата |
|---|
| Suntor написал: Зачем? какая-то избыточная функция лишняя. |
| Цитата |
|---|
| Sergey Gorokhov написал: Значит можете сказать спасибо Вашему брокеру за стабильную работу. |
Наверно да. Лет 10 назад, помню была эта чехарда с серверами, их висело по 5..6 штук в диалоге, постоянно их там меняли. Но давно такого уже не вижу. Да и брокеры менялись.
| Цитата |
|---|
| Sergey Gorokhov написал: это надо чтобы стоп заявка не срабатывала одновременно на всех контурах брокера. |
| Цитата |
|---|
| Suntor написал: которого у вас просто нет |
| Цитата |
|---|
| Suntor написал: в рамках вашей сети серверов |
Кто сказал что у нас есть сеть серверов? Вы явно не понимаете что мы производитель ПО, а используют его брокера, у которых своя сеть к нам никакого отношения не имеющая.
| Цитата |
|---|
| Suntor написал: и сама перебрасывать заявки на другие сервера в случае необходимости. |
| Цитата |
|---|
| Sergey Gorokhov написал: А при чем тут мы? Мы делаем софт, а как его использует брокер это дело брокера. Если он захочет пусть делает Failover, QUIK это позволяет. |
Серверную же часть вы пишите. И встроить подобный функционал в эту серверную часть только вы можете. Брокер тут вообще ни при чём.
| Цитата |
|---|
| Sergey Gorokhov написал: Кто сказал что у нас есть сеть серверов? Вы явно не понимаете что мы производитель ПО, а используют его брокера, у которых своя сеть к нам никакого отношения не имеющая. |
Я имел ввиду, что у брокера стоит несколько серверов с вашим ПО, которое должно быть между собой связано в единую сеть. Ну как локалка обычная, или домен. Брокер поставил 3 сервера отдельных с вашим ПО, и они вместе работают как одна сеть. Снаружи это выглядит как один виртуальный Quik Server. Подъсоединиться можно физически к любому из них, но данные у них общие. Если один падает физический сервер, вся сеть продолжает работать, и стоп-заявки продолжают работать. И не нужно, ни брокеру, ни пользователю совершать никаких действий по перемещению заявок.
Вы когда на Google.com или Yandex.ru заходите, вы же не к конкретному физическому серверу по IP подсоединяетесь. Вы заходите на сайт по имени, и даже не знаете, куда вас физически подключило, с какого физического сервера данные вашей учётки пришли и т.д.. Для вас это всё прозрачно.
| Цитата |
|---|
| Sergey Gorokhov написал: Вам уже 100 раз было сказано У БРОКЕРА ЕСТЬ ТАКАЯ ВОЗМОЖНОСТЬ |
Участие брокера вообще не должно требоваться для синхронизации работы серверов.
| Цитата |
|---|
| Sergey Gorokhov написал: Что не понятно? |
Наличие в Quik функции для ручного переноса заявок из упавших серверов на неупавшие. вот это непонятно. Выглядит как некий архаизм и недоработка с былых времён.
Эта тема началась с вопроса пользователя, что ему делать, когда начались проблемы с сервером у Брокера. И он должен теперь бегать в мыле, по форумам в выяснять, что ему нужно там нажимать за кнопки «сделать своей».
Источник