Параметры оптимизации

OptimizationParametersPanel - редактор параметров, по которым идёт перебор. Одна строка - один параметр стратегии: галочка включает его в перебор, дальше идут границы и шаг либо список значений, а под таблицей - итог: сколько прогонов даёт текущий набор.
Основные свойства
- OptimizationParametersPanel.Parameters - строки редактора. Подходит любая коллекция IOptimizationParameterRow, поэтому у каждого приложения может быть своя модель параметра.
- OptimizationParametersPanel.MaxIterations - ограничение на число прогонов; ноль означает, что ограничения нет.
- OptimizationParametersPanel.TotalCount - сколько прогонов даёт текущий набор: произведение числа значений всех включённых параметров, урезанное ограничением.
- OptimizationParametersPanel.FirstProblem - первая причина, по которой набор нельзя запустить.
Набор значений зависит от типа параметра: у числа и у TimeSpan это границы и шаг, у bool - два значения, у перечисления, Security и DataType - явный список. Строка, которую нельзя пройти (шаг равен нулю, границы не заданы, список пуст), объясняет причину прямо в таблице, а итоговый счётчик такую строку не считает.
Число прогонов растёт произведением, а не суммой: три параметра по пять значений - это 125 прогонов, а не 15. Поэтому счётчик стоит рядом с таблицей, а не на следующем шаге мастера.
Ниже показаны фрагменты кода с его использованием:
<Window x:Class="Sample.OptimizationWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xaml="http://schemas.stocksharp.com/xaml"
Height="400" Width="700">
<xaml:OptimizationParametersPanel x:Name="ParametersPanel" />
</Window>
// Строки редактора - модель приложения, реализующая IOptimizationParameterRow
ParametersPanel.Parameters = _rows;
// Ограничение на число прогонов
ParametersPanel.MaxIterations = 5000;
// Запускать можно, когда набор непустой и в нём нет ошибок
StartButton.IsEnabled = ParametersPanel.TotalCount > 0 && ParametersPanel.FirstProblem.Length == 0;