private void IterateLevel(int level) { OptimizerParam parameter = MasterInstance.OptimizerParams.Values .Skip(level) .FirstOrDefault(); if (parameter != default(OptimizerParam)) { if (parameter.IsEnabled) { for (int value = parameter.Start; value <= parameter.End; value += parameter.Step) { parameter.Value = value; IterateLevel(level + 1); } } else { IterateLevel(level + 1); } } else { RunIteration(); } }
/// <summary> /// Initialize trading algorithm. Most trading algorithms will /// only do very little here; the majority of the initialization /// should be performed in Run(), to allow multiple runs of /// the same instance. /// </summary> public Algorithm() { // create a dictionary of optimizer parameters OptimizerParams = new Dictionary <string, OptimizerParam>(); foreach (OptimizerParam param in OptimizerParam.GetParams(this)) { OptimizerParams[param.Name] = param; } }