← Назад

Ошибка при переходе с 4.0.22 на 4.0.23

Всем доброго дня!

Настроен экспорт таблицы "Инструменты" с дополнительными колонками:

// Создание подключения к QUIK
_trader = new QuikTrader(path);

// Экпорт дополнительных колонок инструментов
var columns = _trader.SecuritiesTable.Columns;

columns.Add(DdeSecurityColumns.Strike);
columns.Add(DdeSecurityColumns.Volatility);
columns.Add(DdeSecurityColumns.UnderlyingSecurity);
columns.Add(DdeSecurityColumns.TheorPrice);
columns.Add(DdeSecurityColumns.OptionType);
columns.Add(DdeSecurityColumns.ExpiryDate);
columns.Add(DdeSecurityColumns.LastTradePrice);
columns.Add(DdeSecurityColumns.LastTradeVolume);
columns.Add(DdeSecurityColumns.LastTradeTime);
columns.Add(DdeSecurityColumns.BestAskPrice);
columns.Add(DdeSecurityColumns.BestBidPrice);
columns.Add(DdeSecurityColumns.IndexCurrentPrice);

В версии 4.0.22. изменения инструментов в QUIK корректно отражаются в состоянии объектов Security в S#. А в версии 4.0.23. параметры Security заполняются при старте и дальше не изменяются, хотя событие OnTraderSecurutiesChanged появляется правильно.

Комментарии (20)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Alexander
Alexander

покажите распечатку полей по событию

Lester
Lester Автор

Таблица инструментов:

Газпром

При приходе события OnTraderSecurutiesChanged на 4.0.22:

4.0.22

4.0.23:

4.0.23

Похоже, что проблема касается только LastTrade, лучшие оффер и бид приходят корректно.

Alexander
Alexander

Так LastTrade у вас меняется по SecurutiesChanged? По скриншотам непонятно что не так.

Подпишитесь на событие и сделайте вывод LastTrade

Lester
Lester Автор

Распечатка полей сделана как раз из обработки события. В 4.0.22 LastTrade меняется, в 4.0.23 - нет, имеет значение, какое было при запуске.

Alexander
Alexander

Lester: Распечатка полей сделана как раз из обработки события. В 4.0.22 LastTrade меняется, в 4.0.23 - нет, имеет значение, какое было при запуске.

Запустил Sample из 4.0.23, открыл вкладку Инструменты. Последняя цена постоянно меняется. Т.е. Sample работает как надо.

Проверяйте у себя.

Lester
Lester Автор
Мистика: перезакачал дистрибутив, распаковал и запустил своего робота - работает. Возможно, проблема была в том, что версию 23 я накатил поверх 22.

Вопрос закрыт, Александру спасибо!

Вопрос открыт заново.

Lester
Lester Автор

Рано я радовался :) зато наконец удалось локализовать проблему.

Начну, пожалуй с самого начала: робот использует последнюю сделку инструмента, получая ее <u>не</u> из таблицы Все сделки (и соответственно, остлеживая событие OnTrades), а из таблицы Инструменты, в которой настроены дополнительно 3 столбца:

  • LastTradePrice
  • LastTradeVolume
  • LastTradeTime

В версии 4.0.22 все работало прекрасно, мне не требовалось вообще использовать таблицу Все сделки, т.к. достаточную мне информацию я получал с помощью дополнительных 3 столбцов из Инструменты, отлавливая события SecurutiesChanged. В версии 4.0.23 такая штука больше не катит, последняя сделка не обновляется, об этом как раз раньше и писал.

Work-around: распаковка свежескачанного архива 4.0.23, запуск Sample из папки QUIK. Видим, что в окне Инструменты последняя сделка обновляется.

Теперь открываем MainWindow.xaml.cs и после строки 117 добавляем:

var columns = Trader.SecuritiesTable.Columns;
columns.Add(DdeSecurityColumns.LastTradePrice);
columns.Add(DdeSecurityColumns.LastTradeVolume);
columns.Add(DdeSecurityColumns.LastTradeTime);

