Проблема с советником.

 

Пишу советник с условием if (a>b) и при выполнении этого условия рисую точку по текущей цене

{ObjectCreate(0,"l_"+(string)sch,OBJ_ARROW,0,0,0,0,0);          

ObjectSetInteger(0,"l_"+(string)sch,OBJPROP_ARROWCODE,159);    

ObjectSetInteger(0,"l_"+(string)sch,OBJPROP_TIME,Time[0]);       

ObjectSetDouble(0,"l_"+(string)sch,OBJPROP_PRICE,Bid);

ObjectSet("l_"+(string)sch,OBJPROP_COLOR,White);

ObjectSet("l_"+(string)sch,OBJPROP_WIDTH,3);

sch = sch + 1;} 

Столкнулся с такой проблемой: на текущем баре точки рисуются нормально если условие выполняется, НО почему точки не сохраняются на истории как только условие не выполняется???

 
mt1002:

Пишу советник с условием if (a>b) и при выполнении этого условия рисую точку по текущей цене

{ObjectCreate(0,"l_"+(string)sch,OBJ_ARROW,0,0,0,0,0);          

ObjectSetInteger(0,"l_"+(string)sch,OBJPROP_ARROWCODE,159);    

ObjectSetInteger(0,"l_"+(string)sch,OBJPROP_TIME,Time[0]);       

ObjectSetDouble(0,"l_"+(string)sch,OBJPROP_PRICE,Bid);

ObjectSet("l_"+(string)sch,OBJPROP_COLOR,White);

ObjectSet("l_"+(string)sch,OBJPROP_WIDTH,3);

sch = sch + 1;} 

Столкнулся с такой проблемой: на текущем баре точки рисуются нормально если условие выполняется, НО почему точки не сохраняются на истории как только условие не выполняется???

У каждой точки должно быть свое имя, если точки не сохраняются значит советник их переносит. Попробуйте в имени точки использовать время бара.

 
Vladimir Pastushak:

У каждой точки должно быть свое имя, если точки не сохраняются значит советник их переносит. Попробуйте в имени точки использовать время бара.

С именами вроде все хорошо: l_1, l_2, l_3 ... и т.д. Почему то на истории они не остаются(

 
mt1002:

С именами вроде все хорошо: l_1, l_2, l_3 ... и т.д. Почему то на истории они не остаются(

Вам уже посоветовали добавить в имя время.
 
Sergey Pavlov:
Вам уже посоветовали добавить в имя время.

Нет не помогло, при открытии нового бара, все точки с предыдущего затираются.

 
mt1002:

Нет не помогло, при открытии нового бара, все точки с предыдущего затираются.

Значит сделали что то не так.

ObjectCreate(0,"l_"+TimeToString(Time[номер бара на котором рисуется стрелка]),OBJ_ARROW,0,0,0,0,0);     
 
Vitalii Ananev:

Значит сделали что то не так.

Все равно точки не сохраняются на истории(

 
mt1002:

Все равно точки не сохраняются на истории(

Покажите, если не секрет, вашу часть кода, как вы это реализовали.  

 
Vitalii Ananev:

Покажите, если не секрет, вашу часть кода, как вы это реализовали.  

void OnTick()

  {

double a=iCustom(NULL,PERIOD_CURRENT,"TEST_1",1,2,50,0,0);

double b=iCustom(NULL,PERIOD_CURRENT,"TEST_2",1,3,50,0,0);

if (a<b)

{

ObjectCreate(0,"h_"+TimeToString(Time[0]),OBJ_ARROW,0,0,0,0,0);          

ObjectSetInteger(0,"h_"+TimeToString(Time[0]),OBJPROP_ARROWCODE,159);    

ObjectSetInteger(0,"h_"+TimeToString(Time[0]),OBJPROP_TIME,Time[0]);       

ObjectSetDouble(0,"h_"+TimeToString(Time[0]),OBJPROP_PRICE,Bid);

ObjectSet("h_"+TimeToString(Time[0]),OBJPROP_COLOR,White);

ObjectSet("h_"+TimeToString(Time[0]),OBJPROP_WIDTH,3);

//sch = sch + 1;

}

 
mt1002:

void OnTick()

  {

double a=iCustom(NULL,PERIOD_CURRENT,"TEST_1",1,2,50,0,0);

double b=iCustom(NULL,PERIOD_CURRENT,"TEST_2",1,3,50,0,0);

if (a<b)

{

ObjectCreate(0,"h_"+TimeToString(Time[0]),OBJ_ARROW,0,0,0,0,0);          

ObjectSetInteger(0,"h_"+TimeToString(Time[0]),OBJPROP_ARROWCODE,159);    

ObjectSetInteger(0,"h_"+TimeToString(Time[0]),OBJPROP_TIME,Time[0]);       

ObjectSetDouble(0,"h_"+TimeToString(Time[0]),OBJPROP_PRICE,Bid);

ObjectSet("h_"+TimeToString(Time[0]),OBJPROP_COLOR,White);

ObjectSet("h_"+TimeToString(Time[0]),OBJPROP_WIDTH,3);

//sch = sch + 1;

}

А в коде ни где случайно нет функции удаления всех объектов?

 
Vitalii Ananev:

А в коде ни где случайно нет функции удаления всех объектов?

нет

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