Нужна помощ - индикатор работает ТОЛЬКО после перекомпиляции

 

Тоесть при изменении свойств, удаления и заново прикреплению к графику не работает как надо - рисует все стрелки BUY.. 

При прикрепленном, после перекомпиляции работает как надо(бай и селл указывает верно). 

    
   for(i=0; i<=limit; i++)
   {
 
      if(ExtMapBuffer3[i]>=ExtMapBuffer6[i])//BUY
      {
         StartUP=0;
         for(k=1; k<=BarsToCountX; k++)
         {
         if(ExtMapBuffer3[i+k] <= ExtMapBuffer5[i+k])//это условие при неправильной работа скорее всего выполняется постоянно
            StartUP=1;                               //почему только непонятно. ExtMapBuffer3,5,6  считаются в одном цикле...
         } 
      }//
      
      if(ExtMapBuffer3[i]<=ExtMapBuffer5[i])//SELL  а это при неправильной работе скорее всего совсем не выполняется хотя должно
      {
         StartDOWN=0;
         for(k=1; k<=BarsToCountX; k++)
         {
         if(ExtMapBuffer3[i+k] >= ExtMapBuffer6[i+k])
            StartDOWN=1;
         } 
      }//
 
 
    
      if(StartUP)
      {
      SetArrow("BUY", C_B, Col_B, i);     
      StartUP=0;
      }
      
      if(StartDOWN)
      {
      SetArrow("SELL", C_S, Col_S, i);     
      StartDOWN=0;
      }
   }
Заранее спасибо )
 
Попробуй разделить циклы

if(ExtMapBuffer3[i+k] <= ExtMapBuffer5[i+k])//это условие при неправильной работа скорее всего выполняется постоянно
StartUP=1; //почему только непонятно. ExtMapBuffer3,5,6 считаются в одном цикле...<==

А лучше весь код покажи

 

хм.. странные вещи просиходят.. переписал так


if(i<(limit-BarsToCountX))
     {
      
       if(ExtMapBuffer3[i]>=ExtMapBuffer6[i])//BUY
       {        
          StartUP=0;
          for(k=1; k<=BarsToCountX; k++)
            if(ExtMapBuffer3[i+k] <= ExtMapBuffer5[i+k])
            StartUP=1;
            Print("i+k=",i+k,"    ,   ExtMapBuffer5=",ExtMapBuffer5[i+k]);
       }//
      ...............

лог принта:

21:25:35 1_Jedi_MBA EURUSD,M5: deinitialized
21:25:35 1_Jedi_MBA EURUSD,M5: uninit reason 2        <- после перекомпиляции прикрепленного индикатора, все ОК
21:25:35 1_Jedi_MBA EURUSD,M5: loaded successfully
21:25:35 1_Jedi_MBA EURUSD,M5: initialized
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=21, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=22, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=23, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=24, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=25, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=26, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=31, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=32, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=42, ExtMapBuffer5=18.4698
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=43, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=44, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=45, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=46, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=47, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=48, ExtMapBuffer5=17.1895
21:25:35 1_Jedi_MBA EURUSD,M5: i+k=49, ExtMapBuffer5=17.1895
21:26:00 1_Jedi_MBA EURUSD,M5: deinitialized
21:26:00 1_Jedi_MBA EURUSD,M5: uninit reason 5            <- после вызова свойств(параметры не менял), значения переполненные хотя индексы те-же.. ((
21:26:00 1_Jedi_MBA EURUSD,M5: initialized
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=21, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=22, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=23, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=24, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=25, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=26, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=31, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=32, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=42, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=43, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=44, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=45, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=46, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=47, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=48, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: i+k=49, ExtMapBuffer5=2147483647
21:26:00 1_Jedi_MBA EURUSD,M5: deinitialized
21:26:00 1_Jedi_MBA EURUSD,M5: uninit reason 1
21:26:00 1_Jedi_MBA EURUSD,M5: removed

 
xrust:
Попробуй разделить циклы

if(ExtMapBuffer3[i+k] <= ExtMapBuffer5[i+k])//это условие при неправильной работа скорее всего выполняется постоянно
StartUP=1; //почему только непонятно. ExtMapBuffer3,5,6 считаются в одном цикле...<==

А лучше весь код покажи

разделить? так наоборот если в одном то значения из разных буфферов с одним индексом будут адекватными.. И проблема не в этом.. А непонятно в чем..

Т.к. не трогая код то работает то нет..

 
2147483647 <= вот ключевая фигура этого бага! тогда тебе сюда => https://forum.mql4.com/ru/search/2147483647
 
xrust:
2147483647 <= вот ключевая фигура этого бага! тогда тебе сюда => https://forum.mql4.com/ru/search/2147483647
спасибо конечно ) про это я знал.. Действительно правда ошибся - индексы вылазили за непосчитанные. Но сбивало то, что все-таки после перекомпиляции работало ) Видимо, буфферы не очищаются.. после перекомпиляции.. хотя странно все-равно это как-то, пишет же что выгрузило и загрузило заново =)
Причина обращения: