← 戻る

Инструменты Quik

Подскажите, может кто сталкивался с проблемой и как ее лучше решить. Программа загружает в комбобокс все возможные инструменты из quik, а их очень очень много. Можно ли как-то настройками конфигурации в Квике ограничить нужные инструменты, которые будут загружаться в приложение или же лучше сделать поиск по комбобоксу? Поиска хочу избежать, так как в комбобоксе тип данных Security[], а поиск получилось сделать только по String.

このトピックは参考になりましたか?

トピックを共有

コメント (19)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Support
Support

Можно так: 1) Установить QuikTrader.RequestAllSecurities = false... 2) Нужные инструменты запросить в обработчике события Security.Connected при помощи Connector.LookupSecurities() 3) Инструменты будет получены в событии Connector.LookupSecuritiesResult() 4. В результате Connector.Securities будет содержать только запрошенные инструменты.

Evgeny
klim95vlad
klim95vlad 著者

Support: Можно так: 1) Установить QuikTrader.RequestAllSecurities = false... 2) Нужные инструменты запросить в обработчике события Security.Connected при помощи Connector.LookupSecurities() 3) Инструменты будет получены в событии Connector.LookupSecuritiesResult() 4. В результате Connector.Securities будет содержать только запрошенные инструменты.

А, если не сложно, не могли бы Вы написать на примере одного любого инструмента.

Support
Support

trader.RequestAllSecurities = false; trader.Connected += () => { trader.LoocupSecurities(new Secucrity() { Id = "RIH7@FORTS", Board = ExchangeBoard.Forts });

}

trader.LookupSecuritiesResult += securities => { //TODO Здесь получаем запрошенные инструменты... Теперь в trader.Securities будет только RIH7@FORTS }

klim95vlad
klim95vlad 著者

Support: trader.RequestAllSecurities = false; trader.Connected += () => { trader.LoocupSecurities(new Secucrity() { Id = "RIH7@FORTS", Board = ExchangeBoard.Forts });

}

trader.LookupSecuritiesResult += securities => { //TODO Здесь получаем запрошенные инструменты... Теперь в trader.Securities будет только RIH7@FORTS }

А как получаем запрошенные инструменты? (Что нужно прописать в блоке trader.LookupSecuritiesResult += securities => , который Вы закомментрировали)

И после всего этого использовать стандартное? Trader.NewSecurities += securities => this.GuiAsync(() => { comboBox.ItemsSource = Trader.Securities;

        });
Support
Support

.

klim95vlad
klim95vlad 著者
        Trader.LookupSecuritiesResult += securities => 
        {
            comboBox.ItemsSource = Trader.Securities
        };

Вот так должно быть?

Support
Support

Да

klim95vlad
klim95vlad 著者
        Trader.RequestAllSecurities = false;
        Trader.Connected += () =>
        {
            Trader.LookupSecurities(new Security() { Id = "RIH7@FORTS", Board = ExchangeBoard.Forts });

        };

        Trader.NewSecurities += securities => this.GuiAsync(() =>
        {

            Security.ItemsSource = (Trader.Securities);
        });

        Trader.LookupSecuritiesResult += securities =>
        {
            Security.ItemsSource = Trader.Securities
        };

Вот так все сделал, как Вы сказали, а в последнем блоке начиная с "Trader.LookupSecuritiesResult" выдает ошибку "Делегат "Action<Exception, IEnumerable<Security>>" не принимает аргументы 1"

Георгий
Георгий

А как получить инструменты только по определенному рынку (только акции например)?

Support
Support

trader.Connected += () => { trader.LoocupSecurities(new Secucrity() ); }

Support
Support

Trader.LookupSecuritiesResult += (ex, securities) => ; В последней версии еще один аргумент добавили

Support
Support

Support: Trader.LookupSecuritiesResult += (ex, securities) => { if (ex != null) return; Security.ItemsSource = Trader.Securities }; В последней версии еще один аргумент добавили

klim95vlad
klim95vlad 著者

Подскажите пожалуйста, а если нужно отфильтровать акции по нескольким площадкам, грубо говоря нужны только TQBR, FORTS и CETS, это возможно реализовать?

Support
Support

Для каждой площадки вызываете LookupSecurities Trader.LookupSecurities(new Security() { Id = "@FORTS", Board = ExchangeBoard.Forts }); Trader.LookupSecurities(new Security() { Id = "@TQBR", Board = ExchangeBoard.Micex });

klim95vlad
klim95vlad
klim95vlad 著者

Support: Для каждой площадки вызываете LookupSecurities Trader.LookupSecurities(new Security() { Id = "@FORTS", Board = ExchangeBoard.Forts }); Trader.LookupSecurities(new Security() { Id = "@TQBR", Board = ExchangeBoard.Micex }); Делаю вот так, отображает только TQBR все равно Trader.RequestAllSecurities = false; Trader.Connected += () => { Trader.LookupSecurities(new Security() ); Trader.LookupSecurities(new Security() );

        };

Trader.LookupSecuritiesResult += (ex, securities) => ;

        Trader.NewSecurities += securities => this.GuiAsync(() =>
        {

            Security.ItemsSource = (Trader.Securities);


        });
Support
Support

сделайте как я написал

klim95vlad
klim95vlad 著者

Support: сделайте как я написал

Вот так имеете ввиду? Trader.Connect();

        Trader.RequestAllSecurities = false;

        Trader.LookupSecurities(new Security() { Board = ExchangeBoard.MicexTqbr });
        Trader.LookupSecurities(new Security() { Board = ExchangeBoard.MicexCets });

        Trader.LookupSecuritiesResult += (ex, securities) =>
        {
            Security.ItemsSource = Trader.Securities;
        };


        Trader.NewSecurities += securities => this.GuiAsync(() =>
        {
            Security.ItemsSource = (Trader.Securities);
        });

Тоже не проходит

klim95vlad
klim95vlad 著者

Заработало, спасибо большое!

Георгий
Георгий
 Id = "@TQBR",
``` потеряли