Событие NewTrades
Atom
30.03.2010
Tauler


Здравствуйте. Скажите, а почему событие NewTrades возыращает IEnumerable? разве оно не возникает при событии появления КАЖДОЙ сделки? Если нет, то как оно возникает? Заранее спаисибо.


Теги:


Спасибо:


1 2 3  > >>
Tauler

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


И почему то не работает следующий код:

Security sec = TerminalProcessorHelper.Trader.Securities.Where(p => p.Code == tiker.Asset.Name).Last(); TerminalProcessorHelper.Trader.RegisterTrades(sec); TerminalProcessorHelper.Trader.NewTrades += Trader_NewTrades;

void Trader_NewTrades(IEnumerable obj) { TerminalProcessorLogger.Logger.Debug("new deals"); }

в метод Trader_NewTrades ни разу не заходит. эт оможет быть изза того, что сделки по луку не идут?

Спасибо:

Tauler

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


Посмотрел - есть сделки по луку, почему ж тогда событие не вызывается : (

Спасибо:

Tauler

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


Походу я нашел ответ - у мея DDE был запущен только для интсрументов только - ой-ой-ой - мне в IEnumerable obj выдало 16384 сделки по всяким разным бумагам. как с этим бороться? мне нужн опо конкретной, вот по этой :

Security sec = TerminalProcessorHelper.Trader.Securities.Where(p => p.Code == tiker.Asset.Name).Last();

я честно горя думал, что когда вызываю TerminalProcessorHelper.Trader.RegisterTrades(sec);

этим указываю ,что именно эту бумагу мне нужно слушать. чтож он омне все вываливает? :(

Спасибо:

Mikhail Sukhov

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


Квик шлет сделки пачками, как и другие шлюзы. Поэтому коллекция сделок, а не одна.

Спасибо:

Mikhail Sukhov

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


QuikTrader.RegisterTrades не работает для Квика. Логика пусткая. Я сделал это метод из-за того, что другие шлюзы как раз поддерживают такой метод. Что касается Квика, то фильт сделок настраивается из него, путем редактирования таблицы и применения табличного фильтра. К сожалению никак.

Спасибо:

Tauler

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


тут интересный эксперимент провел. Есл ина таблице сделки поставлен фильтр , и записей в ней относительно немного (до 100 000), то событие начинает возникат ьименно в момент прихода сделки, и в коллекции всегда 1 сделка. Но если в таблице сделок до хрена - например 150 или 800 тыщ (результат за весь денб), то квик почему т овначале начинает выдавать сделки кусками по 16384 сделки, причем с какой то ему одному важной даты, выдает таких пакетов N штук, потом "неполный пакет" - например 8536 сделок, причем в этом неполном пакете последняя сделка с датой/временем когда создался DDE канаал, а потом как обычн опо 1-й сделке. Логику это поведения я так и не понял - так как колво_пакетов_по_16384_сделок*16384 != колву записей в таблице, и дата, от которой отбирает сделки для формирования этих пакетов != дате первой сделке в таблице.

Спасибо:

Mikhail Sukhov

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


А как же

В сумме разве не дает?

Спасибо:

Tauler

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


Неа. я вычислил время от кторой начинается вот это вываливание сделок

  • 11:57:18 (если точно помню). причем - либ ос этой даты, либо от вренмени ближе к вечеру - от 17 часов приблизительно, причем если это не 11:57:18, то время варьрируется. Было бы понятно если бы квик выдавал историю сделок за день, н оистория начинается то с 10.30, а не с 11:57:18, и непонятно почему то с 11:57:18, т ос какой то произвольного времени. загадка... Причем в Эксель квик честно вывалил всю таблицу. И повторюсь - магия эта при большом колве записай в таблице сделок - от 100 тысяч
Спасибо:

Mikhail Sukhov

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


Можете показать, как Вы эту дату нашли?

Спасибо:

Tauler

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


Так я ее не сам нашел, эт мне так логгер показывает.Собственно весь код:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ecng.Trading.BusinessEntities;

namespace TerminalProcessor { public class DealsAccumulator : AbstractDataAccumulator {

   protected internal DealsAccumulator(Tiker tiker)
        : base(tiker)
    {
         Security sec =

TerminalProcessorHelper.Trader.Securities.Where(p => p.Code == tiker.Asset.Name).Last(); // тут в переменной sec получается лукойл (LKOH) TerminalProcessorHelper.Trader.RegisterTrades(sec); TerminalProcessorHelper.Trader.NewTrades += Trader_NewTrades;

   }

   void Trader_NewTrades(IEnumerable<Trade> obj)
    {
        Trade trade = obj.FirstOrDefault();
        TerminalProcessorLogger.Logger.Debug(obj.Count()+ "     "
  • trade.Time);

     }
    

    }

Я лишнее убрал, оставил самое необходимое. Вся сагия происходит когда в таблице сделок много записей. я тестил на настрйоках, когда в таблицу сделок выводятся все сделки, так же когда выводятся сделки из А1(Акции)

Спасибо:
1 2 3  > >>

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

loading
clippy