← Zurück

Рацпредложение по таблице Инструменты

Вначале приведу картинку из доки:

Предлагаю удалить следующие колонки:

  1. Полное название.
  2. Спрос (цена).
  3. Спрос (объем).
  4. Предложение (цена).
  5. Предложение (объем).
  6. Время послед. сделки.
  7. Цена послед. сделки.
  8. Объем послед. сделки.
  9. Цена открытия.
  10. Макс цена сделки.
  11. Мин цена сделки.
  12. Закрытие.

Тоесть, превратить в это

Причина - сделать настройки проще (проблема с временем послед сделки самая острая). Скажем, сейчас таблица с Инструментами самая тяжелая. Я не беру в расчет стоп-заявки, так как это все же больше экзотика, чем реально полезная вещь. Разберемся по пунктам.

  1. Оно кому-нибудь нужно? 2-5. Security.BestBid + BestAsk - сейчас есть медленное копия MarketDepth. Не могу найти причину, когда нужна такая информация (ей по сути верить нельзя). 6-8. Security.LastTrade - тоже самое, что и пред пункт. 9-12 - оно кому-нибудь нужно?

Как вариант перехода - сделать опцию в QuikTrader. Если она включена - используется укороченный вариант таблицы с инструментами. Для совместимости, BestBid BestAsk LastTrade будут заполняться, но уже реальными данными (из стакана и тиковых сделок).

Ну как?

Kommentare (34)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

Я за, если данную таблицу можно будет без проблем дополнять своими данными, как и раньше (нижний\верхний лимит, к примеру).

Mikhail Sukhov
Mikhail Sukhov Autor

Alexander: Я за, если данную таблицу можно будет без проблем дополнять своими данными, как и раньше (нижний\верхний лимит, к примеру).

Возможность добавления своих колонок остается как есть.

MCTuTeJ|19951995
MCTuTeJ|19951995

Я за - сколько ни писал прог - ничем почти из этого не пользовался.

Alexander
Alexander

Михаил, задумался как получить Security.LastTrade в предлагаемой новой реализации. Как это будет быстрее сделать? MarketDepth в текущем виде не имеет такого свойства...

Mikhail Sukhov
Mikhail Sukhov Autor

Alexander: Михаил, задумался как получить Security.LastTrade в предлагаемой новой реализации. Как это будет быстрее сделать? MarketDepth в текущем виде не имеет такого свойства...

Не понял смысла. Есть стакан, а есть сделка. Одно с другим не пересекается.

Alexander
Alexander

Mikhail Sukhov:

Alexander: Михаил, задумался как получить Security.LastTrade в предлагаемой новой реализации. Как это будет быстрее сделать? MarketDepth в текущем виде не имеет такого свойства...

Не понял смысла. Есть стакан, а есть сделка. Одно с другим не пересекается.

Тогда это я немного не понял вначале =) Как предлагается получать последнюю сделку по инструменту в новой реализации таблицы инструменты? Сейчас я это делаю через Security.LastTrade

Mikhail Sukhov
Mikhail Sukhov Autor

Alexander:

Mikhail Sukhov:

Alexander: Михаил, задумался как получить Security.LastTrade в предлагаемой новой реализации. Как это будет быстрее сделать? MarketDepth в текущем виде не имеет такого свойства...

Не понял смысла. Есть стакан, а есть сделка. Одно с другим не пересекается.

Тогда это я немного не понял вначале =) Как предлагается получать последнюю сделку по инструменту в новой реализации таблицы инструменты? Сейчас я это делаю через Security.LastTrade

Так же как и раньше. Внешний интерфейс не меняется. Но для этого необходимо будет запустить экспорт по таблице Все сделки.

Alexander
Alexander

Mikhail Sukhov:

Alexander:

Mikhail Sukhov:

Alexander: Михаил, задумался как получить Security.LastTrade в предлагаемой новой реализации. Как это будет быстрее сделать? MarketDepth в текущем виде не имеет такого свойства...

Не понял смысла. Есть стакан, а есть сделка. Одно с другим не пересекается.

