событие обновления стакана (MarketDepthsChanged)


событие обновления стакана (MarketDepthsChanged)
Atom
7/3/2012


Добрый день.

Хотел отлавливать изменения нескольких стаканов.

Возникла проблема - отлавливаются только изменения первого запущенного инструмента.

Подскажите как отлавливать во всех запущенных стаканах изменения.

Заранее спасибо.

С уважением,
Николай.

Code
// Запустил два стакана RIU2 и SiU2
trader.RegisterQuotes(_indx_rts);
trader.RegisterQuotes(_indx_usd);

//Пытаюсь отлавливать все изменения в обоих стаканах

	trader.MarketDepthsChanged += depths =>
						{
                            if (_depth_usd == null && _indx_usd != null && _indx_rts!= null)
                            {
                                _depth_usd = depths.FirstOrDefault(d => d.Security == _indx_usd);
                                _depth_rts = depths.FirstOrDefault(d_rts => d_rts.Security == _indx_rts);

//Отлавливаются только изменения в первом запущенном инструменте. 

Tags:


Thanks:


OvcharenkoVI

Avatar
Date: 7/3/2012
Reply


не проще сделать так:

this
.When(Security.MarketDepthChanged().Or((Security2.MarketDepthChanged))
.Do(Action);
Thanks:

Николай

Avatar
Date: 7/3/2012
Reply


Честно говоря не понял.

Что в данном случает является security ?

не понял, т.к. MarketDepthChanged - является событием QuickTrader.
A Security - относиться к StockSharp.BusinessEntities

Thanks:

tantin

Avatar
Date: 7/7/2012
Reply


создаем 2 стратегии по разным инструментам

_strategy_lkoh = new MyStrategy()
{
Volume = 1,
Security = _lkoh,
Portfolio = Portfolios.SelectedPortfolio,
Trader = _trader,
};
_strategy_lkoh.SecurityChanged += SecurityChanged;
_strategy_gazp = new MyStrategy2()
{
Volume = 1,
Security = _gazp,
Portfolio = Portfolios.SelectedPortfolio,
Trader = _trader,
};
_strategy_gazp.SecurityChanged += SecurityChanged;
private void SecurityChanged()
{
//делаем тут че хотим событие будет вызываться при изменении любого из инструментов
}



я так делаю, возможно это не очевидный и не лучший вариант, однако работает
Thanks:

alexeev.evg

Avatar
Date: 7/13/2012
Reply


Уберите "_depth_usd == null && " из if =)
Code

Trader.NewMarketDepths += depths =>
{

	foreach (var d in depths)
	{
		if (d.Security == _security1)
			_depth1 = d;
		if (d.Security == _security2)
			_depth2 = d;
	}

};

Trader.MarketDepthsChanged += depths =>
	{
	      //тут значения свойствам _depth1 и _depth1 можно не присваивать
	};

Thanks: Sergey Masyura Maxim Sukhov


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

loading
clippy