Сдвинуть текст, если накладывается

 

У меня есть индикатор, одна из его функций - рисует текст по мере необходимости.

Так вот, возникают неприятные ситуации, когда рисуется 2 разных текста по одной и той же цене

Чтобы решить эту пробелеу я решил написать функцию, которая будет пробегать по всем объектам и по метке TEXT в названии всех объектов типа text находить их цену и сравнивать с той, по которой в данный момент времени индикатор пытается отрисовать текст

И в случае совпадения этих цен возвращает число - количество баров - на которое сдвигается текст по оси времени, дабы избежать наложения

Но вот незадача - реакции на эту функцию у программы ноль. Сама функция вызывается в ObjectCreate и прибавляется к координате-времени. Может кто помочь с ошибкой, почему ничего не происходит?

int TextChecker(double price)
{
   for(int i=0; i<ObjectsTotal(0,-1,-1); i++)
      {
         if(StringFind(ObjectName(0,i,-1,-1),"TEXT",0)>0)
            if(ObjectGetDouble(0,ObjectName(0,i,-1,-1),OBJPROP_PRICE)==price)
               {Comment("true"); return (PeriodSeconds(PERIOD_CURRENT)); }
                  else return 0;
      }
   return 0;
}
 
Roman Sharanov:

У меня есть индикатор, одна из его функций - рисует текст по мере необходимости.

Так вот, возникают неприятные ситуации, когда рисуется 2 разных текста по одной и той же цене

Чтобы решить эту пробелеу я решил написать функцию, которая будет пробегать по всем объектам и по метке TEXT в названии всех объектов типа text находить их цену и сравнивать с той, по которой в данный момент времени индикатор пытается отрисовать текст

И в случае совпадения этих цен возвращает число - количество баров - на которое сдвигается текст по оси времени, дабы избежать наложения

Но вот незадача - реакции на эту функцию у программы ноль. Сама функция вызывается в ObjectCreate и прибавляется к координате-времени. Может кто помочь с ошибкой, почему ничего не происходит?

Ищем начиная с 0.

 if(StringFind(ObjectName(0,i,-1,-1),"TEXT",0)>=0)
 
Alekseu Fedotov:

Ищем начиная с 0.

а, точно блин, самое сложное в самом простом)
Спасибо

 
Alekseu Fedotov:

Ищем начиная с 0.

А вот еще вопрос появился. Просто не все объекты имею приписку, которую я сделал.

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

 
Roman Sharanov:

А вот еще вопрос появился. Просто не все объекты имею приписку, которую я сделал.

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

Может поможет такой вариант:

int TextChecker(double price)
{
   for(int i=0; i<ObjectsTotal(0); i++)
      {
      string Name = ObjectName(0,i,-1,OBJ_TEXT);
      if(ObjectGetDouble(0,Name,OBJPROP_PRICE)==price)
        {
        Comment("true"); 
        return (PeriodSeconds(PERIOD_CURRENT)); 
        }
      }
   return 0;
}

Написано на коленке, не проверял