Пишу советник с условием 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;}
Столкнулся с такой проблемой: на текущем баре точки рисуются нормально если условие выполняется, НО почему точки не сохраняются на истории как только условие не выполняется???
У каждой точки должно быть свое имя, если точки не сохраняются значит советник их переносит. Попробуйте в имени точки использовать время бара.
У каждой точки должно быть свое имя, если точки не сохраняются значит советник их переносит. Попробуйте в имени точки использовать время бара.
С именами вроде все хорошо: l_1, l_2, l_3 ... и т.д. Почему то на истории они не остаются(
С именами вроде все хорошо: l_1, l_2, l_3 ... и т.д. Почему то на истории они не остаются(
Вам уже посоветовали добавить в имя время.
Нет не помогло, при открытии нового бара, все точки с предыдущего затираются.
Значит сделали что то не так.
ObjectCreate(0,"l_"+TimeToString(Time[номер бара на котором рисуется стрелка]),OBJ_ARROW,0,0,0,0,0);
Значит сделали что то не так.
Все равно точки не сохраняются на истории(
Все равно точки не сохраняются на истории(
Покажите, если не секрет, вашу часть кода, как вы это реализовали.
Покажите, если не секрет, вашу часть кода, как вы это реализовали.
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;
}
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;
}
А в коде ни где случайно нет функции удаления всех объектов?
А в коде ни где случайно нет функции удаления всех объектов?
нет

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу советник с условием 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;}
Столкнулся с такой проблемой: на текущем баре точки рисуются нормально если условие выполняется, НО почему точки не сохраняются на истории как только условие не выполняется???