Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1230

Добавлено: evge » 08 июн 2017, 12:07

Тема: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Текст сообщения:

Индикатор SuperTrend (Супертренд) - это трендовый индикатор, созданный на основе индикаторов ATR (Average True Range) с периодом 5 и CCI (Commodity Channel Index) с периодом 50.

CCI(50) здесь служит для определения тренда, а ATR(5) используется в расчете уровней. Так, если CCI(50) принимает положительное значение, то индикатор в зависимости от значений минимумов баров, а так же ATR(5), либо растет, либо рисует горизонтальный участок. Ну а когда CCI(50) меньше нуля, все наоборот – индикатор либо понижается, либо рисует горизонтальный участок.

Параметры

PeriodATR - период для индикатора ATR (по умолчанию 5)
PeriodCCI - период для индикатора CCI (по умолчанию 50)
K - коэффициент ATR. Для увеличения или уменьшения действия ATR на индикатор. Задавать можно значения меньше или больше единицы. 1 = ATR.

Примеры работы

SuperTrend.zip
Исправленный под новые версии АД4 вариант (I, Input)
(877 байт) 327 скачиваний

SuperTrend-02.png
Пример отображения индикатора SuperTrend при параметрах PeriodATR = 5, PeriodCCI = 100, K = 2
SuperTrend-02.png (35.92 КБ) 30324 просмотра

SuperTrend.zip
(864 байт) 1477 скачиваний


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

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

function Initialize()
{
IndicatorName = "SuperTrend";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("U", DrawAs.Custom, Color.Green);
AddSeries("D", DrawAs.Custom, Color.Red);
AddSeries("ST", DrawAs.Custom, Color.Transparent, false);

AddParameter("PeriodATR", 5);
AddParameter("PeriodCCI", 50);
AddParameter("K", 2);
}

function Evaluate()
{

// evge 08.06.2017 http://alfadirect4.ru

var I = Input;

var A = ATR(I, PeriodATR);
var C = CCI(I, PeriodCCI);
var MPer = Math.Max(PeriodATR, PeriodCCI);

if (C[0] >= 0)
{
ST = I.Low[0] - A[0] * K; if (CurrentIndex > MPer) ST[0] = Math.Max(ST[0], ST[1]);
U[1] = ST[1]; U[0] = ST[0]; U.DrawLine();
}
else
{
ST = I.High[0] + A[0] * K; if (CurrentIndex > MPer) ST[0] = Math.Min(ST[0], ST[1]);
D[1] = ST[1]; D[0] = ST[0]; D.DrawLine();
}

}


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

SuperTrend-03.png
Пример отображения индикатора SuperTrend при параметрах PeriodATR = 50, PeriodCCI = 100, K = 3
SuperTrend-03.png (40.64 КБ) 30321 просмотр

Исправленный под новые версии, прежний в новых версиях АД4 перестал компилироваться с требованием наименования изменения ряда на Input. Ряд I заменен на Input.
SuperTrend-01.png
Пример отображения индикатора SuperTrend при параметрах PeriodATR = 5, PeriodCCI = 100, K = 1
SuperTrend-01.png (35.91 КБ) 30361 просмотр