Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как вставлять видео в редакторе сообщений
Alexander
11
Alexander 2011.10.27 22:07 

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

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

{

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

}

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

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

Viktor
228
Viktor 2011.10.28 04:13  
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;
}
Валентин
871
Валентин 2011.10.28 06:37  
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().
Павел
6
Павел 2011.10.28 08:19  
Общие функции нужно использовать для всех объектов, а не для каждого объекта в отдельности. Тогда и стройнее все в голове будет
Евгений
366
Евгений 2011.10.28 08:23  
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().
Sergey Pavlov
8042
Sergey Pavlov 2011.10.28 12:22  

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

Alexander
11
Alexander 2011.10.28 15:47  

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

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 тоже отлично работает

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий