Не могу справиться с DdeCustomTable


Не могу справиться с DdeCustomTable
Atom
11/16/2010


Масса благодарностей за библиотеку!

Создал класс
Code
[DdeCustomTable("Деривативы")]
    //[Ignore(FieldName = "IsDisposed")]
    public class DerivativesDDETable
    {
        [DdeCustomColumn("Бумага сокр.", Order = 0)]
        //[Identity]
        public string SecurityName { get; set; }

        [DdeCustomColumn("Код бумаги", Order = 1)]
        public string SecurityCode { get; set; }

        [DdeCustomColumn("До погашения", Order = 2)]
        public int TillExpiration { get; set; }

        [DdeCustomColumn("Шаг цены", Order = 3)]
        public double PriceStep { get; set; }

        [DdeCustomColumn("Ст. шага цены", Order = 4)]
        public double PriceStepPice { get; set; }

        [DdeCustomColumn("Страйк", Order = 5)]
        public double Strike { get; set; }

        [DdeCustomColumn("Баз. актив", Order = 6)]
        public string Asset { get; set; }

        [DdeCustomColumn("ГО покупателя", Order = 7)]
        public double BuyerMargin { get; set; }

        [DdeCustomColumn("ГО продавца", Order = 8)]
        public double SellerMargin { get; set; }

        [DdeCustomColumn("Дата исп.", Order = 9)]
        public DateTime FinalExpiration { get; set; }

        [DdeCustomColumn("Погашение", Order = 10)]
        public DateTime Expiration { get; set; }

        [DdeCustomColumn("Пред. оц", Order = 11)]
        public DateTime RC { get; set; }
    }


После
Code
protected override void OnConnect()
        {
            ProcessCustomTables += (type, objects) =>
            {
                // нас интересует только CustomPortfolio
                if (type == typeof(DerivativesDDETable))
                {
                    
                }
            };
            Terminal.StartDde("Деривативы");
            Terminal.StartDde(ListenedTables);

            base.OnConnect();
        }


на ProcessDataError приходит ArgumentOutOfRangeException

Деривативы
Имя параметра: category

Что это значит? Пытался работать только с одной колонкой - то же самое. По форуму ничего не нашел =(

Tags:


Thanks:


< 1 2 3 4  >
a.dobryn

Avatar
Date: 12/6/2010
Reply


MCTuTeJ|19951995
Попробуйте там же где Вы на все остальные подписываетесь.

спасибо, так и сделала =)

в итоге получилось это:
Quote:

Message "Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index"


текст целиком (не вытащить во время дебага, у error'а столько всего внутри)


все равно не понимаю - мы подписываемся на событие ProcessDataError в функции коннекта к quik'у, а ошибка вылезает при начале DDE, как оно так?
Thanks:

a.dobryn

Avatar
Date: 12/9/2010
Reply


Хм, переделала это дело под другую таблицу, и оно внезапно заработало, без нареканий.
Thanks:

a.dobryn

Avatar
Date: 12/9/2010
Reply


Только данные не обновляются после обновления таблицы в quick - где нужно проверить?
Thanks:

Mikhail Sukhov

Avatar
Date: 12/9/2010
Reply


D_Alex
Хм, переделала это дело под другую таблицу, и оно внезапно заработало, без нареканий.


Я посмотрел причину такой ошибки. Она может быть только в том случае, если у колонки индекс больше допустимого. Например, пришло меньше полей по ДДЕ.
Thanks: a.dobryn

Mikhail Sukhov

Avatar
Date: 12/9/2010
Reply


D_Alex
Только данные не обновляются после обновления таблицы в quick - где нужно проверить?


Посмотрите соседний топик. Я думаю такая же ситуация.
Thanks:

a.dobryn

Avatar
Date: 12/9/2010
Reply


Mikhail Sukhov

Я посмотрел причину такой ошибки. Она может быть только в том случае, если у колонки индекс больше допустимого. Например, пришло меньше полей по ДДЕ.

скорее всего, наверное, неправильно описала саму структуру портфеля.

Mikhail Sukhov
D_Alex
Только данные не обновляются после обновления таблицы в quick - где нужно проверить?

Посмотрите соседний топик. Я думаю такая же ситуация.


Посмотрела - там немного другая ситуация, уже полученные данные не меняются, должны добавляться новые.


upd:

Оказалось, не описан NotifyPropertyChanged (да уж, а еще жду от программы чего-то)

Делаю, как в примере

Code
private PropertyChangedEventHandler _propertyChanged;

event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { _propertyChanged += value; }
remove { _propertyChanged -= value; }
}
private void NotifyPropertyChanged(string info)
{
if (_propertyChanged != null)
_propertyChanged(this, new PropertyChangedEventArgs(info));
}



Вылезает такая штука:
Code
'TFromQuik.CustomPortfolio.INotifyPropertyChanged.PropertyChanged': containing type does not implement interface 'System.ComponentModel.INotifyPropertyChanged'
Thanks:

MCTuTeJ|19951995

Avatar
Date: 12/10/2010
Reply


Сталкивался с такой штукой - класс нужно отнаследовать от INotifyPropertyChanged
Thanks:

a.dobryn

Avatar
Date: 12/10/2010
Reply


Сделала =) Закомпилилось, работает. Вроде обновляется (у меня сейчас одна колонка с данными, ползунок ползет), но данные те же самые! Ничего не понимаю.

код в итоге такой
Code
public class CustomPortfolio : INotifyPropertyChanged
{
[DdeCustomColumn("Цена", Order = 0)]
public double Price { get; set; }

private PropertyChangedEventHandler _propertyChanged;

event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { _propertyChanged += value; }
remove { _propertyChanged -= value; }
}
private void NotifyPropertyChanged(string info)
{
if (_propertyChanged != null)
_propertyChanged(this, new PropertyChangedEventArgs(info));
}
}


Причем при каждом запуске ощущение такое, что данные одни и те же, хотя в квике они давно поменялись.
Thanks:

MCTuTeJ|19951995

Avatar
Date: 12/10/2010
Reply


Какой ползунок ? А где проверяете обновление данных ? Если в ProcessCustomTables то оно не приходит при изменении существующих данных.
Thanks:

MCTuTeJ|19951995

Avatar
Date: 12/10/2010
Reply


Михаил, а Вы не подскажете нормальный источник где можно про технологию DDE почитать ?
Thanks:
< 1 2 3 4  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy