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