/*[[ Name := t3_Aroon_1_Aroon_Not_Smoothed Author := Copyright c 2004, Horn Link := alexander @ indus.ru Separate Window := Yes First Color := SandyBrown First Draw Type := Line First Symbol := 217 Use Second Data := Yes Second Color := Red Second Draw Type := Line Second Symbol := 218 Minimum Chart Limits := -5.000000 Maximum Chart Limits := 105.000000 ]]*/ Inputs: calculate_period(12); var : shift(0); var : HighestBar(0),LowestBar(0); var : aroonUp(0),aroonDn(0); SetLoopCount(0); for shift=Bars-calculate_period Downto 0 { // Ищем номер бара с максимумом за указанный период HighestBar = Highest(MODE_HIGH,shift+calculate_period-1,calculate_period); // Ищем номер бара с минимумом за указанный период LowestBar = Lowest(MODE_LOW,shift+calculate_period-1,calculate_period); // Находим количество периодов прошедших со времени последнего // максимума/минимума на указанном периоде и ранжируем значение // так, чтобы при достижении максимума/минимума на текущем баре // значение Aroon'ов было соответственно равно 100 aroonUp = 100 - ((HighestBar - shift) / calculate_period) * 100; aroonDn = 100 - ((LowestBar - shift) / calculate_period) * 100; // в связи с тем, что MT интерпретирует значение 0 при выводе // графиков на экран как отсутствие данных, то для того чтобы // нарисовать что-либо со значением 0 надо взять очень маленькое // значение близкое к 0 if(aroonUp == 0) then { aroonUp = 0.0000001; } if(aroonDn == 0) then { aroonDn = 0.0000001; } // Показываем линии SetIndexValue(shift, aroonUp); SetIndexValue2(shift, aroonDn); };