myTrade.ExtensionInfo
Atom
9/21/2011
vk37


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

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

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


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

Tags:


Thanks:


< 1 2 
vk37

Avatar
Date: 9/22/2011
Reply


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


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

vk37

Avatar
Date: 9/23/2011
Reply


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


Сохраняю сделки квика с комиссией в свою БД:
Code
_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;
    }
};


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

Alexander

Avatar
Date: 9/24/2011
Reply


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

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

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

loading
clippy