myTrade.ExtensionInfo
Atom
21.09.2011
vk37


Здравствуйте.

Имею следующий код:

Код
_trader.MyTradesTable.Columns.Add(DdeMyTradeColumns.Commission);
_trader.NewMyTrades += myTrades =>
{
    // В некоторых случаях myTrade.ExtensionInfo.Count == 0;
    // А в некоторых myTrade.ExtensionInfo.Count == 1;
};


В чем может быть проблема?
Пробовал в версиях 3.2.10-3.2.11

Теги:


Спасибо:


< 1 2 
vk37

Фотография
Дата: 22.09.2011
Ответить


Alexander
Перепроверил - должно быть всё ок.
Можно пример когда ExtensionInfo имеет размер 0 и показать скриншот что при этом он должен быть не 0?


Вышлю по эл. почте скриншоты и код. Скиньте в личку адрес.
Спасибо:

vk37

Фотография
Дата: 23.09.2011
Ответить


Alexander
Перепроверил - должно быть всё ок.
Можно пример когда ExtensionInfo имеет размер 0 и показать скриншот что при этом он должен быть не 0?


Сохраняю сделки квика с комиссией в свою БД:
Код
_trader.MyTradesTable.Columns.Add(DdeMyTradeColumns.Commission);
_trader.NewMyTrades += myTrades =>
{
    __log.InfoFormat("Мои сделки {0} появились:", myTrades.Count());
    var str = string.Empty;

    foreach (var myTrade in myTrades)
        str += "; " + myTrade.Trade.Id;

    if (!string.IsNullOrEmpty(str))
        __log.InfoFormat("  {0}", str.Substring(2));

    var sw = new Stopwatch();
    sw.Start();

    try
    {
        int savedCounter = 0;
        
        using (var session = SessionFactory.OpenSession())
        using (var tx = session.BeginTransaction())
        {
            var idsFromDb = session.QueryOver<RealTimeMyTrade>()
                .Select(t => t.Id)
                .List<long>();

            foreach (var myTrade in myTrades)
            {
                if (!idsFromDb.Contains(myTrade.Trade.Id))
                {
                    decimal signedVolume = 0;

                    if (myTrade.Order.Direction == OrderDirections.Buy)
                        signedVolume = myTrade.Trade.Volume;
                    else if (myTrade.Order.Direction == OrderDirections.Sell)
                        signedVolume = -myTrade.Trade.Volume;
                    else
                        throw new ArgumentOutOfRangeException();

                    var realTimeMyTrade = new RealTimeMyTrade()
                    {
                        Id = myTrade.Trade.Id,
                        DateTime = myTrade.Trade.Time,
                        Ticker = myTrade.Trade.Security.Code,
                        ClassCode = myTrade.Trade.Security.Class,
                        Price = myTrade.Trade.Price,
                        Volume = signedVolume,
                        OrderId = myTrade.Order.Id,
                        Comment = myTrade.Order.Comment,
                        ParsedComment = myTrade.Order.ParsedComment(),
                        Comission = myTrade.ExtensionInfo.Count > 0 ?
                                (decimal)myTrade.ExtensionInfo[DdeMyTradeColumns.Commission]
                                : 0,
                    };

                    if (realTimeMyTrade.DateTime > QuikSection.Default.MyTradesHistorySince)
                    {
                        session.Save(realTimeMyTrade);
                        savedCounter++;
                    }
                }
            }
            tx.Commit();
        }

        sw.Stop();
        if (savedCounter > 0)
            __log.InfoFormat("Мои сделки сохранено в базу {0} за {1}", savedCounter, sw.Elapsed);

    }
    catch (Exception ex)
    {
        __log.InfoFormat("Ошибка при сохранении quik сделок: {0}", ex);
        Model.IsTradingStarted = false;
        throw;
    }
};


К сообщению прикреплены скриншоты со сделками в квике и в моей БД
Спасибо:

Alexander

Фотография
Дата: 24.09.2011
Ответить


Что такое ParsedComment()?
Это явно не наш метод.

По скриншоту вашей БД видно, что полетело как раз начиная с комментария.
Спасибо:
< 1 2 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy