Example #1
0
        void IStringifiable.AddSubElement(IStringifiable subElement)
        {
            base.AddSubElement(subElement);
            Type type = subElement.GetType();

            if (type == typeof(PriceLeg))
            {
                m_PriceLeg        = (PriceLeg)subElement;
                this.m_EngineName = string.Format("QuoterLeg:{0}", m_PriceLeg.InstrumentName.ToString());       // set our name.
            }
            else if (type == typeof(Hedger))
            {
                m_Hedger = (Hedger)subElement;
                m_Hedger.m_SpreaderLeg = this;            // give pointer to ourself
            }
            else if (type == typeof(HedgeRuleManager))
            {
                m_HedgeRuleManager             = (HedgeRuleManager)subElement;
                m_HedgeRuleManager.m_QuoterLeg = this;
            }
        }
        //
        //
        protected override void SetupInitialize(IEngineHub myEngineHub, IEngineContainer engineContainer, int engineID, bool setupGui)
        {
            this.m_EngineName = string.Format("HedgeRuleManager:{0}", m_QuoterLeg.m_PriceLeg.InstrumentName);
            base.SetupInitialize(myEngineHub, engineContainer, engineID, setupGui);
            m_Hedger = m_QuoterLeg.m_Hedger;
            m_Log    = ((ExecutionHub)myEngineHub).Log;
            ThreadContainer execContainer = (ThreadContainer)engineContainer;

            m_HedgeRules.OrderBy(x => x.RuleNumber); // sort our list by the rule number, so they get called in order!

            foreach (HedgeRule rule in m_HedgeRules) // check that they are all unique, and add them to our container
            {
                if (!m_PriorityToRule.ContainsKey(rule.RuleNumber))
                {
                    m_PriorityToRule.Add(rule.RuleNumber, rule);
                    execContainer.TryAddEngine((Engine)rule);   // add my sub engines to the container.
                }
                else
                {
                    m_Log.NewEntry(LogLevel.Error, "HedgeRuleManager: Failed to find unique hedge rules");
                    throw new Exception("HedgeRuleManager: Failed to find unique hedge rules");
                }
            }
        }