{"record":{"id":"7a868a3f3e2f316f","repo":"StockSharp/StockSharp","slug":"parameters-7a868a","errorCode":null,"errorMessage":"parameters","messagePattern":"parameters","errorType":"validation","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"Algo.Gpu/Indicators/GpuLunarPhaseCalculator.cs","lineNumber":49,"sourceCode":"\t/// </summary>\n\t/// <param name=\"context\">ILGPU context.</param>\n\t/// <param name=\"accelerator\">ILGPU accelerator.</param>\n\tpublic GpuLunarPhaseCalculator(Context context, Accelerator accelerator)\n\t\t: base(context, accelerator)\n\t{\n\t\t_kernel = Accelerator.LoadAutoGroupedStreamKernel<Index3D, ArrayView<GpuCandle>, ArrayView<GpuIndicatorResult>, ArrayView<int>, ArrayView<int>>(LunarPhaseParamsSeriesKernel);\n\t}\n\n\t/// <inheritdoc />\n\tpublic override GpuIndicatorResult[][][] Calculate(GpuCandle[][] candlesSeries, GpuLunarPhaseParams[] parameters)\n\t{\n\t\tArgumentNullException.ThrowIfNull(candlesSeries);\n\t\tArgumentNullException.ThrowIfNull(parameters);\n\n\t\tif (candlesSeries.Length == 0)\n\t\t\tthrow new ArgumentOutOfRangeException(nameof(candlesSeries));\n\t\tif (parameters.Length == 0)\n\t\t\tthrow new ArgumentOutOfRangeException(nameof(parameters));\n\n\t\tvar seriesCount = candlesSeries.Length;\n\n\t\t// Flatten input\n\t\tvar totalSize = 0;\n\t\tvar seriesOffsets = new int[seriesCount];\n\t\tvar seriesLengths = new int[seriesCount];\n\n\t\tfor (var s = 0; s < seriesCount; s++)\n\t\t{\n\t\t\tseriesOffsets[s] = totalSize;\n\t\t\tvar len = candlesSeries[s]?.Length ?? 0;\n\t\t\tseriesLengths[s] = len;\n\t\t\ttotalSize += len;\n\t\t}\n\n\t\tvar flatCandles = new GpuCandle[totalSize];\n\t\tvar maxLen = 0;","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/StockSharp/StockSharp/blob/601a191de678bff83da28b14828f8885214ca71c/Algo.Gpu/Indicators/GpuLunarPhaseCalculator.cs#L31-L67","documentation":"ArgumentOutOfRangeException with ParamName=\"parameters\", thrown by GpuLunarPhaseCalculator.Calculate at `if (parameters.Length == 0) throw new ArgumentOutOfRangeException(nameof(parameters))` (Algo.Gpu/Indicators/GpuLunarPhaseCalculator.cs:49). Although the lunar-phase kernel itself is parameterless (no params buffer in the kernel signature), the method still enforces a non-empty GpuLunarPhaseParams[] as a consistency precondition for the series/result grid; an empty array is rejected before launch.","triggerScenarios":"Passing an empty GpuLunarPhaseParams[] to Calculate; usually a config source or test that supplies zero parameter entries.","commonSituations":"Empty `parameters:` in config; UI with no selection forwarded; tests that omit the params array; a generator that filtered out all entries.","solutions":["Ensure parameters.Length >= 1 before calling; skip or throw a domain exception otherwise.","Provide a default/placeholder GpuLunarPhaseParams when none are supplied.","Align the validation with actual usage: if the params array is genuinely unused by this kernel, relax the guard or document why one entry is still required."],"exampleFix":"// before\nvar results = calc.Calculate(candlesSeries, parameters);\n\n// after\nif (parameters is null || parameters.Length == 0)\n    throw new InvalidOperationException(\"At least one LunarPhase parameter set is required.\");\nvar results = calc.Calculate(candlesSeries, parameters);","handlingStrategy":"validation","validationCode":"if (parameters is null || parameters.Length == 0)\n    throw new InvalidOperationException(\"At least one LunarPhase parameter set is required.\");\nvar results = calc.Calculate(candlesSeries, parameters);","typeGuard":"static bool IsValidParams(GpuLunarPhaseParams[] p) => p is not null && p.Length > 0;","tryCatchPattern":"try { var r = calc.Calculate(candlesSeries, parameters); }\ncatch (ArgumentOutOfRangeException ex) when (ex.ParamName == \"parameters\")\n{ /* surface config error */ }","preventionTips":["Provide a default placeholder LunarPhase params entry.","Align the guard with actual kernel usage (note: the kernel signature takes no params buffer).","Test the empty-params path explicitly."],"tags":["gpu","argumentoutofrange","argument-validation","ilgpu","lunar-phase","indicators"],"backgroundTag":null,"analyzedSha":"601a191de678bff83da28b14828f8885214ca71c","analyzedAt":"2026-08-13T20:43:24.460Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}