Mikhail Sukhov
|
Date: 11/17/2010
|
|
Thanks:
|
|
|
|
|
Foxbow
|
Date: 11/17/2010
Спасибо, прошу прощения за невнимательность =)
|
|
Thanks:
|
|
|
|
|
a.dobryn
|
Date: 12/1/2010
Тоже есть вопрос. При создании описания портфеля имеют значения названия полей? Они должны быть такими же, как и в Quik? У меня так: Описание полей на QPile: CodePARAMETER DATE; PARAMETER_TITLE Дата; PARAMETER_DESCRIPTION Дата сделки; PARAMETER_TYPE STRING(32); END PARAMETER TIME; PARAMETER_TITLE Время; PARAMETER_DESCRIPTION Время; PARAMETER_TYPE String(32); END
PARAMETER PRICE; PARAMETER_TITLE Цена; PARAMETER_DESCRIPTION Цена; PARAMETER_TYPE Numeric(14,2); END
PARAMETER seccode; PARAMETER_TITLE Код; PARAMETER_DESCRIPTION Код; PARAMETER_TYPE String(32); END описание полей на S#: Code[DdeCustomColumn("Дата", Order = 0)] public string Data { get; set; }
[DdeCustomColumn("Время", Order = 1)] public string Time { get; set; }
[DdeCustomColumn("Цена", Order = 2)] public double Price { get; set; }
[DdeCustomColumn("Код", Order = 3)] public string Code { get; set; } В итоге после показа портфеля в программе окно есть, но пустое. Соединение происходит нормально.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 12/1/2010
D_AlexВ итоге после показа портфеля в программе окно есть, но пустое. Соединение происходит нормально. В начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет?
|
|
Thanks:
|
|
|
|
|
a.dobryn
|
Date: 12/2/2010
Mikhail SukhovВ начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет? ProcessCustomTables вызывается, как в примере Codethis.Trader.ProcessCustomTables += (type, objects) => { if (type == typeof(CustomPortfolio)) _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>()); };
а как использовать ProcessDataError?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 12/2/2010
D_AlexMikhail SukhovВ начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет? ProcessCustomTables вызывается, как в примере Codethis.Trader.ProcessCustomTables += (type, objects) => { if (type == typeof(CustomPortfolio)) _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>()); };
а как использовать ProcessDataError? Прочитайте как использовать события в C# и для чего они нужны. После этого станет значительно понятнее как используется ProcessCustomTables и что такое +=
|
|
Thanks:
|
|
|
|
|
a.dobryn
|
Date: 12/3/2010
С событиями вроде разобралась, что такое += поняла, как подписываться на ошибки тоже. Только где именно надо использовать ProcessDataError? есть еще ConnectionError. Какие именно функции надо проверять и где?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 12/3/2010
D_AlexС событиями вроде разобралась, что такое += поняла, как подписываться на ошибки тоже. Только где именно надо использовать ProcessDataError? есть еще ConnectionError. Какие именно функции надо проверять и где? Это не функции, а обработчики событий. Подпишитесь на событие ITrader.ProcessDataError, и, если в его обработчик что-нибудь придет, сохраните ошибку (или просто запустите под Debug и поставьте точку останова). ConnectionError - это другое событие, связанное с ошибкой соединения. Вы подключиться смогли к Квик?
|
|
Thanks:
|
|
|
|
|
a.dobryn
|
Date: 12/3/2010
|
|
|
|
Да, обработчики, я не совсем правильно сформулировала вопрос =) нужно подписаться на это событие, но где? В какой момент? К квику подключилась. Есть функция Connect_Click, но, раз подключение успешно выполняется, но надо это делать не там? Хотя работа с портфелем вроде осуществляется там, до старта DDE Code private void Connect_Click(object sender, RoutedEventArgs e) { if (!_isConnected) { if (this.Path.Text.IsEmpty()) MessageBox.Show(this, "Путь к Quik не выбран"); else { if (this.Trader == null) { // создаем шлюз this.Trader = new QuikTrader(this.Path.Text);
// возводим флаг, что соединение установлено _isConnected = true;
// подписываемся на событие ошибки соединения this.Trader.ConnectionError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString()));
// добавляем тип CustomPortfolio для преобразования строчки из таблица в Портфель в объект CustomPortfolio this.Trader.AddCustomTableMapping(typeof(CustomPortfolio));
this.Trader.ProcessCustomTables += (type, objects) => { // нас интересует только CustomPortfolio if (type == typeof(CustomPortfolio)) _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>()); };
this.Trader.Connected += () => this.GuiAsync(() => { this.ShowPortfolio.IsEnabled = true; this.ExportDde.IsEnabled = true;
_isConnected = true; this.ConnectBtn.Content = "Отключиться"; });
this.Trader.Disconnected += () => this.GuiAsync(() => { _isConnected = false; this.ConnectBtn.Content = "Подключиться"; }); } this.Trader.Connect(); } } else this.Trader.Disconnect(); }
Извиняюсь за столь глупые вопросы, пытаюсь понять все с наскока :-[
|
|
Thanks:
|
|
|
|
|
MCTuTeJ|19951995
|
Date: 12/3/2010
Попробуйте там же где Вы на все остальные подписываетесь.
|
|
Thanks:
|
|
|
|