Первый индикатор (API)

TSLab может использовать индикаторы написанные на .NET и собранные в библиотеку .dll.

Для примера напишем индикатор, который считает цену OHLC4 по формуле:

(открытие+максимум+минимум+закрытие)/4(открытие + максимум + минимум + закрытие) / 4

Создадим новый проект в Visual Studio и назовем MyHandlers. Как создавать проект смотрите в статье Создание проекта в Visual Studio.

В проект добавим библиотеки TSLab.Script.dll, TSLab.Script.Handlers.dll, TSLab.DataSource.dll, TSLab.Utility.dll. Создадим новый класс OHLC4 и напишем следующий код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Handlers.Options;

namespace MyHandlers
{
    [HandlerCategory("MyHandlers")]
    [HelperName("OHLC4")]
    public class OHLC4 : IBar2DoubleHandler
    {
        public IList<double> Execute(ISecurity source)
        {
            return source.Bars.Select(x => (x.Open + x.High + x.Low + x.Close) / 4).ToList();
        }
    }
}

Мы создали класс OHLC4 от интерфейса IBar2DoubleHandler. Этот интерфейс реализует один метод Execute, который принимает на вход инструмент и выдает список чисел.

У класса мы указали атрибут HandlerCategory, с названием MyHandlers. Это название категории куда будет помещен наш индикатор в TSLab. HelperName - указывает название индикатора, которое будет отображаться с TSLab, можно написать любое другое название.

В методе Execute мы сделали расчет значения OHLC4 простым выражением:

source.Bars.Select(x=>(x.Open+x.High+x.Low+x.Close)/4)source.Bars.Select(x => (x.Open + x.High + x.Low + x.Close) / 4)

Теперь можно собрать проект нажав F6. Если все сделали правильно, то студия сохранит, соберет проект и создаст файл MyHandlers.dll в папке проекта \bin\Debug.

Этот файл надо скопировать в папку TSLab: %APPDATA%\..\Local\TSLab\TSLab 2.0\Handlers

Теперь запустим TSLab и в режиме редактора должен отобразиться наш новый индикатор.

Теперь подключим наш новый индикатор, выберем инструмент и запустим.

Видим что на графике отобразилась синяя линия, это и есть цена OHLC4.

Дополнительно

Чтобы каждый раз вручную не копировать файл .dll можно в студии прописать команду для автоматического копирования. Файл будет сам копироваться после каждой сборки проекта.

Но следует помнить, что перед сборкой нужно закрыть TSLab, т.к. файл не сможет перезаписаться.

Команда (устарело): xcopy /Y MyHandlers.dll "%APPDATA%\..\Local\TSLab\TSLab 2.0\Handlers"

Команда (новая): xcopy /Y "$(TargetDir)$(TargetFileName)" "%LOCALAPPDATA%\TSLab\TSLab 2.0\Handlers"

Last updated