Для изменения размера нажмите или перетащите

Пример работы с QuantFeedTrader

Пример работы с QuantFeedTrader демонстрирует приложение SampleQuantFeed, показанное на рисунке ниже. Исходные коды примера лежат в дистрибутиве в папке Samples/QuantHouse.

Пример QuantFEED
  1. В самом начале необходимо создать экземпляр класса шлюза QuantFeedTrader:

    C#
    // создаем шлюз
    Trader = new QuantFeedTrader();
    
    Trader.Login = Login.Text;
    Trader.Password = Password.SecurePassword;
    Trader.Address = Address.Text.To<EndPoint>();
  2. Далее следует установить требуемые обработчики событий QuantFeedTrader:

    C#
    // подписываемся на событие успешного соединения
    Trader.Connected += () =>
    {
        // возводим флаг, что соединение установлено
        _isConnected = true;
        Trader.RegisterNews();
    
        // разблокируем кнопки
        this.GuiAsync(() => ChangeConnectStatus(true));
    };
    
    Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));
    // подписываемся на событие разрыва соединения
    Trader.ConnectionError += error => this.GuiAsync(() =>
    {
        // заблокируем кнопки так как соединение было потеряно)
        ChangeConnectStatus(false);
    
        MessageBox.Show(this, error.ToString(), "Ошибка соединения");
    });
    
    Trader.Error += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
    
    Trader.NewSecurity += security => _securitiesWindow.SecurityPicker.Securities.Add(security);
    Trader.NewNews += news => _newsWindow.NewsGrid.News.Add(news);
  3. Далее необходимо выполнить подключение:

    C#
    Trader.Connect();
  4. При успешном подключении в обработчике события будет произведена подписка на новости:

    C#
    Trader.RegisterNews();

    После этого можно ожидать срабатывания событий:

    1. SecurityChanged – изменение инструмента (последней цены, цены спроса/предложения и т.д.).
    2. MarketDepthChanged – изменение стакана, запрошенного с помощью RegisterMarketDepth(Security).
    3. NewTrade – новые тики по подписанным с помощью RegisterTrades(Security) инструментам.
    4. NewNews – поступление новости.
  5. Поиск инструментов:

    C#
    private void FindClick(object sender, RoutedEventArgs e)
    {
        var wnd = new SecurityLookupWindow { Criteria = new Security { Code = "AAPL" } };
    
        if (!wnd.ShowModal(this))
            return;
    
        MainWindow.Instance.Trader.LookupSecurities(wnd.Criteria);
    }
  6. Для получения обновлений по выбранному инструменту и тиков необходимо воспользоваться методами RegisterSecurity(Security) и RegisterTrades(Security) соответственно:

    C#
    private void Level1Click(object sender, RoutedEventArgs e)
    {
        TryInitialize();
    
        var window = _level1Windows.SafeAdd(SelectedSecurity, security =>
        {
            // create level1 window
            var wnd = new Level1Window { Title = security.Code + " level1" };
    
            // subscribe on level1
            MainWindow.Instance.Trader.RegisterSecurity(security);
    
            wnd.MakeHideable();
            return wnd;
        });
    
        if (window.Visibility == Visibility.Visible)
            window.Hide();
        else
            window.Show();
    }
  7. Для запроса обновлений по стаканам необходимо воспользоваться методом RegisterMarketDepth(Security):

    C#
    private void DepthClick(object sender, RoutedEventArgs e)
    {
        var trader = MainWindow.Instance.Trader;
    
        var window = _quotesWindows.SafeAdd(SelectedSecurity, security =>
        {
            // subscribe on order book flow
            trader.RegisterMarketDepth(security);
    
            // create order book window
            var wnd = new QuotesWindow { Title = security.Id + " " + LocalizedStrings.MarketDepth };
            wnd.MakeHideable();
            return wnd;
        });
    
        if (window.Visibility == Visibility.Visible)
            window.Hide();
        else
            window.Show();
    
        TryInitialize();
    }