MarketDepthsChanged !!!

MarketDepthsChanged !!!
Atom
12/27/2012
Tik_Time


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


Tags:


Thanks:


1 2 3  >
Moadip

Avatar
Date: 12/27/2012
Reply


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


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

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


private MarketDepth _marketDepth;

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

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

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


_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


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

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

Thanks:

Творог

Avatar
Date: 1/8/2013
Reply


Дюшес:

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

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

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

Thanks:

Дюшес

Avatar
Date: 1/8/2013
Reply


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

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

про GuiAsync описано тут: http://stocksharp.com/doc/html/a0a4c8df-2bba-4e1e-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


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

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

Thanks:

VassilSanych

Avatar
Date: 1/8/2013
Reply


Творог: А что означают пустые скобочки и для чего они (() => Лямбда-выражения

Thanks:
1 2 3  >

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

loading
clippy