Table of Contents

Подписки

Начиная с версии 5.0, API предлагаем новую модель получения данных (маркет-данные и транзакционные). Модель основана на подписках, и обладает преимуществами перед обычными запросами на подписку:

  • Подписки изолированы друг от друга, поэтому можно параллельно запускать произвольное количество подписков (с запросом истории или нет).
  • Подписки имею состояния, позволяющие понять, идут ли в данный момент исторические данные или подписка перешла в online.
  • Подписки имеют универсальный подход, и код их одинаков, не зависимо от запрашиваемых типов данных.

Для работа с подписками необходимо использовать класс Subscription. Ниже показан пример подписки на свечи через новую модель:

...
var subscription = new Subscription(new MarketDataMessage
{
	DataType2 = DataType.TimeFrame(TimeSpan.FromMinutes(5)),
	From = DateTimeOffset.Now.Subtract(TimeSpan.FromDays(30)),
	// null означает что подписка после истории перейдет в online для получения данных реального времени
	To = null,
}, (SecurityMessage)sec);
// подписка на события
_connector.CandleReceived += (sub, candle) =>
{
	if (sub != subscription)
		return;
	Console.WriteLine(candle);
};
_connector.SubscriptionOnline += (sub) =>
{
	if (sub != subscription)
		return;
	Console.WriteLine("Online");
};
_connector.SubscriptionFailed += (sub, error, isSubscribe) =>
{
	if (sub != subscription)
		return;
	Console.WriteLine(error);
};
// запуск подписки
_connector.Subscribe(subscription);
...
			

Состояния подписок:

  • SubscriptionStates.Stopped - подписка неактивна (остановлена или не запускалась).
  • SubscriptionStates.Active - подписка активна, и она может передавать исторические данные до тех пор, пока не перейдет в online или не будет завершена.
  • SubscriptionStates.Error - подписка неактивна и находится в состоянии ошибки.
  • SubscriptionStates.Finished - подписка закончила свою работу (все данные получены).
  • SubscriptionStates.Online - подписка перешла в состояние online и передает только данные в реальном времени.