API 4.2.2.24. Несколько ошибок
Atom Ответить
01.04.2014


Во вложении дебаг лог.

Ошибка 1. Выполняю поиск по коду инструмента:
Код
                            var criteria = new Security()
                            {
                                Code = "@ES#",
                            };

                            _connector.LookupSecurities(criteria);
Событие LookupSecuritiesResult срабатывает 4 раза и возвращает все 4 раза @ES#@CMEMINI. Собственно не нравится, что срабатывает 4 раза.

Ошибка 2. Выполняю тот же поиск по коду инструмента:
Код
                            var criteria = new Security()
                            {
                                Code = "@ES#",
                            };

                            _connector.LookupSecurities(criteria);
Событие NewSecurities возвращает 2 инструмента: @ES#@CME и @ES#@CMEMINI. Не нравится то, что это, похоже, один и тот же инструмент.

Ошибка 3. Регистрирую один инструмент @ES#@CMEMINI (который получен через LookupSecurities) на получение рыночных данных по измемениям инструмента, сделкам, стаканам:
Код
                        _connector.RegisterSecurity(security);
                        _connector.RegisterTrades(security);
                        _connector.RegisterMarketDepth(security);
В результате сделки и часть изменений по инструменту поступают с кодом биржи CMEMINI, а часть изменений инструментов с кодом биржи CME. При сохранении изменений инструментов на диск получаются 2 разных инструмента. См. скриншот.
Log.zip 30 KB (0) Untitled.png 104 KB (0)

Теги:


Спасибо:




3 Ответов
vk37

Фотография
Курсы
Дата: 03.04.2014
Ответить


Цитата:
В результате сделки и часть изменений по инструменту поступают с кодом биржи CMEMINI, а часть изменений инструментов с кодом биржи CME. При сохранении изменений инструментов на диск получаются 2 разных инструмента. См. скриншот.

Возможно, если не получится найти более удачных решений, можно решить вопрос так:
Код
class CustomSecurityIdGenerator : SecurityIdGenerator
{
    public override string GenerateId(string secCode, ExchangeBoard board)
    {
        return secCode + "@IQ";
    }
}
Коды инсрументов у IQ, насколько я понимаю, уникальные.
Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 03.04.2014
Ответить


vk37 Перейти
Ошибка 1. Выполняю поиск по коду инструмента:
Код
                            var criteria = new Security()
                            {
                                Code = "@ES#",
                            };

                            _connector.LookupSecurities(criteria);
Событие LookupSecuritiesResult срабатывает 4 раза и возвращает все 4 раза @ES#@CMEMINI. Собственно не нравится, что срабатывает 4 раза.
Каждый из этих вызовов приводит к срабатыванию события LookupSecuritiesResult:
Код
                        _connector.RegisterSecurity(security);
                        _connector.RegisterTrades(security);
                        _connector.RegisterMarketDepth(security);

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 05.04.2014
Ответить


vk37 Перейти
Каждый из этих вызовов приводит к срабатыванию события LookupSecuritiesResult:
Код
                        _connector.RegisterSecurity(security);
                        _connector.RegisterTrades(security);
                        _connector.RegisterMarketDepth(security);



Это не ошибка. Первоначально у коннектора нет информации об инструменте. Он его запрашивает у IQFeed. Все методы RegisterXXX асинхронные. Отсюда и 3 вызова.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy