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

[Удален]  
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 мс. Почему так?

 
A100:

В итоге должно получиться что то вроде этого

void OnStart()
{
        A<int> a;
        int b  = a[ 0 ];
        a[ 0 ] = a[ 1 ];
        a[ 1 ] = b;
}
Интересная задачка. Немного подумал и пока не догадался до решения.
 
fxsaber:
Перед публикацией кода в кодобазу авторы специально авторы исходники засовывают в 1-3 файла, или большинство представленных авторов так и пишут "все в кучу"?
Похоже, все же специально. Это упрощает ознакомление с работой, т.к. мало людей знают некоторые возможности терминала.
 

те кто могут написать советник или индикатор - не будут лазить по кодебазе в поисках чего-то. Соответственно если они ищут какой то код в кодебазу, то никакие библиотеки, а тем более классы им будут непонятны и они пройдут мимо такого кода. 

+ Когда например программируешь на заказ - то отдавать пользователю исходник с тележкой включаемых файлов - он Вас проклянет.

легче в одной файл все держать - получил задание сделал - отдал исходник - свободен.

а уже для своих программ, можно делать библиотеки и так далее.