function Initialize() { IndicatorName = "NPS"; PriceStudy = true; AddInput("Input", Inputs.Candle); // Определяем тип входного ряда AddParameter("PS", 100); // Определяем изменяемый параметр AddGlobalVariable("gDirection", Types.Double, 1.0); // Определяем глобальную переменную AddGlobalVariable("gHigh", Types.Double, 0.0); // Определяем глобальную переменную AddGlobalVariable("gLow", Types.Double, 100000000000.0); // Определяем глобальную AddSeries("NPS", DrawAs.Line, Color.Blue); // Определяем выходной ряд } function Evaluate() { // Пример использования глобальных переменных gDirection, gHigh, gLow // AlfaDirect. Проверено 15/03/2014 // Отклонение от экстремума (по High и Low) на заданное кол-во значений PS - переворот направления if (CurrentIndex < 1) { NPS = Input.High[0]; gHigh = Input.High[0]; } else { // Пример вызова встроенного индикатора ATR var cATR = PS; if (gDirection > 0.0) { if (Input.High[0] > gHigh) gHigh = Input.High[0]; if (Input.Close[0] < gHigh-cATR) { gDirection = -1.0; gLow = Input.Low[0]; NPS = gLow + cATR; } else NPS = gHigh - cATR; } else if (gDirection < 0.0) { if (Input.Low[0] < gLow) gLow = Input.Low[0]; if (Input.Close[0] > gLow+cATR) { gDirection = 1.0; gHigh = Input.High[0]; NPS = gHigh - cATR; } else NPS = gLow + cATR; } } }