Тогда это я немного не понял вначале =) Как предлагается получать последнюю сделку по инструменту в новой реализации таблицы инструменты? Сейчас я это делаю через Security.LastTrade

Так же как и раньше. Внешний интерфейс не меняется. Но для этого необходимо будет запустить экспорт по таблице Все сделки.

Очень здорово тогда =)

Михаил, кстати, не знаете почему экспорт данных по DDE на Win7 запускается на порядок медленнее, чем на Win XP? Как на Win Vista не знаю, но с XP разница мягко говоря заметна - раз в 5-10.

Mikhail Sukhov
Mikhail Sukhov Autor

Alexander: Михаил, кстати, не знаете почему экспорт данных по DDE на Win7 запускается на порядок медленнее, чем на Win XP? Как на Win Vista не знаю, но с XP разница мягко говоря заметна - раз в 5-10.

Уже писали об этом. Нет, пока не знаю. Хотите провести эксперимент и выяснить?

Alexander
Alexander

Mikhail Sukhov:

Alexander: Михаил, кстати, не знаете почему экспорт данных по DDE на Win7 запускается на порядок медленнее, чем на Win XP? Как на Win Vista не знаю, но с XP разница мягко говоря заметна - раз в 5-10.

Уже писали об этом. Нет, пока не знаю. Хотите провести эксперимент и выяснить?

Я не против экспериментов, у себя уже пытался - и 32 битная версия, и 64 битная. В любом случае любой экспорт стартует медленнее. В независимости от размеров таблицы...

Den
Den

Mikhail Sukhov:

Alexander: Михаил, кстати, не знаете почему экспорт данных по DDE на Win7 запускается на порядок медленнее, чем на Win XP? Как на Win Vista не знаю, но с XP разница мягко говоря заметна - раз в 5-10.

Уже писали об этом. Нет, пока не знаю. Хотите провести эксперимент и выяснить?

Решил написать свои изыскания:

на одном форуме читал про проблему, что GetPixel стал работать в десятки раз медленнее на Win7 по сравнению с Win XP. Человеку надо было читать цвет пикселей игрушки, запущенной в браузере. В итоге он разобрался и написал следущее:

"если получать пиксель используя хэндл рабочего стола (или контекст ус-ва, связанный с раб. столом в случае с GetPixel()), то тупит , если использовать например хэндл браузера, то работает быстро. Вот такая вот магия... "

Михаил, возможно из этого вы по аналогии сможете решить проблему долгого поиска окон на Win7: брать Handle от окна Quik для поиска таблиц.

MCTuTeJ|19951995
MCTuTeJ|19951995

Пользуюсь 64-битной версией Win7. Иногда экспорт стартуется мгновенно, а иногда - порядка 10 секунд. Выявить закономерность пока не удалось...

Иванов Андрей
Иванов Андрей

Я не пользовался и не планировал.

gs
gs
  1. Конечно необходимо уменьшить количество колонок в Таблице текущих параметров. Не очень понятно зачем Вам с самoго начала понадобилась такая огромная таблица Тек. параметров с ненужной информацией.
  2. В то же время хочу отметить. Основную нагрузку на трафик и соответственно существенные задержки дает Таблица всех сделок. Так, что не думаю, что убрав колонки из Таблицы текущих параметров, Вы добьетесь того, чего хотите - существенно разгрузить трафик между Квиком и Приложением.
  3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили.
Alexander
Alexander

gs: 3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили.

вот этого делать точно не надо по таблице всех сделок строится всё что можно, включая свечки

большинство стратегий завязаны как раз на ленту

если и убирать так только то, что безболезненно скажется на всех пользователях.

Mikhail Sukhov
Mikhail Sukhov Autor

gs:

  1. Конечно необходимо уменьшить количество колонок в Таблице текущих параметров. Не очень понятно зачем Вам с самoго начала понадобилась такая огромная таблица Тек. параметров с ненужной информацией.
  2. В то же время хочу отметить. Основную нагрузку на трафик и соответственно существенные задержки дает Таблица всех сделок. Так, что не думаю, что убрав колонки из Таблицы текущих параметров, Вы добьетесь того, чего хотите - существенно разгрузить трафик между Квиком и Приложением.
  3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили.
  1. Пошел на поводу распространенных АПИ. 2 и 3. А это как раз опциональная таблица. Ее может и не быть. И без нее роботы работают на ура (до тех пор пока не потребуются тиковые данные). Надо лишь запускать экспорт не через QuikTrader.StartExport, а через указание конкретных таблиц QuikTrader.Terminal.StartDde(DdeTable[] tables), где просто не указывать таблицу Все сделки.
gs
gs

Alexander:

gs: 3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили.

вот этого делать точно не надо по таблице всех сделок строится всё что можно, включая свечки

большинство стратегий завязаны как раз на ленту

если и убирать так только то, что безболезненно скажется на всех пользователях.

Вся ключевая информация, в том числе и для построения свечек и , соответственно, для всех дочерних от свечек индикаторов, есть в Таблице тек.параметров - а именно: Ticker, LastTrade_Time, LastTrade_Price, LastTrade_Quantity.

Можете ли Вы привести конкретный пример того, что Вы не можете построить исходя из этих полей, и зачем Вам нужна Таблица Всех сделок?

Alexander
Alexander

gs:

Alexander:

gs: 3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили.

вот этого делать точно не надо по таблице всех сделок строится всё что можно, включая свечки

большинство стратегий завязаны как раз на ленту

если и убирать так только то, что безболезненно скажется на всех пользователях.

Вся ключевая информация, в том числе и для построения свечек и , соответственно, для всех дочерних от свечек индикаторов, есть в Таблице тек.параметров - а именно: Ticker, LastTrade_Time, LastTrade_Price, LastTrade_Quantity.

Можете ли Вы привести конкретный пример того, что Вы не можете построить исходя из этих полей, и зачем Вам нужна Таблица Всех сделок?

Таблицу текущих параметров в квике найти не смог. По умолчанию (с помощью StartExport) она точно не экспортируется. Таблица всех сделок мне нужна для правильного проведения кластерного анализа, на основе которого я и вхожу \ выхожу в сделку.

Как было предложено Михаилом - не хотите Все сделки - не экспортируйте. :)

dart
dart

gs: 3. Лучше было бы убрать Таблицу всех сделок - вообще. А LastTradePrice брать именно из Таблицы текущих параметров, также убрав поля которые Вы обозначили. Экспорт таблицы всех сделок необходим по многим причинам. Без неё S# много потеряет. Как правильно уже говорили, если она не нужна просто не экспортируйте.

Mikhail Sukhov
Mikhail Sukhov Autor

gs: 2. В то же время хочу отметить. Основную нагрузку на трафик и соответственно существенные задержки дает Таблица всех сделок.

Кстати, пропустил момент. А что за трафик? Действительно, есть нагрузка на обработку тиков при старте, когда робот стартует не в начале сессии. Но там идет обработка пакетов в 16 тыч сделок. Потом то такое количество сделок просто отсутствует.

Кто еще подобное ощущает?

dart
dart

по поводу колонки Lasttrade в таблице Инструменты. Начиная с 3 версии её нет и LastTrade берётся из ТВС. Между тем, колонку Lasttrade из Инструментов я как раз использую в случаях когда данные в ТВС приходят с задержкой. Может имеет смысл её восстановить?

Mikhail Sukhov
Mikhail Sukhov Autor

dart: по поводу колонки Lasttrade в таблице Инструменты. Начиная с 3 версии её нет и LastTrade берётся из ТВС. Между тем, колонку Lasttrade из Инструментов я как раз использую в случаях когда данные в ТВС приходят с задержкой. Может имеет смысл её восстановить?

QuikTrader.IsNewSecurityTable

Иванов Андрей
Иванов Андрей

Про таблицу всех сделок -- дешевле просто отредактировать эту таблицу в Квике и убрать оттуда все классы =) Тогда она не будет ничего экспортировать и для этого не придётся писать левый код.

