ФОРТС индикатор INIT_FAILED - страница 2

 
Mikalas:
Извините, если "загружается" хуже "висит", то пусть будет так!
Тут, думаю, надо в сервисдеск. Я понял так, что происходит последующий расчет индикатора.
 
Mikalas:
Извините, если "загружается" хуже "висит", то пусть будет так!

слово "висит" в данном случае в большей степени отражает его функциональные возможности :)))

Сам давно ещё мучился с этим - потом забил. А сейчас осенило. На всякий случай - код ниже только принцип показывает...

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   return(INIT_FAILED);
  }
  
void OnDeinit(const int reason)
  {
  string    name_ind = ChartIndicatorName(0, 1, 0);
   ChartIndicatorDelete(0,1, name_ind);
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
MigVRN:

слово "висит" в данном случае в большей степени отражает его функциональные возможности :)))

Сам давно ещё мучился с этим - потом забил. А сейчас осенило. На всякий случай - код ниже только принцип показывает...

Гм, в очередной раз, спасибо. Только, может быть, лучше перед INIT_FAILED непосредственно в инициализации?
 
Tapochun:
Гм, в очередной раз, спасибо. Только, может быть, лучше перед INIT_FAILED непосредственно в инициализации?
Неа.. Причина де инициализации может быть и в OnCalculate() . Хотя тут зависит уже от способа и целей использования индикатора. У меня и прикрепление и снятие индикатора реализовано в эксперте - поэтому мне в приципе не нужен этот механизм.
 
MigVRN:
Неа.. Причина де инициализации может быть и в OnCalculate() . Хотя тут зависит уже от способа и целей использования индикатора. У меня и прикрепление и снятие индикатора реализовано в эксперте - поэтому мне в приципе не нужен этот механизм.
Ну, так или иначе, работает.
 
MigVRN:

слово "висит" в данном случае в большей степени отражает его функциональные возможности :)))

Сам давно ещё мучился с этим - потом забил. А сейчас осенило. На всякий случай - код ниже только принцип показывает...

Тогда уж так:

//+------------------------------------------------------------------+
//|  Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{
  if ( reason == REASON_INITFAILED )
  {
    string name_ind = ChartIndicatorName(0, 1, 0);
    ChartIndicatorDelete( 0,1, name_ind ); 
  }
}
 

MigVRN - голова! :)

Всё заработало! 

void OnDeinit( const int reason )
{
  if ( reason == REASON_INITFAILED )
  {
    string name_ind = ChartIndicatorName(0, 1, 0);
    ChartIndicatorDelete( 0,1, name_ind ); 
  }
}
 
Mikalas:

Тогда уж так:

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

#property strict вам поможет ;)

 
diushych:

#property strict вам поможет ;)

Поясните, пожалуйста
Причина обращения: