Пример #1
0
        private object GetModel(string name, ModelProperties properties)
        {
            ModelInterface model         = Plugins.Instance.GetModel(name);
            PropertyTable  propertyTable = new PropertyTable(model);
            Starter        starter       = Factory.Starter.DesignStarter();

            starter.Run(model);
            starter.Wait();
            propertyTable.UpdateAfterInitialize();
            if (properties != null)
            {
                model.OnProperties(properties);
                propertyTable.UpdateAfterProjectFile();
                string[] keys = properties.GetModelKeys();
                for (int i = 0; i < keys.Length; i++)
                {
                    ModelProperties nestedProperties = properties.GetModel(keys[i]);
                    if (nestedProperties.ModelType == ModelType.Indicator)
                    {
                        Add(nestedProperties);
                    }
                }
            }
            else
            {
                LoadIndicators(model);
            }
            return(propertyTable);
        }
Пример #2
0
        private void LoadModel(ModelProperties properties)
        {
            if (!QuietMode)
            {
                log.Debug(properties.ModelType + " " + properties.Name + ", type = " + properties.Type);
            }
            ModelInterface model = CreateModel(properties.Type, properties.Name);

            model.OnProperties(properties);
            if (!QuietMode)
            {
                log.Indent();
            }
            string[] keys = properties.GetModelKeys();
            for (int i = 0; i < keys.Length; i++)
            {
                ModelProperties nestedProperties = properties.GetModel(keys[i]);
                if (nestedProperties.ModelType == ModelType.Indicator)
                {
                }
                else
                {
                    // type null for performance, positionsize, exitstrategy, etc.
                    if (nestedProperties.Type == null)
                    {
                        HandlePropertySet(model, nestedProperties);
                    }
                    else
                    {
                        LoadModel(nestedProperties);
                        Strategy nestedModel = TopModel as Strategy;
                        nestedModel.OnProperties(nestedProperties);
                        AddDependency(model, nestedModel);
                    }
                }
            }
            if (!QuietMode)
            {
                log.Outdent();
            }
            TopModel = model;
        }
Пример #3
0
        private void HandlePropertySet(ModelInterface model, ModelProperties properties)
        {
            if (!QuietMode)
            {
                log.Debug(properties.Name);
                log.Indent();
            }

            if ("exitstrategy".Equals(properties.Name))
            {
                Strategy strategy = (Strategy)model;
                strategy.ExitStrategy.OnProperties(properties);
            }
            else if ("performance".Equals(properties.Name))
            {
                if (model is Portfolio)
                {
                    Portfolio portfolio = (Portfolio)model;
                    portfolio.Performance.OnProperties(properties);
                }
                else if (model is Strategy)
                {
                    Strategy strategy = (Strategy)model;
                    strategy.Performance.OnProperties(properties);
                }
                else
                {
                    throw new ApplicationException("'" + model.Name + "' is neither a strategy nor a portfolio.");
                }
            }
            else
            {
                model.OnProperties(properties);
            }
            if (!QuietMode)
            {
                log.Outdent();
            }
        }