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

 
pako:
CHART_BRING_TO_TOP
Если не в "TOP" 
нет. эта фишка выводит окно сверху. но не проверяет на предмет окна в топе 
 
Vladislav Andruschenko:
нет. эта фишка выводит окно сверху. но не проверяет на предмет окна в топе 

ChartGetInteger()


 

 

https://www.mql5.com/ru/forum/42833#comment_1493908

тут 

 

в справке еще не изменили, полтора года не срок :)) 

Активный, в данный момент график.
Активный, в данный момент график.
  • www.mql5.com
Есть индикатор на каждом графике.
 

Это совсем не то. Чарт может быть не в топе, но быть видим. А может быть в топе, но быть невидим.

Рисовать на чарте имеет или не имеет смысл только в том случае, если известно, виден он или нет. 

 
fxsaber:

Это совсем не то. Чарт может быть не в топе, но быть видим. А может быть в топе, но быть невидим.

Рисовать на чарте имеет или не имеет смысл только в том случае, если известно, виден он или нет. 

Это попробуйте 
 
fxsaber:

Это совсем не то. Чарт может быть не в топе, но быть видим. А может быть в топе, но быть невидим.

Рисовать на чарте имеет или не имеет смысл только в том случае, если известно, виден он или нет. 

WinApi вам в помощь.
Там можно координаты и ширину чартов достать, плюс их z-очередность - все окна чартов принадлежат одному WMIClient.
 
pako:
Это попробуйте 
Не подходит.
 
Sergey Dzyublik:
WinApi вам в помощь.
Там можно координаты и ширину чартов достать, плюс их z-очередность - все окна чартов принадлежат одному WMIClient.
Спасибо, про WinAPI в курсе. Предложу в Сервисдеск, чтобы расширили ENUM_CHART_PROPERTY_INTEGER.
 

Вызываю скриптом данные периода. Начиная с часовых непонятные цифры получаются. Или так и должно быть?

void OnStart()
  {
Print("Period()=",Period());
  
  }
2016.11.01 16:56:07.466 период (EURUSD,H1)      Period()=16385
2016.11.01 16:55:58.840 период (EURUSD,M30)     Period()=30
2016.11.01 16:55:46.950 период (EURUSD,M1)      Period()=1
 
forexman77:

Вызываю скриптом данные периода. Начиная с часовых непонятные цифры получаются. Или так и должно быть?

void OnStart()
  {
Print("Period()=",Period());
  
  }
2016.11.01 16:56:07.466 период (EURUSD,H1)      Period()=16385
2016.11.01 16:55:58.840 период (EURUSD,M30)     Period()=30
2016.11.01 16:55:46.950 период (EURUSD,M1)      Period()=1
так и должно быть
 

Правильный ли подход к измерению времени выполнения полного круга в текущем индикаторном потоке?

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

sinput int Amount = 100; // Количество циклов

void OnInit( void )
{
  EventSetMillisecondTimer(1);
}

ulong ArrayMean( const ulong &Array[] )
{
  const int Size = ArraySize(Array);
  
  ulong Sum = 0;
  
  for (int i = 0; i < Size; i++)
    Sum += Array[i];
    
  return((Size > 0) ? Sum / Size : 0);
}

ulong ArrayMin( const ulong &Array[] )
{
  return(Array[ArrayMinimum(Array)]);
}

ulong ArrayMax( const ulong &Array[] )
{
  return(Array[ArrayMaximum(Array)]);
}

#define TOSTRING(A) #A + " = " + (string)(Array##A(Cycles)) + " mcs. "

void CycleComment( void )
{
  static ulong Cycles[];
  static const int Size = ArrayResize(Cycles, Amount);
  
  static ulong PrevTime = GetMicrosecondCount();
  static int i = 0;
    
  Cycles[i] = GetMicrosecondCount() - PrevTime;

  i++;
  i %= Size;
  
  Comment(TOSTRING(Mean) + TOSTRING(Min) + TOSTRING(Max));
    
  PrevTime = GetMicrosecondCount();
}

void OnTimer( void )
{
  CycleComment();
}

int OnCalculate( const int rates_total, const int prev_calculated, const int begin, const double& price[] )
{
  return(rates_total);
}

Что-то у меня много получается на пустом чарте (без индикаторов) - в среднем 15 мс, минимум 5 мс. Почему так?