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


Добрый день.

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

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

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

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

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

Код
// Запустил два стакана 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);

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

Теги:


Спасибо:




4 Ответов
OvcharenkoVI

Фотография
Автор статей
Дата: 03.07.2012
Ответить


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

this
.When(Security.MarketDepthChanged().Or((Security2.MarketDepthChanged))
.Do(Action);
Спасибо:

Николай

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


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

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

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

Автор топика
Спасибо:

tantin

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


создаем 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()
{
//делаем тут че хотим событие будет вызываться при изменении любого из инструментов
}



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

alexeev.evg

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


Уберите "_depth_usd == null && " из if =)
Код

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 можно не присваивать
	};

Спасибо: Sergey Masyura Maxim Sukhov


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

loading
clippy