Oleg Khusnutdinov (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Задержка данных при обмене с сервером
 
Здравствуйте.

По предпоследнему посту:
Уточните, пожалуйста, демо сервер - это наш 91.209.122.220:15100 или какой-то иной ?
Если наш, то просьба уточнить UID пользователя, а также дату наблюдений и способ привязки ко времени оси времени на графике(соответствует реальному или как-то иначе).
Если какой-то иной, то потребуется инициировать обращение брокера с логами сервера QUIK к нам.
Сразу отметим, что на текущий момент задержка по данным, привносимая сервером QUIK, в среднем составляет не менее 50 мс.
В зависимости от инфраструктуры доступа, применяемой конкретным брокером, это число может быть увеличено вдвое.
Поэтому в Вашей постановке задачи имеет смысл искать причины для задержек в единицы секунд (и более), т.е. в разы превышающие указанное среднее значение.

По последнему посту: т.к. прямого вопроса не прозвучало, просьба уточнить - требуется ли наша помощь ? Если да, то в чём ?
Встроенные индикаторы в скриптах индикаторов, Встроенные индикаторы в скриптах индикаторов
 
Здравствуйте.

Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Не соображу как сделать суммирование по фирме, есть простой портфель с колонками идентификатор, торговый счет, вариационная маржа.
 
Прошу прощения, добавлю: это только пример, он будет правильно работать только в случае, если данные по таблице ограничений в хранилище клиентского места отсортированы по полю Фирма. В противном случае следует использовать более сложные алгоритмы группировки.
Не соображу как сделать суммирование по фирме, есть простой портфель с колонками идентификатор, торговый счет, вариационная маржа.
 
Здравствуйте.

Если мы правильно поняли, то в таблице ограничений может быть более одного уникального кода фирмы. В таком случае требуется алгоритм группировки по фирмам, например, можно реализовать так (в последних строках программируемой таблицы будут суммарные значения в разрезе фирм, строки отличаются от остальных пустым торговым счётом):


Код
PORTFOLIO_EX dost;
DESCRIPTION сумма маржи;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST FIRMID;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
delete_all_items()

items_counter=1
vm_map=CREATE_MAP()
firmid_map=CREATE_MAP()
prev_value=""


n=get_number_of("FUTURES_CLIENT_LIMITS")
for i fr om 1 to n
 limit = get_item("FUTURES_CLIENT_LIMITS", i)
 add_item(i, limit)

 IF prev_value!=GET_VALUE(limit,"FIRMID") AND i>1
 items_counter=items_counter+1
 END IF

 
 IF i<2
 vm_map=SET_VALUE(vm_map,items_counter,GET_VALUE(limit,"VARMARGIN"))
 firmid_map=SET_VALUE(firmid_map,items_counter,GET_VALUE(limit,"FIRMID"))
 ELSE
 vm_map=SET_VALUE(vm_map,items_counter, GET_VALUE(limit,"VARMARGIN")+GET_VALUE(vm_map,items_counter))
 firmid_map=SET_VALUE(firmid_map,items_counter,GET_VALUE(limit,"FIRMID"))

 END IF

 prev_value=GET_VALUE(limit,"FIRMID")
 
end for

for i fr om n+1 to n+items_counter
limit=SET_VALUE(limit, "VARMARGIN", GET_VALUE(vm_map, i-n))
limit=SET_VALUE(limit, "FIRMID", GET_VALUE(firmid_map, i-n))
limit=SET_VALUE(lim it, "TRDACCID", "")
add_item(i, lim it)
end for


END_PROGRAM

PARAMETER FIRMID;
PARAMETER_TITLE Идентификатор фирмы;
PARAMETER_DESCRIPTION Идентификатор фирмы;
PARAMETER_TYPE STRING(128) ; 
END
PARAMETER TRDACCID;
PARAMETER_TITLE Торговый счет;
PARAMETER_DESCRIPTION Торговый счет;
PARAMETER_TYPE STRING(128) ; 
END

PARAMETER VARMARGIN;
PARAMETER_TITLE Вариационная маржа;
PARAMETER_DESCRIPTION Вариационная маржа;
PARAMETER_TYPE NUMERIC(14,2);
END

END_PORTFOLIO_EX
 
OnOrder без UID
 
Здравствуйте.

Таблица заявок - обновляемая таблица. Поэтому, теоретически, обновлён (дописан/удалён) может быть любой параметр, кроме ключевых (ключевые это Номер заявки, Дата торгов, Код класса). На практике же дописывается UID и ID транзакции. Сделано это для того, чтобы как можно скорее отправить информацию о заявке пользователю и не ожидать определения всех атрибутов заявки (определение UID и ID транзакции происходит внутри сервера QUIK и занимает какое-то время).
Таблица сделок - необновляемая. Соответственно, сразу заполняются все (присущие режиму торгов сделки) параметры и запись более не обновляется (даже если OnTrade вызывается более одного раза по одной и той же сделке, такое тоже может быть и не является аномалией).
Касаемо документации Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
коды событий поворотов колеса мыши SetTableNotificationCallback
 
Здравствуйте.

Проблема изучается. Постараемся в ближайшее время дать ответ.
Какая последняя версия заявки (стоп-заявки) в Orders и OnOrder ?
 
Здравствуйте.

В каждый конкретный момент времени ситуация не определена, т.к. процессы никак не синхронизированы. По прошествии же времени последний вызов OnOrder вернёт последнее актуальное состояние заявки.
Как программно корректно узнавать о наличии коннекта Квика?
 
Здравствуйте.

Нет, иных программных способов нет, только вручную (визуально).
Как программно корректно узнавать о наличии коннекта Квика?
 
Здравствуйте.

При работе на QPILE доступна функция IS_CONNECTED:

Функция предназначена для определения состояния подключения клиентского места к серверу. Возвращает 1, если клиентское место подключено и 0, если не подключено.
IS_CONNECTED ()

При работе через trans2quik.dll доступна функция TRANS2QUIK_IS_QUIK_CONNECTED:

Функция используется для проверки наличия соединения между терминалом QUIK и сервером.
long TRANS2QUIK_IS_QUIK_CONNECTED (long* pnExtendedErrorCode, LPSTR lpstrErrorMessage, DWORD dwErrorMessageSize)

При работе на QLUA доступна функция isConnected

Функция предназначена для определения состояния подключения клиентского места к серверу. Возвращает «1», если клиентское место подключено и «0», если не подключено.

Формат вызова:

NUMBER isConnected()

Подробнее см. в руководстве пользователя на клиентское место (QLUA - отдельно, в папке клиентского места, файл QLUA.chm)
API на C#
 
Здравствуйте.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Медленный экспорт в Firebird через ODBC
 
Здравствуйте.
К сожалению, мы не обладаем какой-либо достоверной статистикой по данным вопросам, поэтому затруднимся рекомендовать что-либо. В случае необходимости мы готовы помочь с оценкой производительности со стороны СУБД по приведённому ранее сценарию.
Медленный экспорт в Firebird через ODBC
 
Здравствуйте.
Задержки экспорта возникают по причине накопления очереди при экспорте, которая, в свою очередь, возникает из-за недостаточного быстродействия СУБД.
Экспорт производится синхронно, т.е. следующий SQL запрос не будет отправлен  на исполнение до тех пор, пока не будет получен ответ по предыдущему. Для таблицы QUIKPRICES среднее время выполнения запроса составило 114.19 мс, для выполнения 99627 запросов понадобилось 11376 секунд (3 часа 9 минут 36 секунд), что Вы и наблюдаете: начало экспорта в 21:25:41, окончание - 00:41:53. Прошедшее время несколько больше расчётного, т.к. оно тратится ещё и на подготовку данных и иные промежуточные операции в QUIK, но расчёт подтверждает то, что основное время затрачивается на выполнение SQL запросов: 6 минут 36 секунд против 3 часов 9 минут 36 секунд.
В данной ситуации обычно существует два пути решения - повышение производительности СУБД и/или снижение объёмов потока данных. Если мы правильно понимаем, экспорт производится из таблицы текущих параметров. К примеру, существует возможность "прореживания" данных по этой таблице путём установки "Интервала обновления данных с текущим состоянием", количество обновлений сократится, соответственно, риск возникновения очереди будет снижен.
Медленный экспорт в Firebird через ODBC
 
Здравствуйте.
Просьба произвести логирование экспорта:
- при закрытом QUIK в его папке необходимо создать пустой файл с именем quik_odbc.log
- запустить QUIK, зафиксировать факт задержек (примерное время)
- сделать архив файла quik_odbc.log и прислать нам для анализа на адрес quiksupport@arqatech.com , в теме письма обязательно укажите ссылку на эту ветку форума.
После этого необходимо удалить quik_odbc.log (при закрытом Quik), иначе он будет сильно разрастаться.
Страницы: 1
Наверх