private void ProcessCalc() { AnalystField firstOutputField = null; int barsNeeded = Math.Abs(Analyst.DetermineMinTimeSlice()); int inputCount = Analyst.DetermineInputCount(); int outputCount = Analyst.DetermineOutputCount(); IndentLevel = 2; AddLine("if( _inputCount>0 && Bars>=" + barsNeeded + " )"); AddLine("{"); IndentIn(); AddLine("double input[" + inputCount + "];"); AddLine("double output[" + outputCount + "];"); int idx = 0; foreach (AnalystField field in Analyst.Script.Normalize .NormalizedFields) { if (field.Input) { DataField df = Analyst.Script.FindDataField(field.Name); String str; switch (field.Action) { case NormalizationAction.PassThrough: str = EngineArray.Replace(df.Source, "##", "pos+" + (-field.TimeSlice)); AddLine("input[" + idx + "]=" + str + ";"); idx++; break; case NormalizationAction.Normalize: str = EngineArray.Replace(df.Source, "##", "pos+" + (-field.TimeSlice)); AddLine("input[" + idx + "]=Norm(" + str + "," + field.NormalizedHigh + "," + field.NormalizedLow + "," + field.ActualHigh + "," + field.ActualLow + ");"); idx++; break; case NormalizationAction.Ignore: break; default: throw new AnalystCodeGenerationError( "Can't generate Ninjascript code, unsupported normalizatoin action: " + field.Action.ToString()); } } if (field.Output) { if (firstOutputField == null) { firstOutputField = field; } } } if (firstOutputField == null) { throw new AnalystCodeGenerationError( "Could not find an output field."); } AddLine("Compute(input,output);"); AddLine("ExtMapBuffer1[pos] = DeNorm(output[0]" + "," + firstOutputField.NormalizedHigh + "," + firstOutputField.NormalizedLow + "," + firstOutputField.ActualHigh + "," + firstOutputField.ActualLow + ");"); IndentOut(); AddLine("}"); IndentLevel = 2; }