Здравствуйте!
Решил попрактиковаться в самостоятельном написании индикаторов технического анализа, но понял, что плохо себе представляю как работает функция 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 |