Запускаем и видим, что с включенным экспортом всех сделок поле последняя сделка не обновляется.

Если скачать релиз 4.0.22 и собрать программу с References от 22, то экспорт всех сделок работает правильно и инструмент обновляется, а также если выключить экспорт всех сделок, все равно все верно обновляется, но уже из таблицы Инструменты.

Я готов выложить как исходники, так и все что угодно. Сейчас прикладываю собранную версию Sample с 22 и 23 релизами + настройки QUIK

Может я что-то делаю не так? Комментарий к 4.0.23 не указывает на какие-либо изменения в экспорте из QUIK.

Alexander
Alexander

Скриншот квика приложите к этим своим строчкам.

var columns = Trader.SecuritiesTable.Columns; columns.Add(DdeSecurityColumns.LastTradePrice); columns.Add(DdeSecurityColumns.LastTradeVolume); columns.Add(DdeSecurityColumns.LastTradeTime);

Lester
Lester Автор

Прикладываю.

з.ы. замена LastTradeTime на LastChangeTime ничего не меняет.

Alexander
Alexander

Спасибо, будет фикс. Либо в 4.1, либо в 4.0.24 (если он будет).

Lester
Lester Автор

Это вам спасибо.

Roman0
Roman0

Такой вопрос: можно ли исправить эту ошибку? В новых (6.2+) версиях квика TransactionId == 0 стало появляться очень часто, а переходить на 4.1 это значит переписывать все связанное с получением свечей, что довольно затруднительно для одного конкретного проекта. Пожалуйста, поделитесь своими планами в отношении этой проблемы, спасибо!

Alexander
Alexander

Roman0: Такой вопрос: можно ли исправить эту ошибку? В новых (6.2+) версиях квика TransactionId == 0 стало появляться очень часто, а переходить на 4.1 это значит переписывать все связанное с получением свечей, что довольно затруднительно для одного конкретного проекта. Пожалуйста, поделитесь своими планами в отношении этой проблемы, спасибо!

Проблема, описанная в данной ветке не связана с TransactionId. Фикс для TransactionId я делал в 4.0.23, смотрите по новостям на форуме для подробностей.

Roman0
Roman0

Alexander Mukhanchikov:

Roman0: Такой вопрос: можно ли исправить эту ошибку? В новых (6.2+) версиях квика TransactionId == 0 стало появляться очень часто, а переходить на 4.1 это значит переписывать все связанное с получением свечей, что довольно затруднительно для одного конкретного проекта. Пожалуйста, поделитесь своими планами в отношении этой проблемы, спасибо!

Проблема, описанная в данной ветке не связана с TransactionId. Фикс для TransactionId я делал в 4.0.23, смотрите по новостям на форуме для подробностей. Проблема в том, что нужна версия, в которой есть фикс для TransactionId, корректно импортируется таблица инструменты и присутствует старый способ получения свечей. В 4.0.22 нет SuppportManualOrders (сейчас посмотрел, в 4.1 вроде бы тоже нет?), в 4.0.23 ошибка с импортом.

Alexander
Alexander

ещё раз. фикс с TransactionId был начиная с версии 4.0.23 В ветке 4.0.х есть проблема, описанная в данном топике. Это не влияет на экспорт таблицы инструментов (что понимается под импортом таблицы я не совсем понял).

Нужно всё вместе со всеми фиксами - вам на 4.1

В любом случае переходить надо, т.к. та версия существенно лучше и стабильнее 4.0

Roman0
Roman0

Alexander Mukhanchikov: ещё раз. фикс с TransactionId был начиная с версии 4.0.23 В ветке 4.0.х есть проблема, описанная в данном топике. Это не влияет на экспорт таблицы инструментов (что понимается под импортом таблицы я не совсем понял).

Нужно всё вместе со всеми фиксами - вам на 4.1

