Побарный индикатор

Побарный индикатор принимает на вход единичные значения и выдает одно значение. На вход так же приходит номер бара (переменная i).

  1. Пример индикатора, который принимает два числа и выводит среднее значение:

using TSLab.Script.Handlers;

namespace MyLib
{
    [HandlerCategory("MyLib")]
    [HandlerName("HandlerWithNumber")]
    [InputsCount(2)]
    [Input(0, TemplateTypes.DOUBLE, false, "list1")]
    [Input(1, TemplateTypes.DOUBLE, false, "list2")]
    [OutputsCount(1)]
    [OutputType(TemplateTypes.DOUBLE)]
    public class HandlerWithNumber : IValuesHandlerWithNumber
    {
        public double Execute(double value1, double value2, int i)
        {
            return (value1 + value2) / 2;
        }
    }
}

2. Пример индикатора, который принимает Источник и одно число. Выводит close + число.

using TSLab.Script;
using TSLab.Script.Handlers;

namespace MyLib
{
    [HandlerCategory("MyLib")]
    [HandlerName("HandlerWithNumber2")]
    [InputsCount(2)]
    [Input(0, TemplateTypes.SECURITY, Name = "SECURITYSource")]
    [Input(1, TemplateTypes.DOUBLE, false, "list2")]
    [OutputsCount(1)]
    [OutputType(TemplateTypes.DOUBLE)]
    public class HandlerWithNumber2 : IValuesHandlerWithNumber
    {
        public double Execute(ISecurity security, double value1, int i)
        {
            return security.Bars[i].Close + value1;
        }
    }
}

3. Пример индикатора, который имеет 2 перегрузки метода Execute и принимает Источник и одно или два числа. Выводит close + число1 + число2.

using TSLab.Script;
using TSLab.Script.Handlers;

namespace MyLib
{
    [HandlerCategory("MyLib")]
    [HandlerName("HandlerWithNumber3")]
    [InputsCount(3)]
    [Input(0, TemplateTypes.SECURITY, Name = "SECURITYSource")]
    [Input(1, TemplateTypes.DOUBLE, false, "list1")]
    [Input(2, TemplateTypes.DOUBLE, false, "list2")]
    [OutputsCount(1)]
    [OutputType(TemplateTypes.DOUBLE)]
    public class HandlerWithNumber3 : IValuesHandlerWithNumber
    {
        public double Execute(ISecurity security, double value1, int i)
        {
            return security.Bars[i].Close + value1;
        }

        public double Execute(ISecurity security, double value1, double value2, int i)
        {
            return security.Bars[i].Close + value1 + value2;
        }
    }
}

Last updated