MarketDepthsChanged !!!
Atom
27.12.2012


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

Теги:


Спасибо:




1 2 3  >
Moadip

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


По событию MarketDepthsChanged будут приходить изменения по всем зарегистрированным стаканам - IEnumerable<MarketDepth>.
Можно фильтрануть пришедшие стаканы по 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
Спасибо: Tik_Time

Tik_Time

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


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

Творог

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


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

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

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

Дюшес

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


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


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

Творог

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


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


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


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

Дюшес

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


Творог Перейти

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

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

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

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

Творог

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


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

Творог

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


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

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

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

Сложно как-то... Huh
Спасибо:

Дюшес

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


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


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

VassilSanych

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


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

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

Спасибо:
1 2 3  >

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

loading
clippy