Беда с GetMarketDepth
Atom
25.06.2010


Здравствуйте. такая проблема с GetMarketDepth . есть код

private void button1_Click_1(object sender, EventArgs e)
{
btnStartVolumeMeter.Enabled = false;
edtMarketDepthAfter.Items.Clear();
edtMarketDepthBefore.Items.Clear();
code = edtAssetCode.Text;

trader.NewTrades += trader_NewTrades;
dealsList.Clear();

}

void trader_NewTrades(IEnumerable<Trade> obj)
{
List<DealContainer> list2 = new List<DealContainer>();
if (obj.Count() == 1)
if (obj.First().Security.Code == code)
{
MarketDepth md = trader.GetMarketDepth(sec);

и так далее

проблеиа в том, что md всегда один и тот же - тот что был в момент
первго вызова trader_NewTrades.

запскаю шлюз так.
try
{
btnConnectToQuik.Enabled = false;
if (trader == null)
trader = new QuikTrader(edtPathToQuik.Text);
if (!trader.IsConnected)
trader.Connect();
if (trader.IsConnected)
addToLog("Подключился");
((QuikTrader)trader).StartDde(new[]
{ ((QuikTrader)trader).TradesTable,
((QuikTrader)trader).SecuritiesTable});
sec = trader.Securities.First(security =>
security.Code == edtAssetCode.Text);
((QuikTrader)trader).StartDde(sec);
}

таблицы, стаканы все есть

может быть проблема изза того, что я в обработчике события пытаюсь
получить стакан?

Теги:


Спасибо:




1 2  >
Tauler

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


А иногда сткана вообще пустой - как будто ни разу от квика он не
пришел. Это может быть изза того, что ДДЕ забит выводом сделок?

Спасибо:

Tauler

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


Нарыл на сайте

9. Сделал стакан MarketDepth потоковых. Это значит, что вызывая метод
MarketDepth.SetQuote можно не задавать индекс глубины. Для этого сам
стакан будет определять, какая это котировка (лучшая или нет), и тем
самым вытеснять старые котировки.

может тут какой то трабл? у меня версия 2.0

Спасибо:

Tauler

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


ÓÄÅÌÁÌ ÐÒÏÓÔÏÊ ÔÅÓÔ

private void button1_Click(object sender, EventArgs e)
{
edtMarketDepthAfter.Items.Clear();
edtMarketDepthBefore.Items.Clear();
MarketDepth md1 = trader.GetMarketDepth(sec);
DateTime d1 = DateTime.Now;
Thread.Sleep(4000);

DateTime d2 = DateTime.Now;
MarketDepth md2 = trader.GetMarketDepth(sec);
setListBoxItems(edtMarketDepthBefore,
marketDepthVisualizator(md1, d1));
setListBoxItems(edtMarketDepthAfter,
marketDepthVisualizator(md2, d2));
}

ÓÔÁËÁÎÙ ÏÄÉÎÁËÏ×ÙÅ. âÕÍÁÇÁ - RIU0 - ÌÉË×ÉÄÎÁÑ, ÓÔÁËÁÎ ÚÁ 4 ÓÅËÕÎÄÙ
ÔÏÞÎÏ ÍÅÎÑÌÓÑ.

ÓËÒÉÎ ×ÙÌÏÖÉÌ × ÆÁÊÌÙ ÓÔÁËÁÎÙ.jpg

Спасибо:

Mikhail Sukhov

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


1. Объект стакана MarketDepth создается всегда один раз и более не
пересоздается. Quote - создается всегда новая.
2. Конечно, если в момент запуска экспорта по стакану еще и
параллельно тысячами экспортируются все сделки, то вывод будет забит.
3. Потоковость MarketDepth.SetQuote не используется для текущих
ITrader. Это для новых версий.

Спасибо:

Tauler

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


1. Объект стакана MarketDepth создается всегда один раз и более не
пересоздается. Quote - создается всегда новая.

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

Спасибо:

Mikhail Sukhov

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


Запускали пример Sample? Стаканы там работают?

Спасибо:

Tauler

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


я верю что работают :) щас полезу посмотрю как там сделано.

Спасибо:

Tauler

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


Но вы все таки намекните, как взять из стакана текущие котировки в
текущий момент

Спасибо:

Tauler

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


Совсем ничего не пойму. как же с MarketDepth то работать? для
получения актуальн остаканая его как то принудительно рефрешить надо?
или он сам рефрешится, по аналогии SecuritiesTable?

Спасибо:

Tauler

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


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

Спасибо:
1 2  >

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

loading
clippy