Скачать MetaTrader 5

ChartIndicatorAdd в визуализаторе МТ5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Khatimlianskii
56503
Andrey Khatimlianskii  

Почему советник с таким кодом при запуске на обычном графике добавляет все индикаторы в одно подокно, а при запуске в визуализаторе выдает 7 раз "ChartIndicatorAdd ERROR #4014!!!" и каждый индикатор добавляется в свое подокно?

int OnInit()
{
//---
        int subwin = (int)ChartGetInteger( ChartID(), CHART_WINDOWS_TOTAL, 0 );
        for ( int c = 0; c < 7; c ++ )
        {
                Handles[c] = iCustom( _Symbol, _Period, ".....", Parameters[c] );
                if ( Handles[c] == INVALID_HANDLE )
                {
                        Print( " * \"iCustom ERROR #", GetLastError(), "!!!" );
                        return(INIT_FAILED);
                }
                if ( !ChartIndicatorAdd( ChartID(), subwin, Handles[c] ) )
                {
                        Print( " * ChartIndicatorAdd ERROR #", GetLastError(), "!!!" );
                }
        }

//---
        return(INIT_SUCCEEDED);
}

Если "Системная функция не разрешена для вызова" (описание ошибки 4014), то почему она работает?

Mikhail Filimonov
5931
Mikhail Filimonov  
Andrey Khatimlianskii:

Почему советник с таким кодом при запуске на обычном графике добавляет все индикаторы в одно подокно, а при запуске в визуализаторе выдает 7 раз "ChartIndicatorAdd ERROR #4014!!!" и каждый индикатор добавляется в свое подокно?

Если "Системная функция не разрешена для вызова" (описание ошибки 4014), то почему она работает?

Вот так работает:

int Handles[];
string Parameters[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  int subwin = (int)ChartGetInteger( ChartID(), CHART_WINDOWS_TOTAL, 0 );
  ArrayResize( Handles, 7 );
  ArrayResize( Parameters, 7 );
//---  
  for ( int c = 0; c < 7; c ++ )
  {
    Parameters[c] = "2015.03.16";
    Handles[c] = iCustom( _Symbol, _Period, "Test.ex5", Parameters[c] );
//---    
    if ( Handles[c] == INVALID_HANDLE )
    {
      Print( " * \"iCustom ERROR #", GetLastError(), "!!!" );
      return( INIT_FAILED );
    }
    else
    {
      if ( !ChartIndicatorAdd( ChartID(), subwin, Handles[c] ) )
      {
        Print( " * ChartIndicatorAdd ERROR #", GetLastError(), "!!!" );
        return( INIT_FAILED );
      }
      else
      {
        subwin++;
      }
    }  
  }
  ChartRedraw();
  return( INIT_SUCCEEDED );
}
Andrey Khatimlianskii
56503
Andrey Khatimlianskii  
Михаил:

Вот так работает:

Михаил, вы не поняли.

Мне нужно все индикаторы добавить в одно подокно. В разные подокна они как раз добавляются и с моим кодом (но только в режиме визуализации). 

Andrey Khatimlianskii
56503
Andrey Khatimlianskii  
Support Team 2015.05.21 17:15

Это будет исправлено.

В данный момент проводятся масштабные работы по визуализатору тестирования

Ivan Vagin
8888
Ivan Vagin  
Andrey Khatimlianskii:
опять наверное все, вчетвером, пару дней масштабно уделят внимание визуализатору
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий