Ошибки, баги, вопросы - страница 1005

 
ns_k:

День добрый!

А что, индикаторные буфера сохраняют значения между запусками индикаторов или это у меня глюки какие-то наблюдаются с терминалом?

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

Пожалуйста прокомментируйте.

Спасибо! 

Похоже есть все-таки условия, при которых в буферах остаются уже рассчитанные значения. Какие именно это условия, я не уловил. После перезапуска терминала проблема исчезла. Собственно поэтому заявку в сервис я писать не стал бы.

Вообще, может это не бага, а фича? 

Спасибо! 

 
ns_k:

Похоже есть все-таки условия, при которых в буферах остаются уже рассчитанные значения. Какие именно это условия, я не уловил. После перезапуска терминала проблема исчезла. Собственно поэтому заявку в сервис я писать не стал бы.

Вообще, может это не бага, а фича? 

Спасибо! 

Перед заполнением или во время инициализации просто обнуляйте значения массива:

ArrayInitialize(buffer_data,EMPTY_VALUE);
 
ns_k:

Похоже есть все-таки условия, при которых в буферах остаются уже рассчитанные значения. Какие именно это условия, я не уловил. После перезапуска терминала проблема исчезла. Собственно поэтому заявку в сервис я писать не стал бы.

Вообще, может это не бага, а фича? 

Спасибо! 

значения надо обнулять
 
tol64:

Перед заполнением или во время инициализации просто обнуляйте значения массива:

Спасибо!!!
 

Было бы неплохо, если бы по контекстной менюхе, вызываемой по правой кнопке, появился отдельный пункт с пользовательскими индикаторами 

Спасибо! 

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Еще вопрос пожалуйста :)

 

Каким способом можно выводить комменты в индикаторном окне, а не в окне графика?

 

Спасибо! 

 
ns_k:

Каким способом можно выводить комменты в индикаторном окне, а не в окне графика?

Не предусмотрено такое поведение. Используйте объекты, если очень надо.
 

Добрый день!

Окно свойств индикатора по возможности лучше сделать немодальным.

Спасибо!

 
ns_k:

Добрый день!

Окно свойств индикатора по возможности лучше сделать немодальным.

Спасибо!

И кнопочку Принять (Apply) добавить. То есть, изменили значение, нажали кнопку Принять и видим изменения не закрывая окно. Было бы удобнее намного. 

Ну и в стотысячный раз уже - возможность изменять размеры окна свойств. 

P.S. Пишите ещё в Сервисдеск. 

 

Не пойму, где я туплю, так сказать.

 

 

int OnCalculate (const int rates_total,      // size of input time series
                 const int prev_calculated,  // bars handled in previous call
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
                 )

  {
   
   
   
   doDrawIndicator(gSymbols[0],rates_total,g1ThermB);


//Comment(rates_total);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int doDrawIndicator(string xSymbol, int xRatesTotal, double &xBuffer[])//,double &xPrice[],double &xBuffer[])
  {
   double l1Close[]; // , l2Close[];
   datetime lTime[];
   datetime lEnd,lStart;
   int copied;
   ArrayInitialize(xBuffer,0);
   lEnd=TimeCurrent();
   lStart=(TimeCurrent()/86400)*86400+3600;

   copied=CopyTime(xSymbol,Period(),lStart,lEnd,lTime);
   if(copied==-1){Print("Can't copy time",__FUNCSIG__);return(0);}
   copied=CopyClose(xSymbol,Period(),lStart,lEnd,l1Close);
   if(copied==-1){Print("Ждите...1");return(0);}

   sThermometer lT;
  // Print("rates_total=",rates_total);
   //Comment(xSymbol);
   Comment(copied);
   g1RM=new CRangeManager(1,0.2,20,xSymbol);
 
   for(int i=0;i<copied;i++)
     {
      lT=g1RM.getStateByValue(l1Close[copied-i-1]);
      if(gThermRange==Up && lT.cTemperature.State<7 || gThermRange==Down && lT.cTemperature.State>6 )
        {
         xBuffer[xRatesTotal-i-1]=lT.cTemperature.Temperature;
        }
      else
        {
         xBuffer[xRatesTotal-i-1]=0;
        }
     }

     
   delete g1RM;
   return(1);

  }

 

 

Обновления индикатора не происходит, т.е. я все время вижу в левом углу 739 скажем (на минутки бросил, как вы понимаете). А как только нажимаю откомпилировать, индюк обновляется. В каком месте в коде ошибка?

Спасибо!