Пользовательские индикаторы > TSI (True Strength Index) - индекс истинной силы

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

TSI (True Strength Index) - индекс истинной силы

Непрочитанное сообщение evge » 26 окт 2017, 15:44

Индикатор TSI (True Strength Index) - это дважды сглаженный Моментум. График в этом случае получается более плавным, поскольку резкие и незначительные изменения не учитываются.

Для построения необходим Momentum с периодом 1 и Momentum по модулю с периодом 1. т.е. разность между Close текущего и Close предыдущего бара и она же по модулю.

Формула

TSI = 100 * EMA(EMA(Momentum, First_R), Second_S) / EMA(EMA(|Momentum|, First_R), Second_S)

Параметры

First_R – период первого сглаживания EMA;
Second_S – интервал второго усреднения EMA.

Код индикатора можно собрать в 1 строку если бы был индикатор Momentum по модулю.
Поэтому для упрощения создано 2 индикатора. Недостающий Momentum по модулю и собственно сам индикатор TSI, основной код которого уместился в 1 строку.

Пример

TSI-01.png
TSI-01.png (40.71 КБ) 10873 просмотра


Код: Выделить всё

function Initialize()
{
IndicatorName = "MomentumR";
AddInput("Input", Inputs.Price);
AddParameter("Period", 20, 1);
PriceStudy = false;
AddSeries("Momentum", DrawAs.Line, Color.Coral);
AddLevel(0, Color.Gray, "Momentum");
}

function Evaluate()
{

// evge 26.10.2017 http://alfadirect4.ru

if (CurrentIndex <= Period)
   Momentum = 0.0;
else
   Momentum = Math.Abs(Input[0] - Input[Period]);
}


Код: Выделить всё

function Initialize()
{
IndicatorName = "TSI";
PriceStudy = false;
AddInput("I", Inputs.Candle);
AddSeries("TSI", DrawAs.Line, Color.Red);
AddParameter("First_R", 20);
AddParameter("Second_S", 30);
}

function Evaluate()
{

// evge 26.10.2017 http://alfadirect4.ru

TSI[0] = 100 * EMA(EMA(MOMENTUM(I.Close, 1), First_R), Second_S)[0] / EMA(EMA(MY.MomentumR(I.Close, 1), First_R), Second_S);
}


Скачать исходный текст

TSI.zip
(39.46 КБ) 969 скачиваний
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: TSI (True Strength Index) - индекс истинной силы

Непрочитанное сообщение evge » 27 окт 2017, 21:18

TSI с простой средней скользящей.

TSI-02.png
TSI-02.png (42.38 КБ) 10838 просмотров


Код: Выделить всё

function Initialize()
{
IndicatorName = "TSI";
PriceStudy = false;
AddInput("I", Inputs.Candle);
AddSeries("TSI", DrawAs.Line, Color.Red);
AddSeries("MA", DrawAs.Line, Color.Black);
AddParameter("First_R", 20, 1);
AddParameter("Second_S", 30, 1);
AddParameter("Period_MA", 10, 1);
AddGlobalVariable("SUM", Types.Double, 0.0);
}

function Evaluate()
{

// evge 27.10.2017 http://alfadirect4.ru

if (CurrentIndex >= Math.Max(Math.Max(First_R, Second_S), Period_MA))
{
   TSI[0] = 100 * EMA(EMA(MOMENTUM(I.Close, 1), First_R), Second_S)[0] / EMA(EMA(MY.MomentumR(I.Close, 1), First_R), Second_S);
   
   SUM += TSI[0] - TSI[Period_MA];

   MA[0] = SUM / Period_MA;   
} else
{
   TSI[0] = 0;
   MA[0] = 0;
}
   
}
никогда такого не было и вот опять


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей