Перешёл с Quik6 на Quik8. Вроде всё понятно, но при совершении новой сделки (например, при вводе заявки вручную в самом Квике, равно как и при использовании TRANS2QUIK.dll) экспортируется из таблицы моих сделок в Квике не один раз, как в Quik6, а 2 или 3 раза. Это весьма неудобно, т.к. в таблицу сделок в моей программе помещается не одна сделка, а 2 или 3 одинаковых сделки. Это происходит всегда, в том числе и тогда, когда количество лотов равно 1 (т.е. нельзя объяснить постепенным исполнением заявки за несколько сделок).
Эти экспортируемые сообщения о сделках чем-нибудь вообще отличаются? Я не увидел отличий.
При этом когда при начале экспорта экспортируется список ранее совершённых сделок, то они экспортируются ОДИН РАЗ.
Наверно, с этим можно как-то справиться в моей программе, но гораздо лучше было бы настроить Квик так, чтобы одна сделка экспортировалась один раз. Как это можно сделать? Буду благодарен за информацию.
Воспроизвести описываемую Вами ситуацию не удаётся. Наиболее вероятно, у Вас включен экспорт сразу из нескольких таблиц одинаковых таблиц заявок, что приводит к дублированию записей. Предлагаем проверить этот момент. Для этого предлагаем закрыть рабочее место QUIK, переименовать текущий используемый файл настрок *.wnd, создать файл quik_dde.txt и изменить его расширение на *.log. После этого запустить рабочее место, добавить одну таблицу сделок и настроить экспорт из неё по DDE. Выполнить условия для воспроизведения дубликатов в принимающей таблице. Если дубликатов не будет - то причина однозначно в используемой Вами конфигурации окон, скорее всего, гипотеза о нескольких открытых окнах окажется верной. Предлагаем проверить этот момент и отключить лишний экспорт. Если же проблема воспроизведётся при предложенной минимальной конфигурации, то просим прислать нам файл quik_dde.log для анализа по адресу quiksupport@arqatech.com
Это я, конечно, сделаю, но вряд ли это что-то прояснит, ибо:
1) В Квик-6 этой проблемы не было, она появилась только в Квик-8, причём переход на 8-ю версию был выполнен штатным обновлением (самим Квиком) с сохранением настроек;
2) Иногда сделка приходит 2 раза, а иногда - 3 раза (по одной и той же бумаге). Ведь не может окно со списком сделок то существовать, то нет?
P.S. И, кроме того, 3) Список сделок, совершённых до начала DDE-экспорта, приходит ОДНОКРАТНО. Двоение-троение имеет место только для сделок, совершённых ПОСЛЕ старта DDE-экспорта.
Я подтверждаю данный эффект как минимум с версии 7, но не придавал этому значения так как фильтр всё-равно придётся делать на случай если квик будет перезапущен. Сделок:
Событий в очереди:
Число выгрузок примерно соответствует числу испускаемых нейтронов при делении U235 (больше двух, меньше трёх), так что гипотеза о несколькоих таблицах неверна.
Просьба всё же выполнить предложенные инструкции и сообщить результат. Вместе с этим просьба ответить - откуда в Вашей СУББД появляются "первые" сделки, при условии, что экспорт по DDE из QUIK, как Вы сами пишите - не запущен?
Цитата
Борис написал: 3) Список сделок, совершённых до начала DDE-экспорта, приходит ОДНОКРАТНО. Двоение-троение имеет место только для сделок, совершённых ПОСЛЕ старта DDE-экспорта.
Моя программа при запуске инициализирует DDE-экспорт из Квика. При этом приходит список сделок (с заголовками столбцов), совершённых мною сегодня ДО ЭТОГО ЗАПУСКА МОЕЙ ПРОГРАММЫ. Сделки в этом списке приходят однократно.
Если после этого совершить сделку, то информация о ней приходит в виде одной строки и без заголовков столбцов (что вполне разумно). И вот эти-то сделки в Квик-8 приходят два или три раза, тогда как в Квик-6 они приходили однократно.
Наверно, этот глюк был уже в версии Квик-7, просто я с этой версией работать не стал, т.к. уж очень плохо она у меня загружалась.
Запрошенные Вами действия выполню, но по некоторым моим обстоятельствам сделаю это чуть позже.
В общем случае одна сделка может быть получена с сервера несколько раз, это связано с заполнением на сделке некоторых специфических параметров (например, UID, ID транзакции), которые не всегда известны на момент получения сервером данных о сделке и поэтому сервер сначала отсылает сделку как есть, а потом, по мере уточнения параметров высылает её повторно. Так как у вас свой DDE-сервер, вы можете залогировать все параметры получаемых сделок и сравнить их значения при получении сделки многократно. Если выяснится, что значения всегда одинаковые (т.е. речь идет об многократном получении одних и тех же данных), сообщите нам об этом и мы продолжим анализ.
Можно ли как-то оценить временной интервал, в течение которого должны придти все записи, относящиеся к одной сделке?
Ибо не хотелось бы каждый раз сличать пришедшую запись со всеми сделками за день. Трата процессорного времени вроде бы небольшая, но если день случится бурный и сделок будет много, то может стать существенной.