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