Закрытие по iSAR

 

Доброго времени суток, уважаемые знатоки, не соизволите ли помочь новичку:

Задался я целью закрываться по параболику, в сугубо любознательных целях написал следующее:

if ( (iSAR(NULL,0,0.02, 0.2,1)>Close[1])
&& (iSAR(NULL,0,0.02, 0.2,2)<Close[2])
||
(iSAR(NULL,0,0.02,0.2,1)<Close[1])
&& (iSAR(NULL,0,0.02,0.2,2)>Close[2]) )
CloseAllOrders();

Где функция CloseAllOrders() - соотвественно функция закрытия всех ордеров. В ней проблем нет, проверял.

А проблема вот в чём: закрытие происходит не сразу после того как произойдёт разворот тренда или наступит флет (т.е. не когда нарисуется следующая точка параболика над/под ценой), а через некоторое время. Более того, если открыть ордер сразу после закрытия, он тоже закроется. После нескольких тиков становится всё нормально, программа снова начинает ждать следующего разворота. Что сделать, чтобы закрытие происходило вовремя? Можно ли закрывать таким образом, или есть альтернативные варианты? Если есть, то прошу привести пример. Если ошибки в коде - прошу указать где.

Простите, если ляпнул какую-то несуразицу, но старался выясниться понятным языком. Стаж в торговле и в программировании в MT4 - 3 недели с перерывами.

Причина обращения: