myTrade.ExtensionInfo
Atom Ответить
21.09.2011


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

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

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


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

Теги:


Спасибо:




13 Ответов
Serg

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


Если не ошибаюсь ExtensionInfo сама не добавляется
Спасибо:

Alexander

Фотография
Дата: 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



А что там в ExtensionInfo? Вы переберите его, посмотрите :)
Спасибо:

vk37

Фотография
Курсы
Дата: 21.09.2011
Ответить


Попробую переформулировать свой вопрос.
Мне нужно выполнить дде экспорт дополнительной колонки "Комиссия ТС" из таблицы моих сделок.
Колонку в квике добавил.
В коде на событии добавления моих сделок, информация о комиссии присутствует не во всех случаях: иногда есть, а иногда нет.
Может кто знает в чем может быть проблема?
Автор топика
Спасибо:

Alexander

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


vk37 Перейти
Попробую переформулировать свой вопрос.
Мне нужно выполнить дде экспорт дополнительной колонки "Комиссия ТС" из таблицы моих сделок.
Колонку в квике добавил.
В коде на событии добавления моих сделок, информация о комиссии присутствует не во всех случаях: иногда есть, а иногда нет.
Может кто знает в чем может быть проблема?


Иногда событие о своей сделке может придти первым не по таблице своих сделок, а по таблице всех сделок - соответственно ExtensionInfo и не добавляется.
Спасибо:

Serg

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


Стало интересно как это "по таблице всех сделок"? Если например, по цене 100 в стакане стоит 2 лота на продажу из которых 1 мой. Далее проходит купля по 100 1го лота, исполнилась не моя заявка. Я получу событие о своей сделке?
Спасибо:

vk37

Фотография
Курсы
Дата: 21.09.2011
Ответить


Alexander Перейти
vk37 Перейти
Попробую переформулировать свой вопрос.
Мне нужно выполнить дде экспорт дополнительной колонки "Комиссия ТС" из таблицы моих сделок.
Колонку в квике добавил.
В коде на событии добавления моих сделок, информация о комиссии присутствует не во всех случаях: иногда есть, а иногда нет.
Может кто знает в чем может быть проблема?


Иногда событие о своей сделке может придти первым не по таблице своих сделок, а по таблице всех сделок - соответственно ExtensionInfo и не добавляется.


Каков же выход? :)
Автор топика
Спасибо:

Serg

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


не выводить все сделки или считать коммис самому)
Спасибо:

vk37

Фотография
Курсы
Дата: 21.09.2011
Ответить


Serg Перейти
не выводить все сделки или считать коммис самому)

А что значит не выводить все сделки?
Автор топика
Спасибо:

Serg

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


имею ввиду не стартовать дде экспорт таблицы всех сделок если вы используете quik
Спасибо:

Alexander

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


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

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()?
Это явно не наш метод.

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


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

loading
clippy