[Erro em obter o tempo do TF sênior no temporizador! - página 13

 
Alexey Kozitsyn:

Leia o ponto 1.

Para obter o tempo de abertura da barra, o temporizador não tem qualquer utilidade, e quaisquer outros dados, se não de outro símbolo diferente do gráfico. Se não estiver relacionado a um símbolo diferente do gráfico atual, mas a outro TF do símbolo atual, é interessante. Ele não será atualizado até que os novos dados cheguem. Mas todo o seu trabalho é baseado no símbolo atual. Portanto, não se preocupe com o temporizador. O resto como tal é mastigado várias vezes. O tema entrou em círculo.

 
Konstantin Nikitin:

Para obter o tempo de abertura da barra, o temporizador não tem qualquer utilidade, e quaisquer outros dados, se não de outro símbolo diferente do gráfico. Se não estiver relacionado a um símbolo diferente do gráfico atual, mas a outro TF do símbolo atual, é interessante verificá-lo a cada milissegundo. Ele não será atualizado até que os novos dados cheguem. Mas todo o seu trabalho é baseado no símbolo atual. Portanto, não se preocupe com o temporizador. O resto como tal é mastigado várias vezes. O tema entrou em um círculo.

Companheiro, você obviamente não entende o que está acontecendo aqui. Não se trata mais do temporizador, esqueça-o. O temporizador se refere ao meu verdadeiro problema. O problema agora é o erro nos dados que estão sendo recebidos. O ponto 1, que aconselho a leitura, diz que na presença de IsConnected(), o indicador se conectará ao servidor somente no segundo evento OnCalculate(). Portanto, seu conselho anterior é inútil.

 
Alexey Kozitsyn:

Companheiro, você claramente não entende o que está acontecendo aqui. Não se trata mais do temporizador, esqueça-o. O cronômetro está relacionado ao meu verdadeiro problema. O problema agora é o erro nos dados que estão sendo recebidos. O ponto 1, que aconselho a leitura, diz que na presença de IsConnected(), o indicador se conectará ao servidor somente no segundo evento OnCalculate(). Portanto, seu conselho anterior é inútil.

Você já verificou experimentalmente? Aconselho a verificação. Portanto, reinicie o terminal com o teste.

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);
}

E o que você vê?

No primeiro passe, se houver uma conexão com o servidor, tudo funciona.

 
Konstantin Nikitin:

Você já o testou empiricamente? Sugiro que o faça. Portanto, reinicie o terminal com o teste.

E o que você vê?

No primeiro passe, se houver uma conexão com o servidor, tudo funciona.

Quem em seu perfeito juízo e testes mentais quando o mercado não está funcionando?

E sim, eu o testei empiricamente, que é o que eu escrevi sobre isso.

 
Alexey Kozitsyn:

Quem em seu perfeito juízo e testes mentais quando o mercado não está funcionando?

E sim, eu o testei experimentalmente, que é o que escrevi sobre isso.

Isto não tem nada a ver com o fato de o mercado estar funcionando ou não. O indicador já funcionou e sua análise já começou. O resultado do primeiro passe está no comentário. Você disse

Alexey Kozitsyn:

Você deve lê-lo - trata-se do fato de que se IsConnected() estiver presente, o indicador se conectará ao servidor somente no segundo evento OnCalculate(). Portanto, seu conselho anterior é inútil.

 
Konstantin Nikitin:

O que tem a ver com o fato de o mercado estar funcionando ou não? O indicador já começou, a análise está em andamento. O resultado do primeiro passe está no comentário. Você disse.

Sim. Muito bem. Agora desligue o terminal com este indicador instalado na tabela e execute-o novamente.

 
Alexey Kozitsyn:

Yikes. Muito bem, então. Agora desligue o terminal com este seu indicador instalado na tabela e inicie-o novamente.

Então este quadro

foi feita apenas alguns minutos antes de ser publicada pela primeira vez. Ou seja, hoje. E foi depois que o terminal foi reiniciado.
A conexão com o servidor é estabelecida também no fim de semana. O mesmo saldo a ser verificado, pode obter os últimos dados, se foi desconectado antes do encerramento da sessão.

 
Konstantin Nikitin:

Então este gráfico

e foi feita apenas alguns minutos antes de ser publicada pela primeira vez. Ou seja, hoje. E foi depois que o terminal foi reiniciado.
A conexão com o servidor também é estabelecida no fim de semana. O mesmo saldo a ser verificado, pode obter os últimos dados, se foi desconectado antes do encerramento da sessão.

#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);
  }
//+------------------------------------------------------------------+

Estou obtendo um resultado:

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!
E seu código não mostra nenhum comentário ao carregar.
 
Alexey Kozitsyn:

Eu recebo um resultado:

E seu código não mostra nenhum comentário quando carregado.

Bem, é possível. Meu servidor às vezes desce para manutenção no domingo, mas não por muito tempo. Pode ser uma das razões para a falta de conexão.
Pode ser outra razão pela qual o terminal não pode se conectar ao servidor antes do início do indicador.
Meu terminal se conecta imediatamente.

 
Konstantin Nikitin:

Pode muito bem ser. Meu servidor pode estar desligado para manutenção no domingo, mas não vai ficar desligado por muito tempo. Pode ser uma das razões para a falta de conexão.
Pode ser outra razão pela qual o terminal não tem tempo para se conectar ao servidor antes do início do indicador.
Meu terminal se conecta imediatamente.

Então simplifique: carregue meu indicador com suas edições no gráfico agora. Desligue o terminal. Volte a ligar na segunda-feira e veja o resultado. Mais discussões são inúteis.