Стандартные индикаторы и обработчики

В TSLab API есть стандартные часто используемые индикаторы. Их можно без труда использовать в своих скрипта. Эти индикаторы находятся в двух местах:

  • TSLab.Script.Helpers.Series - класс содержит статичные методы расчета индикаторов, например SMA, EMA, Highest, Lowest, ATR, BollingerBands и другие.

  • TSLab.Script.Handlers - пространство имен, в котором содержатся классы обработчиков, например MACD, ParabolicSAR, TrailStop. Все эти обработчики отображаются в визуальном редакторе TSLab в виде кубиков.

Индикаторы из класса Series

В классе Series содержатся некоторые индикаторы, например SMA, EMA, Highest, Lowest, ATR, BollingerBands и другие.

К примеру, если нужно посчитать индикатор SMA, то просто вызываем метод SMA и передаем первым параметром список цен по которым нужно считать (sec.ClosePrices), а вторым параметром будет период расчета:

var sma = Series.SMA(sec.ClosePrices, 100);


Напишем скрипт, который выводит на график индикаторы SMA и EMA от цен закрытия:

using TSLab.Script; using TSLab.Script.Helpers; using TSLab.Script.Handlers; namespace MyLib { public class IndicatorsMA : IExternalScript { public void Execute(IContext ctx, ISecurity sec) { var period = 100; var sma = Series.SMA(sec.ClosePrices, period); // расчет индикатора SMA var ema = Series.EMA(sec.ClosePrices, period); // расчет индикатора EMA // Построение графиков ctx.First.AddList("SMA", sma, ListStyles.LINE, ScriptColors.Red, LineStyles.SOLID, PaneSides.RIGHT); ctx.First.AddList("EMA", ema, ListStyles.LINE, ScriptColors.Blue, LineStyles.SOLID, PaneSides.RIGHT); } } }

Красная линия - это индикатор SMA, синяя линия - это EMA.

Индикаторы и обработчики из Handlers

TSLab.Script.Handlers - пространство имен, в котором содержатся классы обработчиков, например MACD, ParabolicSAR, TrailStop. Все эти обработчики отображаются в визуальном редакторе TSLab в виде кубиков.

В отличии от индикаторов из Series, нужно сначала создать объект индикатора а потом вызвать метод Execute для расчета значений индикатора.

Исходные коды индикаторов:

https://github.com/TSLab-Dev/Handlers

Для примера напишем скрипт, который считает и выводит на график индикатор ParabolicSAR:

using TSLab.Script; using TSLab.Script.Helpers; using TSLab.Script.Handlers; namespace MyLib { public class IndicatorParabolicSAR : IExternalScript { public void Execute(IContext ctx, ISecurity sec) { var parabolic = new ParabolicSAR() // Создаем класс индикатора ParabolicSAR { Context = ctx, AccelerationMax = 0.2, AccelerationStart = 0.02, AccelerationStep = 0.02 }; var list = parabolic.Execute(sec); // Делаем расчет индикатора // Выводим на график var line = ctx.First.AddList("Parabolic SAR", list, ListStyles.LINE, ScriptColors.Red, LineStyles.DOT, PaneSides.RIGHT); line.Thickness = 2; // Толщина линии 2 } } }

Еще для примера напишем скрипт, который покупает по рынку и выставляем трейл-стоп. Стоп будет считаться готовым классом TrailStop из TSLab.Script.Handlers:

using TSLab.Script; using TSLab.Script.Handlers; namespace MyLib { public class HandlerTrailStop : IExternalScript { public void Execute(IContext ctx, ISecurity sec) { var trail = new TrailStop // Создаем класс обработчика TrailStop { StopLoss = 0.5, TrailEnable = 0.5, TrailLoss = 0.5, }; for (int i = 0; i < ctx.BarsCount; i++) { var longPos = sec.Positions.GetLastActiveForSignal("LE", i); if (longPos == null) { sec.Positions.BuyAtMarket(i + 1, 1, "LE"); } else { var stop = trail.Execute(longPos, i); // Расчет трейл-стопа longPos.CloseAtStop(i + 1, stop, "LX"); } } } } }

Как видим, происходит сделка и сразу выставляется трейл-стоп (красная линия), которая подтягивается вслед за ценой: