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

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

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

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

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

  2. В проект добавим библиотеки TSLab.Script.dll, TSLab.Script.Handlers.dll, TSLab.DataSource.dll, TSLab.Utility.dll.

  3. Создадим новый класс 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)

Теперь можно собрать проект нажав 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"