В любом случае переходить надо, т.к. та версия существенно лучше и стабильнее 4.0 У меня стойкое чувство, что возникло какое-то недопонимание 🙂 Спасибо, будет фикс. Либо в 4.1, либо в 4.0.24 (если он будет). Вот это относится к ошибке описанной в этом топике (обновление таблицы инструменты, в частности LastTradePrice), которая присутствует в 4.0.23, так? Вопрос: есть ли версия без этой ошибки, со старым способом обработки свечей и фиксом нулевого TransactionId (SuppportManualOrders)? А в 4.1 есть фикс для TransactionId? Я что-то не нашел в документации к 4.1 SuppportManualOrders, это как-то по-другому там называется?

Alexander
Alexander

Roman0: Вот это относится к ошибке описанной в этом топике (обновление таблицы инструменты, в частности LastTradePrice), которая присутствует в 4.0.23, так? Вопрос: есть ли версия без этой ошибки, со старым способом обработки свечей и фиксом нулевого TransactionId (SuppportManualOrders)? А в 4.1 есть фикс для TransactionId? Я что-то не нашел в документации к 4.1 SuppportManualOrders, это как-то по-другому там называется?

  1. В 4.0.23 нет ошибки обновления таблицы инструментов. Есть только ошибка обновления Security.LastTrade по таблице инструментов
  2. Нет, нету. Берите 4.1
  3. Да, есть. не Suppport, а Support
Roman0
Roman0

Alexander Mukhanchikov:

Roman0: Вот это относится к ошибке описанной в этом топике (обновление таблицы инструменты, в частности LastTradePrice), которая присутствует в 4.0.23, так? Вопрос: есть ли версия без этой ошибки, со старым способом обработки свечей и фиксом нулевого TransactionId (SuppportManualOrders)? А в 4.1 есть фикс для TransactionId? Я что-то не нашел в документации к 4.1 SuppportManualOrders, это как-то по-другому там называется?

  1. В 4.0.23 нет ошибки обновления таблицы инструментов. Есть только ошибка обновления Security.LastTrade по таблице инструментов
  2. Нет, нету. Берите 4.1
  3. Да, есть. не Suppport, а Support Большое спасибо! То есть 4.0.24 не будет точно?
Alexander
Alexander

Roman0:

Alexander Mukhanchikov:

Roman0: Вот это относится к ошибке описанной в этом топике (обновление таблицы инструменты, в частности LastTradePrice), которая присутствует в 4.0.23, так? Вопрос: есть ли версия без этой ошибки, со старым способом обработки свечей и фиксом нулевого TransactionId (SuppportManualOrders)? А в 4.1 есть фикс для TransactionId? Я что-то не нашел в документации к 4.1 SuppportManualOrders, это как-то по-другому там называется?

  1. В 4.0.23 нет ошибки обновления таблицы инструментов. Есть только ошибка обновления Security.LastTrade по таблице инструментов
  2. Нет, нету. Берите 4.1
  3. Да, есть. не Suppport, а Support Большое спасибо! То есть 4.0.24 не будет точно?

да, 4.0 больше не поддерживается

Roman0
Roman0

Alexander Mukhanchikov:

Roman0:

Alexander Mukhanchikov:

Roman0: Вот это относится к ошибке описанной в этом топике (обновление таблицы инструменты, в частности LastTradePrice), которая присутствует в 4.0.23, так? Вопрос: есть ли версия без этой ошибки, со старым способом обработки свечей и фиксом нулевого TransactionId (SuppportManualOrders)? А в 4.1 есть фикс для TransactionId? Я что-то не нашел в документации к 4.1 SuppportManualOrders, это как-то по-другому там называется?

  1. В 4.0.23 нет ошибки обновления таблицы инструментов. Есть только ошибка обновления Security.LastTrade по таблице инструментов
  2. Нет, нету. Берите 4.1
  3. Да, есть. не Suppport, а Support Большое спасибо! То есть 4.0.24 не будет точно?

да, 4.0 больше не поддерживается Еще раз спасибо! 🙂