← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (19)

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

Support
Support

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

Evgeny
klim95vlad
klim95vlad Autor

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 Autor

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 Autor
        Trader.LookupSecuritiesResult += securities => 
        {
            comboBox.ItemsSource = Trader.Securities
        };

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

Support
Support

Да

klim95vlad
klim95vlad Autor
        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 Autor

Подскажите пожалуйста, а если нужно отфильтровать акции по нескольким площадкам, грубо говоря нужны только 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 Autor

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 Autor

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 Autor

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

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