Alter
Alter

Я тоже использую Lasttrade для корректной обработки данных при задержках. QuikTrader.IsNewSecurityTable помечено как obsolete, поэтому хочется уточнить, останется ли это свойство в дальнейшем, или лучше сразу самому добавить Lasttrade в обновленную таблицу инструментов как дополнительную колонку?

Mikhail Sukhov
Mikhail Sukhov Autor

Alter: Я тоже использую Lasttrade для корректной обработки данных при задержках. QuikTrader.IsNewSecurityTable помечено как obsolete, поэтому хочется уточнить, останется ли это свойство в дальнейшем, или лучше сразу самому добавить Lasttrade в обновленную таблицу инструментов как дополнительную колонку?

Самому. Я это свойство сделал, чтобы можно было поддержать старые приложения. Но только для перехода.

Alter
Alter

Добавил следующий код:


((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.LastChangeTime);
...
DateTime lastTradeTime = ((DateTime)WorkingSecurity.ExtensionInfo[DdeSecurityColumns.LastChangeTime]);

В квике добавил в конец таблицы инструментов колонку "Время последнего изменения". При запуске исключение System.InvalidOperationException: Для таблицы 'инструменты' не была найдена колонка 'Количество в последней сделке'. Я что-то не понимаю, или в DdeSecurityColumns колонки перепутаны?

Mikhail Sukhov
Mikhail Sukhov Autor

Alter: Добавил следующий код:

((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.LastChangeTime); ... DateTime lastTradeTime = ((DateTime)WorkingSecurity.ExtensionInfo[DdeSecurityColumns.LastChangeTime]);

> 
> В квике добавил в конец таблицы инструментов колонку "Время последнего изменения". При запуске исключение System.InvalidOperationException: Для таблицы 'инструменты' не была найдена колонка 'Количество в последней сделке'. Я что-то не понимаю, или в DdeSecurityColumns колонки перепутаны?

Время последней сделки требует колонки с объемом и ценой. Вот такая зависимость.
Alter
Alter

То есть надо добавить еще DdeSecurityColumns.LastTradePrice и DdeSecurityColumns.LastTradeVolume? Порядок значения не имеет?

Mikhail Sukhov
Mikhail Sukhov Autor

Alter: То есть надо добавить еще DdeSecurityColumns.LastTradePrice и DdeSecurityColumns.LastTradeVolume? Порядок значения не имеет?

Порядок зависит от того, что вы в Квике сделаете.

Alter
Alter

Ну да, это понятно. Спасибо.

Alter
Alter

И опять ничего не получилось. Добавляю колонки в квике и коде:


            ((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.ExpiryDate);
            ((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.MinStepPrice);
            ((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.LastChangeTime);
            ((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.LastTradePrice);
            ((QuikTrader)Trader).SecuritiesTable.Columns.Add(DdeSecurityColumns.LastTradeVolume);

Смотрю в ExtensionInfo, а там только цена последней сделки и количество последней сделки. К ExpiryDate и MinStepPrice я обращался без ExtensionInfo, через уже имеющиеся свойства Security. Но если я буду лезть в Security.LastTrade.Time, то там будет время последней экспортированной сделки из таблицы всех сделок, а не LastChangeTime из инструментов. Как быть?

Mikhail Sukhov
Mikhail Sukhov Autor

Alter: Но если я буду лезть в Security.LastTrade.Time, то там будет время последней экспортированной сделки из таблицы всех сделок, а не LastChangeTime из инструментов. Как быть?

Да, похоже так не получиться, действительно идет перезапись.

Alter
Alter

Михаил, в S# 3.1 можно добраться до времени последнего изменения из таблицы инструментов?

Mikhail Sukhov
Mikhail Sukhov Autor

Alter: Михаил, в S# 3.1 можно добраться до времени последнего изменения из таблицы инструментов?

Хм, забыл про этот недочет... Ок, пока идет бета тестированию, его реализую.

Я в текущей бете исправил, чтобы добавление какой-то колонки не требовало добавление другой. Может вы это проверите?