MarketDepthsChanged !!!
Atom
12/27/2012


Добрый вечер.
Помогите разобраться вот с чем.
Как подписаться на изменения котировок конкретного стакана?
Событие MarketDepthsChanged - подписывается на изменение последнего зарегистрированного стакана. А если я зарегистрировал их несколько (к примеру 3) как подписаться на изменение котировок 2-ого стакана? Или придется 2-ой стакан снова регистрировать и к нему уже подвязываться?
Как, к примеру, через Trader.MarketDepthsChanged += Changeddepths подписаться на изменение котировок нужного стакана, а не последнего?

Tags:


Thanks:


1 2 3  >
Moadip

Avatar
Date: 12/27/2012
Reply


По событию MarketDepthsChanged будут приходить изменения по всем зарегистрированным стаканам - IEnumerable<MarketDepth>.
Можно фильтрануть пришедшие стаканы по Security и взять нужный.
Code

_quikTrader.MarketDepthsChanged += enumerable =>
{
	var depth = enumerable.Where(d => d.Security == _instr1);
	...
};


Другой вариант. После того как зарегистрирован стакан по инструменту, взять его и подписаться на событие QuotesChanged
Code

private MarketDepth _marketDepth;

_quikTrader.RegisterMarketDepth(_instr1);
_marketDepth = _quikTrader.GetMarketDepth(_instr1);

_marketDepth.QuotesChanged += () =>
{
	...
};


И еще один вариант - использовать правила. Правила можно использовать как внутри стратегии так и вне ее.
Code

_instr1
	.WhenMarketDepthChanged()
	.Do(depth =>
	{
		...
	})
	.Apply();


Выбирайте что больше нравится.[smile]
Thanks: Tik_Time

Tik_Time

Avatar
Date: 12/28/2012
Reply


Огромное спасибо. Очень выручили!!!
Thanks:

Творог

Avatar
Date: 1/7/2013
Reply


Подскажите как правильно прочитать данное выражение из примера:
Trader.MarketDepthsChanged += depths => this.GuiAsync(() => OnMarketDepthsChanged(depths));

Я так понял это лямбда-выражение. depths - это параметры, которые передаются обработчику. Но я не вижу, где объявляется depths и GuiAsync, что будет, если убрать this. В общем запутался в этом синтаксисе совсем.

Также, будет ли подобные приёмы обсуждаться на вебинаре от Смарлаба послезавтра?
Thanks:

Дюшес

Avatar
Date: 1/8/2013
Reply


Творог Go to
Подскажите как правильно прочитать данное выражение из примера:
Trader.MarketDepthsChanged += depths => this.GuiAsync(() => OnMarketDepthsChanged(depths));


Описано в Шилдт - C# 4.0. Полное руководство, глава 15
Thanks:

Творог

Avatar
Date: 1/8/2013
Reply


Дюшес Go to
Творог Go to
Подскажите как правильно прочитать данное выражение из примера:
Trader.MarketDepthsChanged += depths => this.GuiAsync(() => OnMarketDepthsChanged(depths));


Описано в Шилдт - C# 4.0. Полное руководство, глава 15


Это я и сам себе мог бы ответить. Вопрос конкретный по примеру.
Thanks:

Дюшес

Avatar
Date: 1/8/2013
Reply


Творог Go to

Я так понял это лямбда-выражение. depths - это параметры, которые передаются обработчику. Но я не вижу, где объявляется depths и GuiAsync, что будет, если убрать this.

Тогда не совсем понятно, что не понятно...

коллекция depths возвращается в событии MarketDepthsChanged: http://stocksharp.com/do...MarketDepthsChanged.htm
объявляется тут же в лямбда выражении, тип ее IEnumerable<MarketDepth>.

про GuiAsync описано тут: http://stocksharp.com/do...e-8ba9-e1fa98728f92.htm
это метод-расширение, просто обертка для Dispatcher.BeginInvoke(Action) для асинхронной обработки потока, определен метод в библиотеке Ecng.Xaml.XamlHelper.
Thanks:

Творог

Avatar
Date: 1/8/2013
Reply


А что означают пустые скобочки и для чего они (() =>
this. - это в данном случае объект класса QuikTrader, т.е. Trader?
Thanks:

Творог

Avatar
Date: 1/8/2013
Reply


А в этом примере 2 действия в одной строчке.

Здесь, наверное, создаётся коллекция-портфель
private readonly PortfoliosWindow _portfoliosWindow = new PortfoliosWindow();

А здесь, наверное, если происходит событие типа изменение портфеля, то куда-то добавляется новый Range, должно быть в ту же коллекцию.
Trader.NewPortfolios += portfolios => this.GuiAsync(() => _portfoliosWindow.Portfolios.AddRange(portfolios));

Сложно как-то... [huh]
Thanks:

Дюшес

Avatar
Date: 1/8/2013
Reply


Творог Go to
А что означают пустые скобочки и для чего они (() =>
this. - это в данном случае объект класса QuikTrader, т.е. Trader?


Пустые скобки - это отсутствие параметров. В вышеназванном источнике как раз это описано. ;)
this - это текущий объект класса, вероятно MainWindow.
Thanks:

VassilSanych

Avatar
Date: 1/8/2013
Reply


Творог Go to
А что означают пустые скобочки и для чего они (() =>

Лямбда-выражения

Thanks:
1 2 3  >

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

loading
clippy