Помню что в описании было указано что заголовки в таблицах игнорируются и экспорт DDE идет по номеру колонки - для получения максимальной скорости экспорта. Согласен с этим, но в тоже время сталкивался с тем что это создает неудобства - хочется добавить свои колонки в таблицы, и иногда - например в случае со стаканом - не хочется добавлять их в конец.
Поэтому предлагаю такую фичу:
- при запуске импорта считыать в таблицах имена колонок и запоминать их номера
- а дальше уже вести экспорт по номерам.
Т.о. и скорость будет не хуже. И колонки можно будет настроить какие угодно.
Как вариант - сделать такое только для стаканов.
Комментарии (14)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
См. документацию, 4ый пункт
См. документацию, 4ый пункт
понял что это можно делать вручную. мое предложение заключается в том чтобы это происходило автоматически в момент соединения с Квиком:
в результате
важно что на скорость импорта это не влияет, а на удобство влияет положительно.
Экспорт будет замедляться, т.к.:
Т.е. по сути ненужная функциональность - дополнительные колонки добавляет малая часть пользователей, если поменяли порядок - вставили свои пару методов в код - всё работает. Настройки Квика от версии к версии изменяется не так сильно - самые большие изменения как раз будут в 3.2 final по сравнению с 3.1. До этого изменений было минимум и больше их пока не планируется - всё что хотели - сделали и поддержали.
Если реализовать передачу заголовок таблиц - будет дополнительное замедление экспорта для всех пользователей ради мнимой пользы для считанных пользователей. Я против.
Если кому есть что возразить - напишите, может я и не прав.
Ну как я понял речь шла о том, чтобы сначала через DDE вывести названия колонок таблиц, запомнить их, а уже затем стартовать DDE без названий колонок..
Я об этом и написал - что для каждой таблицы будет вызываться лишнее действие (для того чтобы узнать где какая колонка) - за счёт этого медленнее.
Не, не очень красивое решение. Мне кажется, лучше создать метод IEnumerable QuikTrader.GetTableColumns(DdeTable), который бы возвращал реальные настройки в Квике. Метод вызывается один раз при старте и только для тех, кто его решил вызвать (тоесть не при каждом перезапуске ДДЕ и не для всех пользователей). Далее, нужно создать метод DdeTableColumnList.Sync(IEnumerable) который бы синхронизовывал бы колонки. В итоге выглядело бы так:
Может быть имеет сделать еще метод DdeTable.Sync, который бы внутри себя убирал детали:
Теперь вопрос к Президенту. Прочитайте мою подпись и ответьте, вы готовы это сделать сами и нам потом уже дать готовый код для вставки в будущие версии?
в выходные гляну насколько мне это под силу.
глянул. сходу не смог разобраться как это можно сделать, т.к. не нашел исходных кодов где идет работа с Квиком. похоже, нужно в деталях разбираться как работает QuikTerminal.GetTableSettings()
под решарпером понял что в там идет работа на достаточно низком уровне - PostMessage/SystemWindow/AllChildWindow... а раз так то видимо квик через свой API не выдает информации о таблицах и типах данных в колонках? т.е. можно только узнать все открытые окна и колонки а что это за окна и что это за колонки можно только догадываться - например по именам - это так?
также пока не понял как конфигурируются настройки для экспорта стаканов - у QuikTrader есть только одна QuotesTable - значит ли это что настройки всех стаканов обязаны совпадать?
Сырцы QuikTerminal могу прислать + других классов.
Посмотрел на код GetTableSettings, там вообщем-то уже практически все сделано. Поэтому, предлагаю такое условие. Мы вам исходники QuikTerminal + другие необходимые классы, вы нам решение с настройками. А именно. Есть еще метод QuikTerminal.OpenTable, который пока NotImplementedException бросает. Смысл его в том, что, если в Квик не открыта необходимая таблица, он ее должен сам открывать (через пункты меню, что уже, в принципе, сделано с другими вещами). Плюс, думаю, имеет смысл сделать метод по настройке таблицы, добавляя в нее необходимые колонки (получается обратная задача от той, что вы в начале предложили). Тогда можно будет сделать настройку таблиц автоматически из робота или из Verifier. По окончанию можем отослать код самого Quik коннектора. По рукам?
если без коммитмента по времени, то по-рукам. :) постораюсь в течении недели осилить, но может быть будет две недели или три - хз.
продвигается?
так замедление будет лишь на "этапе настройки" (пара секунд). А на скорость дальнейшей работы DDE никак не скажется.
При каждом старте экспорта DDE будет подниматься дополнительное окно с настройками, его чтение. На этом этапе излишняя как раз работа.
Чем текущий вариант не нравится?
да все нравится, 😀 но слишком уж много думать и понимать нужно - порог входа в S# и сложность поддержки всего комплекса в связке с квиком повышается.