Пользовательские индикаторы > SMI

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Candle
Сообщения: 3
Зарегистрирован: 30 янв 2020, 17:10
Поблагодарили: 1 раз

SMI

Непрочитанное сообщение Candle » 04 фев 2020, 22:07

Приветствую всех!
Подскажите как смастерить Индикатор Стохастик Моменту Индекс (SMI Ergodic Oscillator) для Alfa
Так я его оформил в Amibroker:

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

percentDLength = param("d",3,1,10,1);
percentKLength = param("k",5,1,10,1);
min_low = llv(low,percentKLength);
max_high = hhv(high, percentDLength);
rel_diff = close - (max_high + min_low)/2;
diff = max_high - min_low;
avgrel = EMA(EMA(rel_diff, 3), 3);
avgdiff = EMA(EMA(diff, 3), 3);
smi = iif(avgdiff !=0, (avgrel/(avgdiff/2))*100,0);
Plot(smi, _DEFAULT_NAME(), ParamColor( "Color", colorWhite ), ParamStyle("Style")  );

вот так изобразил в Transaq

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

#line 0 nodraw
#line 1 nodraw
#line 2 nodraw
#line 3 nodraw
var max_high;
var min_low;
var rel_diff;
var diff;
var avgdiff;
var avgrel;
extern period1 = 2;
extern period2 = 4;
function calc()
{
max_high = high[-period1,0];
min_low = low[-period2,0];
rel_diff = close - (max_high + min_low) / 2;
line[0] = rel_diff;
line[1] = MovAvg(ind_ema, 3, line[0]);
avgrel = MovAvg(ind_ema, 3, line[1]);
diff = max_high - min_low;
line[2] = diff;
line[3] = MovAvg(ind_ema, 3, line[2]);
avgdiff = MovAvg(ind_ema, 3, line[3]);
if (avgdiff != 0) { line[4] = avgrel/(avgdiff/2)*100;}
else {line[4] = 0;}
//line[5] =0;
}

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

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

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