public override void Subscribe(Instrument instrument)
        {
            if (instrument.Parent != null)
            {
                this.strategyBySynthInstrument[instrument.Id] = this.strategyBySynthInstrument[instrument.Parent.Id];
                this.strategyBySynthInstrument[instrument.Id].OnSubscribe(instrument);
                return;
            }
            SellSideInstrumentStrategy sellSideInstrumentStrategy = (SellSideInstrumentStrategy)Activator.CreateInstance(base.GetType(), new object[]
            {
                this.framework,
                string.Concat(new object[]
                {
                    base.Name,
                    "(",
                    instrument,
                    ")"
                })
            });

            this.SetupStrategy(sellSideInstrumentStrategy);
            sellSideInstrumentStrategy.Instrument         = instrument;
            this.strategyBySynthInstrument[instrument.Id] = sellSideInstrumentStrategy;
            sellSideInstrumentStrategy.OnSubscribe(instrument);
            sellSideInstrumentStrategy.dataProvider      = base.DataProvider;
            sellSideInstrumentStrategy.executionProvider = base.ExecutionProvider;
            sellSideInstrumentStrategy.raiseEvents       = true;
            base.AddStrategy(sellSideInstrumentStrategy, false);
            sellSideInstrumentStrategy.OnStrategyStart();
        }
 public override void Unsubscribe(InstrumentList instruments)
 {
     foreach (Instrument current in instruments)
     {
         SellSideInstrumentStrategy sellSideInstrumentStrategy = this.strategyBySynthInstrument[current.Id];
         sellSideInstrumentStrategy.OnUnsubscribe(current);
     }
 }
 private void SetupStrategy(SellSideInstrumentStrategy strategy)
 {
     FieldInfo[] fields = strategy.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
     for (int i = 0; i < fields.Length; i++)
     {
         FieldInfo fieldInfo = fields[i];
         if (fieldInfo.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0)
         {
             fieldInfo.SetValue(strategy, fieldInfo.GetValue(this));
         }
     }
 }
 private void SetupStrategy(SellSideInstrumentStrategy strategy)
 {
     FieldInfo[] fields = strategy.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
     for (int i = 0; i < fields.Length; i++)
     {
         FieldInfo fieldInfo = fields[i];
         if (fieldInfo.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0)
         {
             fieldInfo.SetValue(strategy, fieldInfo.GetValue(this));
         }
     }
 }