Стандартные индикаторы и обработчики
В 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");
}
}
}
}
}
Как видим, происходит сделка и сразу выставляется трейл-стоп (красная линия), которая подтягивается вслед за ценой:
Last updated
Was this helpful?