//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, }); }
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); } }
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); }