Здравствуйте!
Решил попрактиковаться в самостоятельном написании индикаторов технического анализа, но понял, что плохо себе представляю как работает функция OnCalculate.
Как я понял, именно она отвечает за установку значений на индикатор.
Пытаюсь сделать так, чтобы индикатор ставил точки в зависимости от определенных условий (например, пересечения скользящих средних)
График типа TYPE_POINT.
Однако, количество точек четко совпадает с количеством свечей (и их координаты Х соответстенно), а по ординате все точки принимают одно и то же значение.
Где я фундаментально заблуждаюсь?
Решил попрактиковаться в самостоятельном написании индикаторов технического анализа, но понял, что плохо себе представляю как работает функция OnCalculate.
Как я понял, именно она отвечает за установку значений на индикатор.
Пытаюсь сделать так, чтобы индикатор ставил точки в зависимости от определенных условий (например, пересечения скользящих средних)
График типа TYPE_POINT.
Однако, количество точек четко совпадает с количеством свечей (и их координаты Х соответстенно), а по ординате все точки принимают одно и то же значение.
Где я фундаментально заблуждаюсь?
Код |
---|
function OnCalculate() local short_pos=false; local long_pos=false; N1=getNumCandles("MVAs") for v=2,N1,1 do t=getCandlesByIndex("MVAs",0,v,1)[0]; t1=getCandlesByIndex("MVAs",0, v-1, 1)[0].close; t2=getCandlesByIndex("MVAl",0, v-1, 1)[0].close; t11=getCandlesByIndex("MVAs",0, v-2, 1)[0].close; t22=getCandlesByIndex("MVAl",0, v-2, 1)[0].close; if (t1>t2) and (t11<t22) then --короткая пересекает длинную снизу вверх if (short_pos==false) then --если не в позиции то long_pos=true; --открываем длинную позицию (покупка) return t.open; else --иначе short_pos=false; --закрываем короткую позицию return t.open; end else if (t1<t2) and (t11>t22) then --короткая пересекает длинную сверху вниз if (long_pos==false) then --если не в позиции то открываем короткую short_pos=true; return t.open; else --иначе long_pos=false; --закрывается длинная позиция return t.open; --производим продажу; длинна позиция закрыта. end end end end end |