При смене таймфрейма объект исчезает с графика.

 

Здравствуйте! Написал индикатор. Все работает хорошо. Да вот только при переключении таймфрейма, все зарисованные объекты исчезают с графика.

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

Пробовал функцию ChartRedraw(); , вставлял и в начале и в конце. - не помогает.

 
Yuriy Vins:

Здравствуйте! Написал индикатор. Все работает хорошо. Да вот только при переключении таймфрейма, все зарисованные объекты исчезают с графика.

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

Пробовал функцию ChartRedraw(); , вставлял и в начале и в конце. - не помогает.

Если Вы эти объекты принудительно не удаляете в OnDeinit() или в OnInit(), то просто нажмите "Ctrl" + "B" и Вы их увидите.

 
Vladimir Karputov:

Если Вы эти объекты принудительно не удаляете в OnDeinit() или в OnInit(), то просто нажмите "Ctrl" + "B" и Вы их увидите.

Не а.. Все равно не показывает.

Ну у меня в деините стоит функция удаления.

void OnDeinit(const int reason)
  {
   ObjectDelete("Dot_A");
   ObjectDelete("Dot_B");
   for(int j=0; j<=301; j++)
   ObjectDelete("Line"+IntegerToString(j,0));
  } 

Но что же мне теперь ее убирать из за этого??

 
Yuriy Vins:

Не а.. Все равно не показывает.

Ну у меня в деините стоит функция удаления.

Но что же мне теперь ее убирать из за этого??

Сначала прочесть справку по OnDeinit.

 
Vladimir Karputov:

Сначала прочесть справку по OnDeinit.

Так значит все из за деинита. А как же тогда исключить удаление объектов при смене таймфрейма ?
Справку я прочитал, но пока не врубаюсь..
 
Vladimir Karputov:

Сначала прочесть справку по OnDeinit.

Индикатор пишу в первый раз
 
Yuriy Vins:
Так значит все из за деинита. А как же тогда исключить удаление объектов при смене таймфрейма ?
Справку я прочитал, но пока не врубаюсь..

Ответ здесь: Параметр reason может принимать следующие значения:...


Если не поймёте, то просто поэксперементируйте с параметром reason  - наберётесь опыта.

 
Yuriy Vins:
Индикатор пишу в первый раз

Советник пишется также.

Для пробы:

void OnDeinit(const int reason)
  {
   Alert(reason);
  } 

Переключите тайм, измените входные параметры, удалите с графика, прикрепите к графику, а потом подумайте, как это всё использовать.

 

Просто проверьте причину деинициализации их всего 10 

Ну както вот так делайте

void OnDeinit(const int reason)
  {
   if(Debug)
      switch(reason)
        {
         case REASON_PROGRAM: Print("Indicator deinit: REASON_PROGRAM");break;
         case REASON_REMOVE: Print("Indicator deinit: REASON_REMOVE");break;
         case REASON_RECOMPILE: Print("Indicator deinit: REASON_RECOMPILE");break;
         case REASON_CHARTCHANGE: Print("Indicator deinit: REASON_CHARTCHANGE");break;
         case REASON_CHARTCLOSE: Print("Indicator deinit: REASON_CHARTCLOSEv");break;
         case REASON_PARAMETERS: Print("Indicator deinit: REASON_PARAMETERS");break;
         case REASON_ACCOUNT: Print("Indicator deinit: REASON_ACCOUNT");break;
         case REASON_TEMPLATE: Print("Indicator deinit: REASON_TEMPLATE");break;
         case REASON_INITFAILED: Print("Indicator deinit: ");break;
         case REASON_CLOSE: Print("Indicator deinit: REASON_CLOSE");break;
        }
   if(reason==REASON_REMOVE || reason==REASON_PROGRAM || reason==REASON_CHARTCLOSE)
     {
      ObjectDelete(0,"HEADMTFChK");
      ObjectDelete(0,Prefics+"M5");
      ObjectDelete(0,Prefics+"M15");
      ObjectDelete(0,Prefics+"M30");
      ObjectDelete(0,Prefics+"H1");
      ObjectDelete(0,Prefics+"H4");
      ObjectDelete(0,Prefics+"D1");
      ObjectDelete(0,Prefics+"W1");
      ObjectDelete(0,Prefics+"MN");
      ObjectDelete(0,Prefics+"SCC");
      ObjectDelete(0,Prefics+"SDst");
      if(ObjectFind(0,Prefics+"HDst")>=0){ObjectDelete(0,Prefics+"HDst");}
      if(ObjectFind(0,Prefics+"MDst")>=0){ObjectDelete(0,Prefics+"MDst");}
      if(ObjectFind(0,Prefics+"LDst")>=0){ObjectDelete(0,Prefics+"LDst");}
      GlobalVariableDel(GVName+ChartSymbol());
     }
  }
 
Vitaly Gorbunov:

Просто проверьте причину деинициализации их всего 10 

Ну както вот так делайте

Слово Prefics, пишется вот так Prefiх)

 
Vitaly Muzichenko:

Слово Prefics, пишется вот так Prefiх)

О точно, ато я думаю что здесь не так :)