//private void InitOrderLogBuilders(DateTime loadDate)
        //{
        //	if (StorageRegistry == null || !MarketEmulator.Settings.UseMarketDepth)
        //		return;

        //	foreach (var security in RegisteredMarketDepths)
        //	{
        //		var builder = _orderLogBuilders.TryGetValue(security);

        //		if (builder == null)
        //			continue;

        //		// стакан из ОЛ строиться начиная с 18.45 предыдущей торговой сессии
        //		var olDate = loadDate.Date;

        //		do
        //		{
        //			olDate -= TimeSpan.FromDays(1);
        //		}
        //		while (!ExchangeBoard.Forts.WorkingTime.IsTradeDate(olDate));

        //		olDate += new TimeSpan(18, 45, 0);

        //		foreach (var item in StorageRegistry.GetOrderLogStorage(security, Drive).Load(olDate, loadDate - TimeSpan.FromTicks(1)))
        //		{
        //			builder.Update(item);
        //		}
        //	}
        //}

        ///// <summary>
        ///// Найти инструменты, соответствующие фильтру <paramref name="criteria"/>.
        ///// </summary>
        ///// <param name="criteria">Инструмент, поля которого будут использоваться в качестве фильтра.</param>
        ///// <returns>Найденные инструменты.</returns>
        //public override IEnumerable<Security> Lookup(Security criteria)
        //{
        //	var securities = _historyAdapter.SecurityProvider.Lookup(criteria);

        //	if (State == EmulationStates.Started)
        //	{
        //		foreach (var security in securities)
        //			SendSecurity(security);
        //	}

        //	return securities;
        //}

        private void SendInGeneratorMessage(MarketDataGenerator generator, bool isSubscribe)
        {
            if (generator == null)
            {
                throw new ArgumentNullException("generator");
            }

            SendInMessage(new GeneratorMarketDataMessage
            {
                IsSubscribe = true,
                SecurityId  = generator.SecurityId,
                Generator   = generator,
            });
        }
        ///// <summary>
        ///// Gets a value indicating whether the re-registration orders via the method <see cref="IConnector.ReRegisterOrder(StockSharp.BusinessEntities.Order,StockSharp.BusinessEntities.Order)"/> as a single transaction.
        ///// </summary>
        //public override bool IsSupportAtomicReRegister => EmulationAdapter.Emulator.Settings.IsSupportAtomicReRegister;

        private void SendInGeneratorMessage(MarketDataGenerator generator, bool isSubscribe)
        {
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }

            SendInMessage(new GeneratorMessage
            {
                IsSubscribe = isSubscribe,
                SecurityId  = generator.SecurityId,
                Generator   = generator,
                DataType    = generator.DataType,
            });
        }
Esempio n. 3
0
        private void UnSubscribeGenerator(MarketDataGenerator generator)
        {
            if (generator is null)
            {
                throw new ArgumentNullException(nameof(generator));
            }

            var subscription = Subscriptions.FirstOrDefault(s => s.SubscriptionMessage is GeneratorMessage genMsg && genMsg.Generator == generator);

            if (subscription != null)
            {
                UnSubscribe(subscription);
            }
            else
            {
                this.AddWarningLog(LocalizedStrings.SubscriptionNonExist, generator);
            }
        }
Esempio n. 4
0
        private Subscription SubscribeGenerator(MarketDataGenerator generator)
        {
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }

            var subscription = new Subscription(new GeneratorMessage
            {
                TransactionId = TransactionIdGenerator.GetNextId(),
                IsSubscribe   = true,
                SecurityId    = generator.SecurityId,
                Generator     = generator,
                DataType2     = generator.DataType,
            }, (SecurityMessage)null);

            Subscribe(subscription);

            return(subscription);
        }