Параметры скрипта

При написании скриптов на TSLab API можно определить параметры, которые можно будет настраивать из TSLab вкладка Оптимизация. Также эти параметры используются при оптимизации скрипта.

Например, скрипт строит индикатор SMA. Для его расчета необходимо значение периода по которому рассчитывается индикатор. Чтобы это значение не записывать в коде, мы можем добавить параметр в скрипт и использовать его в качестве расчета.

public OptimProperty PeriodFast = new OptimProperty(100, 10, 200, 1);

Эта строка описывает свойство с типом OptimProperty. Свойство содержит тип double. По-умолчанию будет значение 100, при оптимизации будут перебираться значения от 10 до 200 с шагом 1.

Существуют разные типы параметров:

Типы параметров

OptimProperty

Число с плавающей точкой (double)

IntOptimProperty

Целое число (int) (Только положительное!)

BoolOptimProperty

Логическое значение (bool)

DateTimeOptimProperty

Дата и время (DateTime)

EnumOptimProperty

Перечисление (Enum)

StringOptimProperty

Строка (String)

TimeSpanOptimProperty

Интервал времени (TimeSpan)

Напишем скрипт, который рассчитывает два значения SMA, быстрое и медленное. Периоды SMA будем передавать через параметры скрипта:

using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;
using TSLab.Script.Optimization;

namespace MyLib
{
    public class ExampleParameters : IExternalScript
    {
        // Настраиваемые параметры
        public OptimProperty PeriodFast = new OptimProperty(100, 10, 200, 1);
        public OptimProperty PeriodSlow = new OptimProperty(500, 200, 2000, 10);

        public void Execute(IContext ctx, ISecurity sec)
        {
            // Расчет значений
            var smaFast = Series.SMA(sec.ClosePrices, PeriodFast);
            var smaSlow = Series.SMA(sec.ClosePrices, PeriodSlow);

            // Построение графиков
            ctx.First.AddList(string.Format("SMA fast ({0})", PeriodFast), smaFast, ListStyles.LINE, ScriptColors.Green,
                LineStyles.SOLID, PaneSides.RIGHT);
            ctx.First.AddList(string.Format("SMA slow ({0})", PeriodSlow), smaSlow, ListStyles.LINE, ScriptColors.Red,
                LineStyles.SOLID, PaneSides.RIGHT);
        }
    }
}

На вкладке Оптимизация мы видим наши параметры, там их можно редактировать.

Last updated