[СЕРВИСДЕСК] Ошибка получения времени старшего ТФ в таймере! - страница 13

 
Alexey Kozitsyn:

Прочитайте п.1.

Для получения времени открытия бара таймер совсем ни к чему, да любых других данных, если не с другого символа отличного от графика. Хоть каждую миллисекунду его перепроверяйте если это не связано с отличным от текущего графика символом, а интересно именно другой ТФ текущего символа. То пока не придет новые данные он не обновится. А у вас вся работа идет по текущему символу. Так что не забивайте себе голову с таймером. Остальное как таковое уже пережевано по нескольку раз. Тема пошла по кругу.

 
Konstantin Nikitin:

Для получения времени открытия бара таймер совсем ни к чему, да любых других данных, если не с другого символа отличного от графика. Хоть каждую миллисекунду его перепроверяйте если это не связано с отличным от текущего графика символом, а интересно именно другой ТФ текущего символа. То пока не придет новые данные он не обновится. А у вас вся работа идет по текущему символу. Так что не забивайте себе голову с таймером. Остальное как таковое уже пережевано по нескольку раз. Тема пошла по кругу.

Дружище, Вы явно не въезжаете, в то, что здесь происходит. Дело уже не в таймере, забудьте про него. Таймер относится к моей реальной задаче. Проблема сейчас в ошибке получаемых данных. Пункт 1, который я посоветовал Вам прочитать - он о том, что при наличии IsConnected() индикатор итак подключится к серверу лишь на втором событии OnCalculate(). Т.е. Ваш предыдущий совет бесполезен.

 
Alexey Kozitsyn:

Дружище, Вы явно не въезжаете, в то, что здесь происходит. Дело уже не в таймере, забудьте про него. Таймер относится к моей реальной задаче. Проблема сейчас в ошибке получаемых данных. Пункт 1, который я посоветовал Вам прочитать - он о том, что при наличии IsConnected() индикатор итак подключится к серверу лишь на втором событии OnCalculate(). Т.е. Ваш предыдущий совет бесполезен.

А вы проверяли это опытным путем? Советую проверить. Так перезапустите терминал с тестом.

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[]
)
{
   static int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

И что видно?

При первом проходе если есть соединение с сервером все отрабатывает.

 
Konstantin Nikitin:

А вы проверяли это опытным путем? Советую проверить. Так перезапустите терминал с тестом.

И что видно?

При первом проходе если есть соединение с сервером все отрабатывает.

Кто в здравом уме и трезвой памяти тестирует при неработающем рынке?

И да, я проверял это опытным путем, о чем и написал.

 
Alexey Kozitsyn:

Кто в здравом уме и трезвой памяти тестирует при неработающем рынке?

И да, я проверял это опытным путем, о чем и написал.

А при чем тут работающий, или нет рынок. Индикатор запустился, отработка пошла. Результат первого прохода в комментарии. Вы же говорили

Alexey Kozitsyn:

Вам прочитать - он о том, что при наличии IsConnected() индикатор итак подключится к серверу лишь на втором событии OnCalculate(). Т.е. Ваш предыдущий совет бесполезен.

 
Konstantin Nikitin:

А при чем тут работающий, или нет рынок. Индикатор запустился, отработка пошла. Результат первого прохода в комментарии. Вы же говорили

Мде. Ну хорошо. А теперь выключите терминал с установленным на графике этим Вашим индикатором и запустите снова.

 
Alexey Kozitsyn:

Мде. Ну хорошо. А теперь выключите терминал с установленным на графике этим Вашим индикатором и запустите снова.

Так эта графика

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

 
Konstantin Nikitin:

Так эта графика

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

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

у меня выдает результат:

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
А Ваш код при загрузке никаких комментариев не показывает.
 
Alexey Kozitsyn:

у меня выдает результат:

А Ваш код при загрузке никаких комментариев не показывает.

Ну тут возможны варианты. У мня бывает сервер отключают на тех.обслуживание в воскресенье, и то не надолго. Это может быть одной из причин того что отсутствует связь.
Вторая вполне вероятно в том что терминал не успевает связаться с сервером до запуска индикатора.
У меня коннектится сразу.

 
Konstantin Nikitin:

Ну тут возможны варианты. У мня бывает сервер отключают на тех.обслуживание в воскресенье, и то не надолго. Это может быть одной из причин того что отсутствует связь.
Вторая вполне вероятно в том что терминал не успевает связаться с сервером до запуска индикатора.
У меня коннектится сразу.

Дак тогда сделайте проще: сейчас загрузите мой индикатор со своими правками на чарт. Выключите терминал. Включите в понедельник и посмотрите результат. Дальнейшая дискуссия бесполезна.

Причина обращения: