/// <summary>
 /// Initializes a new instance of the <see cref="RuleBreach"/> class.
 /// </summary>
 /// <param name="window">
 /// The window.
 /// </param>
 /// <param name="trades">
 /// The trades.
 /// </param>
 /// <param name="security">
 /// The security.
 /// </param>
 /// <param name="isBackTestRun">
 /// The is back test run.
 /// </param>
 /// <param name="ruleParameterId">
 /// The rule parameter id.
 /// </param>
 /// <param name="systemOperationId">
 /// The system operation id.
 /// </param>
 /// <param name="correlationId">
 /// The correlation id.
 /// </param>
 /// <param name="factorValue">
 /// The factor value.
 /// </param>
 /// <param name="ruleParameter">
 /// The rule parameter.
 /// </param>
 /// <param name="universeDateTime">
 /// The universe date time.
 /// </param>
 /// <param name="description">
 /// The description.
 /// </param>
 /// <param name="caseTitle">
 /// The case title.
 /// </param>
 public RuleBreach(
     TimeSpan window,
     ITradePosition trades,
     FinancialInstrument security,
     bool isBackTestRun,
     string ruleParameterId,
     string systemOperationId,
     string correlationId,
     IFactorValue factorValue,
     IRuleParameter ruleParameter,
     DateTime universeDateTime,
     string description,
     string caseTitle)
 {
     this.Window            = window;
     this.Trades            = trades;
     this.Security          = security;
     this.IsBackTestRun     = isBackTestRun;
     this.RuleParameterId   = ruleParameterId;
     this.SystemOperationId = systemOperationId;
     this.CorrelationId     = correlationId;
     this.FactorValue       = factorValue;
     this.RuleParameters    = ruleParameter;
     this.UniverseDateTime  = universeDateTime;
     this.Description       = description;
     this.CaseTitle         = caseTitle;
 }
예제 #2
0
        internal IEnumerable <IRuleValue> GetAll(IRuleParameter ruleParameter)
        {
            var dataType = ruleParameter.DataType;

            if (!_dataLists.ContainsKey(dataType))
            {
                throw new ArgumentException("Could not find a result of type " + dataType);
            }

            return(_dataLists[dataType].WhereValues(ruleParameter.Predicate));
        }
예제 #3
0
        public IRule BuildPresets(StaticRules rule, IRuleParameter parameter)
        {
            switch (rule)
            {
            case StaticRules.AllTasksIsCurrentIteration:
                return(AllTasksIsCurrentIteration());

            case StaticRules.CheckTasksAreapath:
                return(CheckTasksAreapath(parameter as AreaPathParameter));


            default:
                throw new Exception($"{nameof(RuleBuilder)}.{nameof(BuildPresets)}: Unknown type");
            }
        }
예제 #4
0
        public static BaseRule LoadFromDescription(string desc)
        {
            int    typeNameIndex = desc.IndexOf("<PARAMS>");
            string typeName      = desc.Substring(0, typeNameIndex);

            //parameters are added upon instantiation
            BaseRule result = RuleFactory.GetInstance().CreateRuleInstance(Type.GetType("GeneticMarket.Logic.Rules." + typeName)) as BaseRule;

            //we only need to load parameter values
            int    endParamIndex = desc.Length - 1;
            string paramsString  = desc.Substring(typeNameIndex + 8, endParamIndex - typeNameIndex - 8);

            string[] paramsKeyValues = paramsString.Split('|');

            for (int i = 0; i < paramsKeyValues.Length; i++)
            {
                if (paramsKeyValues[i].Length == 0)
                {
                    continue;
                }

                string[] parts = paramsKeyValues[i].Split('=');
                string   key   = parts[0];
                string   value = parts[1];

                IRuleParameter argObject = result.parameters[key];
                bool           isDouble  = (argObject is DoubleRuleParameter);

                if (isDouble)
                {
                    result[key] = double.Parse(value);
                }
                else
                {
                    result[key] = int.Parse(value);
                }
            }

            return(result);
        }
예제 #5
0
 public void AddParameter <T>(IRuleParameter <T> parameter)
     where T : class
 {
     _parameters.Add(parameter);
 }