Контрольная панель API
На контрольной панели можно размещать значения индикаторов, кнопки, текст.
Создать контрольную панель:
var controlPane = ctx.CreateControlPane("Control", "Control", "My control");
Первый элемент "Control" – уникальный id элемента.
Второй элемент "Control" – название панели
Третий элемент "My control" – заголовок панели, если он не указан, то значение будет браться из названия панели.
Добавить элемент на контрольную панель:
var pane = controlPane.AddControl("SMA", "", ControlParameterType.NumericUpDown, true, 0, 0, double.NaN, double.NaN, false, false, null, Period);
"SMA" - название элемента
"" - название свойства, если пустое, то будет браться название последней переменной, в данном случае Period.
ControlParameterType.NumericUpDown - тип элемента, в данном случае число с элементом управления.
Period - параметр скрипта OptimProperty
Пример:
Добавим индикатор SMA и контрольную панель. На контрольную панель выведем значение индикатора. При изменении значения будет пересчитываться скрипт и меняться индикатор SMA.
using TSLab.Script; using TSLab.Script.Control; using TSLab.Script.Handlers; using TSLab.Script.Helpers; using TSLab.Script.Optimization; namespace MyLib { public class TestControlPanel : IExternalScript { public OptimProperty Period = new OptimProperty(100, 100, 1000, 50); public void Execute(IContext ctx, ISecurity sec) { // Создаем индикатор SMA var sma = ctx.GetData("SMA", new[] { Period.ToString() }, () => Series.SMA(sec.ClosePrices, Period)); // Если в режиме оптимизации, то выходим if (ctx.IsOptimization) return; // Создаем контрольную панель var controlPane = ctx.CreateControlPane("Control", "Control", "My control"); // На контрольную панель добавляем период индикатора var pane = controlPane.AddControl("SMA", "", ControlParameterType.NumericUpDown, true, 0, 0, double.NaN, double.NaN, false, false, null, Period); // При изменении индикатора на контрольной панели будет пересчитываться скрипт pane.IsNeedRecalculate = true; // Рисуем индикатор SMA на графике ctx.First.AddList("SMA", sma, ListStyles.LINE, ScriptColors.Green, LineStyles.SOLID, PaneSides.RIGHT); } } }
