Функция Zig Zag при расчете обычно имеет 3 настраиваемых параметра это:
1. DATA ARRAY (close, open, high,low)
2. MINIMUM CHANGE (0……………10)
3. DIFF_ METHOD (% или $)
однако индикатор написанный на языке ATF (см.ниже) специалистами TRANSAQ имеет только один настраиваемый параметр - MINIMUM CHANGE. Подскажите, пожалуйста, как добавить в этот код 2 остальных параметра или точнее куда их туда воткнуть

?
#samewindow
#line 0 solid red
extern rate = 1;
var trend = 1;
var last;
var last_n;
var last_extr;
var last_extr_n = 0;
var r;
function init() {
last = close;
line[0] = close;
last_extr = close;
last_extr_n = 0;
last_n = 0;
r = rate / 100;
}
function getCandleLag(var n, var curr)
{
return -(curr - n);
}
function approxLinear(var x1, var y1, var x2, var y2)
{
var n = x2 - x1;
if (!n) {
line[0][getCandleLag(x1, noCandle())] = y1;
return;
}
var k = (y2 - y1) / n;
var i = 0;
while (i <= n) {
line[0][getCandleLag(x1 + i, noCandle())] = y1 + k*i;
i += 1;
}
}
function findMax(var from, var to)
{
var m = high[getCandleLag(from, noCandle())];
var n = from;
var i = from + 1;
while (i <= to) {
var x = high[getCandleLag(from, noCandle())];
if (x > m) {
m = x;
n = i;
}
i += 1;
}
return n;
}
function findMin(var from, var to)
{
var m = low[getCandleLag(from, noCandle())];
var n = from;
var i = from + 1;
while (i <= to) {
var x = low[getCandleLag(from, noCandle())];
if (x < m) {
m = x;
n = i;
}
i += 1;
}
return n;
}
function calc()
{
if (trend == 1) {
if (close > last_extr) {
last_extr = high;
last_extr_n = noCandle();
approxLinear(last_n, last, noCandle(), high);
}
else {
approxLinear(last_extr_n, last_extr, noCandle(), low);
}
}
if (trend == -1) {
if (close < last_extr) {
last_extr = low;
last_extr_n = noCandle();
approxLinear(last_n, last, noCandle(), low);
}
else {
approxLinear(last_extr_n, last_extr, noCandle(), high);
}
}
if (abs(close - last_extr) / last_extr > r) {
var old_n = last_n;
var old = last;
last_n = last_extr_n;
last = last_extr;
if (trend > 0) {
trend = -1;
last_extr_n = findMin(last_n, noCandle());
last_extr = low[getCandleLag(last_extr_n, noCandle())];
}
else {
trend = 1;
last_extr_n = findMax(last_n, noCandle());
last_extr = high[getCandleLag(last_extr_n, noCandle())];
}
approxLinear(old_n, old, last_n, last);
approxLinear(last_n, last, noCandle(), close);
}
}