Вопрос к разработчикам экспертов, индикаторов

 

Уважаемые форумчани, доброго времени суток. Есть вопрос к разработчикам экспертов, индикаторов и т.д. В чем суть, нужно нарисовать трендовые линий по графику экспертом,к примеру вот так

if (Low[0]>Low[10]) может нужно еще какое нибудь условие // бычий тренд

{

ObjectCreate("Lt"+Time[2],OBJ_TREND,0,Time[10],Low[10,Time[0],Low[0]);

}

Но поскольку функция старт отрабатывает на каждом тике и Low массив сдвигается на 1, то с каждым баром он их рисует «миллион», но, а нужно так вроде как рисовались линий вручную, линия на 11 бар потом опять на одиннадцать и т.д., что то, типа индикатора зигзага. Может кто знает подскажите пожалуйста решение.

Заранее Всем спасибо.

 
Sasha2401b:

Уважаемые форумчани, доброго времени суток. Есть вопрос к разработчикам экспертов, индикаторов и т.д. В чем суть, нужно нарисовать трендовые линий по графику экспертом,к примеру вот так

if (Low[0]>Low[10]) может нужно еще какое нибудь условие // бычий тренд

{

ObjectCreate("Lt"+Time[2],OBJ_TREND,0,Time[10],Low[10,Time[0],Low[0]);

}

Но поскольку функция старт отрабатывает на каждом тике и Low массив сдвигается на 1, то с каждым баром он их рисует «миллион», но, а нужно так вроде как рисовались линий вручную, линия на 11 бар потом опять на одиннадцать и т.д., что то, типа индикатора зигзага. Может кто знает подскажите пожалуйста решение.

Заранее Всем спасибо.

static int last_Bars=0;

if ((...) && (Bars-last_Bars)>=10) // может нужно еще какое нибудь условие // бычий тренд 
{ 
ObjectCreate(...);
last_Bars = Bars;
}
 
Sasha2401b:

Уважаемые форумчани, доброго времени суток. Есть вопрос к разработчикам экспертов, индикаторов и т.д. В чем суть, нужно нарисовать трендовые линий по графику экспертом,к примеру вот так

if (Low[0]>Low[10]) может нужно еще какое нибудь условие // бычий тренд

{

ObjectCreate("Lt"+Time[2],OBJ_TREND,0,Time[10],Low[10,Time[0],Low[0]);

}

Но поскольку функция старт отрабатывает на каждом тике и Low массив сдвигается на 1, то с каждым баром он их рисует «миллион», но, а нужно так вроде как рисовались линий вручную, линия на 11 бар потом опять на одиннадцать и т.д., что то, типа индикатора зигзага. Может кто знает подскажите пожалуйста решение.

Заранее Всем спасибо.

Функцию ObjectCreate() вынесети в функцию Init() или в пользовательскую фукнцию и вызывайте ее по мере необходимости. В функции Start() используйте ObjectSet().
 
Общие функции нужно использовать для всех объектов, а не для каждого объекта в отдельности. Тогда и стройнее все в голове будет
 
Sasha2401b:

...нужно нарисовать трендовые линий по графику экспертом,к примеру вот так

if (Low[0]>Low[10]) может нужно еще какое нибудь условие // бычий тренд

{ ObjectCreate("Lt"+Time[2],OBJ_TREND,0,Time[10],Low[10,Time[0],Low[0]); }

Но поскольку функция старт отрабатывает на каждом тике и Low массив сдвигается на 1, то с каждым баром он их рисует «миллион», но, а нужно так вроде как рисовались линий вручную, линия на 11 бар потом опять на одиннадцать и т.д., что то, типа индикатора зигзага. Может кто знает подскажите пожалуйста решение.

Создать объект -- использовать ObjectCreate().
Передвинуть объект -- использовать ObjectGet(),ObjectMove().
 

Имя объекта не меняйте и будет Вам счастье.

 

Ребята спасибо, остановился на вот это варианте

int init ()
{

ObjectCreate("Lt",OBJ_TREND,0,Time[10],Low[10],Time[0],Low[0]);

return (0);
}

int start()

...

ObjectMove("Lt",0,Time[10],Low[10]);

ObjectMove("Lt",1,Time[0],Low[0]);

...


Хотя вариант предложенный prorab тоже отлично работает

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