Вопрос по Objectget и Objectgetvaluebyshift - страница 2

 
honest_knave:

Здравствуйте, пожалуйста, используйте кнопку SRC при размещении кода.

Весь код, выделенный желтым цветом, находится ВНЕ цикла 'for'.

Поэтому значение 'name' всегда является именем конечного объекта.


Возможно, попробуйте следующее (при условии, что price1 и price2 уже объявлены где-то еще):

Большое спасибо за помощь. Как напечатать, чтобы увидеть price1... в журнале, чтобы убедиться, что он работает.
 
Rajakumar1:
Большое спасибо за помощь. Как напечатать, чтобы увидеть цену1... в журнале, чтобы убедиться, что это работает.
Таким же образом напечатать название...
int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
         Print("price1: ", price1);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
         Print("price2: ", price2);
        }
     }
 
honest_knave:
Так же, как вы печатаете имя...
Спасибо. У меня есть команда печати в советнике. Она не печатается в журнале. Где печатается вывод?
 
Rajakumar1:
Спасибо. У меня есть команда печати в советнике. Она не выводится в журнал. Где печатается вывод?

Эксперты (вкладка слева от Журнала)
 
honest_knave:

Эксперты (вкладка слева от Журнала)
У меня есть индикатор, рисующий линию тренда. Советник основан на трендовых линиях, построенных индикатором. Есть ли способ проверить, почему он не печатает значения. Я прилагаю файлы. Извините за беспокойство. Спасибо за помощь.
 
Rajakumar1:
У меня есть индикатор, рисующий линию тренда. Советник основан на линиях тренда, нарисованных индикатором. Есть ли способ проверить, почему он не печатает значения. Я прилагаю файлы. Извините за беспокойство. Спасибо за помощь.


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

Так вы сможете отследить проблему.

Вам нужно искать функции, которые не вызываются, или неожиданные значения переменных.

Это займет некоторое время, но это то, что вы можете сделать сами.

Например, у меня есть советник с переменной, которая увеличивается на 1 каждый тик.

Я не знаю, почему иногда переменная сбрасывается обратно в 0.


#property strict

int myVariable;

int OnInit()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
   EventSetTimer(5);
   return(INIT_SUCCEEDED);
  }

void OnTimer()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }

void OnTick()
  {
   myVariable++;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }


И вывод:




Я вижу, что переменная myVariable увеличивается на 1 каждый тик, но OnTimer() сбрасывает ее обратно в ноль.

Теперь я знаю, где проблема.

----

Или вы можете попробовать использовать функцию отладки, встроенную в MetaEditor, хотя некоторые пользователи сообщали о проблемах с этим... YMMV

 
honest_knave:


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

Так вы сможете отследить проблему.

Вам нужно искать функции, которые не вызываются, или неожиданные значения переменных.

Это займет некоторое время, но это то, что вы можете сделать сами.

Например, у меня есть советник с переменной, которая увеличивается на 1 каждый тик.

Я не знаю, почему иногда переменная сбрасывается обратно в 0.



И вывод:

Спасибо. Должен ли я удалить файлы?



Я вижу, что переменная myVariable увеличивается на 1 каждый тик, но OnTimer() сбрасывает ее обратно в ноль.

Теперь я знаю, где проблема.

----

Или вы можете попробовать использовать функцию отладки, встроенную в MetaEditor, хотя некоторые пользователи сообщали о проблемах с этим... YMMV

 
Rajakumar1:
Спасибо. Должен ли я удалить файлы.
 
Rajakumar1:
Спасибо. Должен ли я удалить файлы.


Это ваше решение - между этими двумя индикаторами почти 800 строк кода... возможно, у кого-то найдется время, чтобы просмотреть их для вас.

Но вы можете получить более быстрое решение, если сначала сами сузите круг проблем.

Удачи


 
honest_knave:


Это ваше решение - между этими двумя индикаторами почти 800 строк кода... у кого-то может быть время, чтобы просмотреть его для вас.

Но вы можете получить более быстрое решение, если сначала сами сузите круг проблем.

Удачи


Большое спасибо за помощь. Подскажите, пожалуйста, где искать в первую очередь? Мета-редактор показывает только предупреждения. Ошибок нет.