Есть проблемы с переносом конфигураций с более ранних версий QUIK на 7.1.0.381: при работе на мониторах с разным разрешением: размеры окон зависят от разрешения экрана: Причём, конфигурации от одной и той же версии могут загружаться по-разному. Хорошо, есть папка с архивом WNDSAV, где можно выбрать более "рабочую".
Надо делать так, как надо. А как не надо - делать не надо.
local t_id = AllocTable()
for i = 1, 12 do AddColumn(t_id, i, "", true, QTABLE_STRING_TYPE, 20) end
CreateWindow(t_id)
for i = 1, 5 do InsertRow(t_id, -1) end
SetWindowPos(t_id, 0, 0, 1270, 120)
Появляется скрол: хотя высоты хватает:
Надо делать так, как надо. А как не надо - делать не надо.
Мои суждения основываются на той "информации", которую вы "предоставляете". Если для событий OnQuote действительно не создаётся очереди на сервере, то об этом так и надо было сразу сказать, и закрыли бы тему сразу.
Надо делать так, как надо. А как не надо - делать не надо.
Другими словами, отсутствовать может любой из параметров, относящийся к связанной заявке? Т.о., заглянув в таблицы заявок и стоп-заявок, мы можем не обнаружить связанных заявок просто потому, что у стоп-заявки ещё не обновился параметр co_order_num?
Надо делать так, как надо. А как не надо - делать не надо.
Я сейчас задаю вопрос, чтобы знать, какую логику закладывать при работе с данным видом колбэков, чтобы потом не было "сюрпризов". Называйте это "любопытством" или как хотите.
Надо делать так, как надо. А как не надо - делать не надо.
Вот я действительно не понимаю: если очередь не отправленных событий OnQuote создаётся на сервере, то кто мешает в этой очереди держать только одно последнее событие, а все предыдущие удалять?
Надо делать так, как надо. А как не надо - делать не надо.
Предлагаем самостоятельно проверить чем они могут отличаться
Вы щас прикалываетесь? Мол, мы чё-то сделали, предлагаем вам самостоятельно потестировать и разобраться, как оно работает. Впрочем, при выпусках новых версий явно используется этот подход.
Надо делать так, как надо. А как не надо - делать не надо.
Если стоп заявка подавалась через интерфейс терминала
Очевидные ситуации не требуют рассмотрения. Если стоп-заявка подавалась с указанием trans_id, то может ли колбэк OnStopOrder прийти с незаполненным параметром trans_id? На всякий случай напомню, что по заявке типа "Со связ. заявкой" приходят два колбэка OnStopOrder. Обычно они одинаковые. Но могут ли чем-то отличаться?
Надо делать так, как надо. А как не надо - делать не надо.
а так логика простая: ЛКМ по зелёному = лимитка на покупку, ПКМ по красному = лимитка на продажу, ЛКМ по красному = вход по рынку в шорт, ПКМ по зелёному - вход в лонг...
Эээ... Может, так: левая - покупка, правая - продажа по цене, куда кликнули. А по зелёному или красному - по барабану. Лимитка или рынок - зависит от цены, куда кликнули. ?
Надо делать так, как надо. А как не надо - делать не надо.
То, что есть не годится. Из-за такой кривой логики часто путаешься. Пришлось вообще отключить быстрый ввод. Нужно другое решение. Что в ваших приводах там?
Надо делать так, как надо. А как не надо - делать не надо.
Одно другому не мешает. Такая настройка, устанавливаемая по-умолчанию (кому нужна вся история котировок - тот отключит), позволила бы немного разгрузить сервера брокера и торговые терминалы. А с причинами задержек разбираемся. Но, судя по сообщениям в интернет, это наблюдается у многих клиентов брокеров, работающих через QUIK.
Надо делать так, как надо. А как не надо - делать не надо.
Здравствуйте. Добавьте, пожалуйста, опциональную настройку, запрещающую создавать очередь событий OnQuote. Т.е, чтобы с сервера всегда поступало только последнее событие, а не вся очередь. (Такой эффект можно наблюдать в моменты высокой активности на рынке, когда стакан сначала замирает на некоторое время, а затем ускоренно "прокручивает" все пропущенные котировки. В реал-тайм торговле в этом нет особого смысла.)
Надо делать так, как надо. А как не надо - делать не надо.
Нет никакой разницы, что присылать по-умолчанию, 0 или nil.
Есть большая разница в том получили ли мы значение параметра и оно равно нулю или значение параметра ещё не получено. Аргументы я уже приводил в этой теме: ситуации, когда значение параметра может читаться двояко. Нельзя при получении trans_id=0 выполнить сначала одно действие, а потом, когда через минуту придёт trans_id=67890 переиграть всё обратно. Тоже касается и других таблиц: QUIK вам показывает ноль, когда в действительности с биржи ничего не пришло, что зачастую вносит путаницу.
Цитата
например выражение t.trans_id>0 приведет к ошибке и вылету скрипта.
Замените на t.trans_id ~= nil and t.trans_id>0, и скрипт вылетать не будет
Надо делать так, как надо. А как не надо - делать не надо.
Надо контролировать изменение лимитов. И при их изменении шевелиться с заявками.
1. Гарантированно ли при изменении лимита в системе всегда уже есть информация по заявке (сделке), вызвавшей его (лимита) изменение? 2. При постановке (исполнении) нескольких заявок подряд зачастую лимит может измениться только один раз.
Надо делать так, как надо. А как не надо - делать не надо.
Я понял, каждую минуту начисляется Вариационная Маржа
Бинго! Откройте таблицу Позиций по клиентским счетам (фьючерсы). Там много всяких параметров. Так вот OnFuturesClientHolding будет вызываться при изменении любого параметра (даже если никакая позиция не открыта): поставили вы заявку на покупку/продажу - получите колбэк, заяка исполнилась - ещё колбэк, вариационка - ещё колбэк и т.д.
Надо делать так, как надо. А как не надо - делать не надо.
стоят на фьючерс доллар/рубль 5 заявок по 1 на покупку по цене 70 000 , 70 001, 70 002, 70 003, 70 004. Мы настроили отображение шаг цены 5. И в стакане мы видим все 5 контрактов по цене 70 000.
Ага, а потом удивляемся, почему наша заявка прошла по цене, отличной от той, что в стакане. Или наша заявка не исполняется, хотя цена в ней явно лучше рыночной. Не вижу логики.
Цитата
Если просто ограничить число строк, то мы не сможем увидеть в стакане дальние заявки, а так, весь стакан можно настроить чтоб видно было
Вот сейчас открыл стакан по опциону: минимальный спрос: 10, максимальное предложение: 159990. Не думаю, что много потеряем, если не будем видеть эти заявки.
Ещё раз: указав число строк, заведомо больше, чем до max/min возможной цены, вы ничего не потеряете. Для того же Si будете видеть полный стакан, который даёт вам брокер. Но для менее ликвидных инструментов, квику не придётся рисовать стакан в несколько тысяч строк.
Надо делать так, как надо. А как не надо - делать не надо.
Firestorm, К примеру, вы хотите работать в разряженном стакане, но из-за малого числа заявок вблизи спрэда и нереально высокими и низкими ценами дальних заявок терминал вынужден вам рисовать стакан в несколько тысяч строк. Ограничив количество отображаемых строк (150-300 в обе стороны вам ведь будет достаточно?), вы сохраните ресурсы компьютера, не потеряв при этом полезной информации.
Надо делать так, как надо. А как не надо - делать не надо.
А то при "случайном" открытии разряженного стакана по неликвидной бумаге терминал зависает из-за необходимости создавать стакан с огромным числом строк.
Откройте какой-нить опцион в дальнем страйке
Надо делать так, как надо. А как не надо - делать не надо.
Удивительные значения текущей позиции getNumberOf('futures_client_holding') в 18:59, вместо цены входа в позицию выдает цену закрытия дневной сессии (RIH)
Уже. Вот только добавление/изменение параметров индикатора занимает достаточно много времени, в течение которого терминал оказывается в "подвешенном" состоянии.
Надо делать так, как надо. А как не надо - делать не надо.
Зависает Квик при запуске скрипта передачи данных под Win10, При апгрейде Win 7 и 8 до Win 10 возникла проблема - квик зависает при запуске скрипта передачи данных
неплохо было бы добавить настройку, ограничивающую максимальный размер стакана. А то при "случайном" открытии разряженного стакана по неликвидной бумаге терминал зависает из-за необходимости создавать стакан с огромным числом строк.
Это пожелание считается уже полностью реализованным ("Глубина стакана") или будет доделано для разряженного стакана?
Надо делать так, как надо. А как не надо - делать не надо.
3. Подать одну транзакцию на перестановку двух заявок по разным счетам нельзя. А, значит, и параметр account будет совпадать. Точка. Поручение (транзакция "MOVE_ORDERS" на перемещение) для обеих заявок одно. А, значит, и параметр brokerref будет совпадать.
Так понятно?
Надо делать так, как надо. А как не надо - делать не надо.
1. nil я понимаю буквально, как nil. В программировании это выглядит так:
Код
if trans_reply.account == nil then
toLog('Без паники. В документации указано, что это допустимо.')
elseif trans_reply.account == '' then
toLog('Швах! Что-то здесь не так...')
end
Поэтому и уточнил:
Цитата
Тут точно nil ?
2. Ваш ответ #12 можно расценить, как дешёвую отмазку, чтобы не заниматься проблемой.
3. Подать одну транзакцию на перестановку двух заявок по разным счетам нельзя. Поручение для обеих заявок одно. А, значит, и параметры account и brokerref будут совпадать. Не вижу никаких причин, чтобы не заполнить эти параметры в OnTransReply.
4. При любом исходе ответ на транзакцию один: либо сразу обе заявки переставлены, либо нет. А, значит, нет необходимости дублировать OnTransReply.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель, account и brokerref пустые потому, что MOVE_ORDERS может работать сразу с двумя заявками.
Одной транзакцией можно переставить две заявки по разным счетам (читай: с разными account)? Сколько у вас приходит ответов OnTransReply при перестановке сразу двух заявок? У меня две? Смысл в двух абсолютно одинаковых OnTransReply?
Надо делать так, как надо. А как не надо - делать не надо.
Антонов К. пишет: Вопрос актуальный. Как отслеживать состояние заявки.
Вы можете использовать примечание для решение задачи. Оно в отличии от TRANS_ID содержится в поле BROKERREF которое транслирует биржа, а значит оно точно не потеряется. То есть чтобы робот писал в примечание какой-либо спец признак. Примечание указывается в параметре транзакции CLIENT_CODE после кода клиента, в качестве разделителя добавляется признак "/" или "//" (зависит от настроек на стороне брокера) если в правах только один код клиента, можно его не указывать, а сразу писать примечание.
Заявки, переставляемые транзакцией "MOVE_ORDERS", таскают за собой параметр brokerref от самой первой заявки. Это нормальная ситуация?
Надо делать так, как надо. А как не надо - делать не надо.
Подытожим. Таким образом, OnTransReply с status = 3 (и только три) означает, что транзакция выполнена. Остальные значения статуса говорят о том, что транзакция не выполнена (и не будет выполнена). Так?
Приведите, пожалуйста, полный и исчерпывающий список возможных вариантов значений параметра status для колбэка OnTransReply. Из-за отсутствия этого списка для QLUA нам и вам (сотрудникам техподдержки) приходилось пользоваться аналогом этого списка для формата .tro-файла, что зачастую приводило к неверным рекомендациям с вашей стороны относительно параметра status.
Надо делать так, как надо. А как не надо - делать не надо.