Erros, bugs, perguntas - página 1442

 
Yousufkhodja Sultonov:
Por favor diga-me como ultrapassar a situação quando o testador limita o número de posições em aberto a cem, apesar do facto de, nos parâmetros que especifico 1000?
Não pode, isto não é uma limitação do terminal mas sim do corretor, abrir uma conta demo com um corretor que dá mais de 100 ordens
 

Leia sobreCopyRates() atenciosamente:

Nota

1. Se o intervalo de dados solicitados estiver completamente fora dos dados disponíveis no servidor, a função retorna -1. Se os dados solicitados estiverem fora de TERMINAL_MAXBARS (quantidade máxima de barras no gráfico), a função também retornará -1.

2. Ao solicitar dados do indicador, se as séries de tempos solicitadas ainda não tiverem sido construídas ou precisarem de ser descarregadas do servidor, a função retornará -1 imediatamente, mas o próprio processo de descarregamento/construção será iniciado.

3. Ao solicitar os dados ao Expert Advisor ou um script, o descarregamento a partir do servidor será iniciado, se o terminal não tiver estes dados localmente, ou a construção das séries temporais necessárias começará, se os dados puderem ser construídos a partir do histórico local, mas ainda não estiverem prontos. A função devolverá a quantidade de dados que estará pronta quando o tempo limite expirar, mas o histórico continuará a ser descarregado, e da próxima vez que for feito um pedido semelhante, a função devolverá mais dados.

1. isto é correcto e lógico, antes de solicitar dados, deve verificar o número permitido de barras na janela.

2) Também está correcto; deve tentar receber os dados até que o terminal devolva a quantidade necessária, lembrando-se de verificar a ligação com o servidor. Não há dúvida sobre a qualidade dos dados recebidos aqui - os dados ou estão lá ou não.

3. aqui não está nada claro. Nunca se pode ter a certeza de que os dados recebidos estejam completos. E porque precisaria o utilizador de dados que não estão seguros da sua exaustividade? A prática mostra que nenhum truque (tentativas preliminares para obter dados a fim de inicializar o descarregamento a partir do servidor) não dá confiança de que o pedido obterá dados completos.

Penso que é mais prático tornar o comportamento das funções de recuperação de dados em Expert Advisors semelhante ao dos indicadores.

 
Joo Zepper:

Leia sobreCopyRates() atenciosamente:


3. e aqui não é de todo claro. Nunca se pode ter a certeza de que os dados recebidos estejam completos. E porque deveria o utilizador precisar de dados que estão incompletos? A prática mostra que nenhum truque (tentativas preliminares para obter dados para iniciar o descarregamento a partir do servidor) lhe dá a confiança de que o pedido obterá dados completos.

Porque não pode ter a certeza? Usar a sérieInfoInteger(símbolo,período,SÉRIE_SYNCHRONIZED) para ter a certeza.

Continue a ler a documentação. Com a maior ponderação possível.

 
Slawa:

Porque não pode ter a certeza? Para ter a certeza, use SeriesInfoInteger(símbolo,período,SÉRIE_SYNCHRONIZED)

Continue a ler a documentação. Não seja menos atencioso.

Obrigado pela dica, mas já há muito tempo que uso esta bandeira. Existem outras formas mais fiáveis?

Estou a antecipar a sua próxima sugestão - para abrir a janela do gráfico do instrumento solicitado. E isto é feito, mas a totalidade dos dados não é garantida.

 
Joo Zepper:
Obrigado pela dica, mas verificar esta bandeira está em uso activo por mim há muito tempo. Existem outras formas mais fiáveis?

Qual é então o problema? Se esta bandeira for definida como verdadeira, os dados actuais são totalmente sincronizados. Podem estar incompletos porque o servidor tem mais dados do que você - a história vai mais fundo

Depois consulte o histórico em profundidade e verifique SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) contra a primeira data da sua acta local

 
Slawa:

Qual é então o problema? Se esta bandeira for definida para true, os dados actuais são totalmente sincronizados. Podem estar incompletos porque o servidor tem mais dados do que você - a história vai mais fundo

Depois consulte o histórico em profundidade e verifique SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) contra a primeira data da sua acta local

Mas isto é suicídio para o Conselheiro Especialista. Receberá terríveis atrasos. E não precisa, por regra, de uma história completa.

Penso sobre isto. No relatório de mercado, os dados mais recentes e se o terminal não puder fornecer a quantidade necessária de dados a pedido dentro dos limites do histórico do servidor e do número permitido de barras na janela, em tais casos, devolver -1, como nos indicadores. Ou se obtém dados ou -1, não há terceira opção.

 

Faço-o antes de solicitar dados:

for(int attempt = 0; attempt < 10; attempt++) 
  {
    bool flag = true; 
    for(int symb = 0; symb < SymbolCNT; symb++) 
    {
      if(!synched[symb]) 
      {
        // trial copying of price data
        int copied = CopyRates(symbsName[symb], smPeriod, startPosDataGet, barsReq, prices[symb].Data); 
        
        if(copied >= barsReq) 
        {
          if(idChart[symb] != -1) 
          {
            ChartClose(idChart[symb]); 
            idChart[symb] = -1;
          }
          synched[symb] = true;
        }
        else 
        {
          flag = false; 
          if(showAlert) 
            Alert(symbsName[symb] + ": requested/received " + (string)barsReq + "/" + (string)copied); 
          
          if(idChart[symb] == -1) 
          {
            idChart[symb] = ChartOpen(symbsName[symb], smPeriod); 
            ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true);
          }
        }
      }
    }
    if(!flag) 
      if(TerminalInfoInteger(TERMINAL_CONNECTED)) 
        Sleep(1000);
  }
  
  for(int symb = 0; symb < SymbolCNT; symb++) 
    if(idChart[symb] != -1) 
      ChartClose(idChart[symb]); 

Mas já durante as consultas directas, os dados vêm com buracos. Por vezes sem buracos. É disso que estou a falar - sem confiança nos dados recebidos.

 
Karputov Vladimir:

O vídeo inserido através do editor de mensagens não é guardado.

Versão Google Chrome 46.0.2490.86 m.

Internet Explorer 11.11.10586.0.

O erro será corrigido, obrigado pela mensagem.
 

Os indicadores regulares NÃO estão a funcionar após a actualização do sistema para Windows10. Não é simplesmente possível anexar aos gráficos. No editor, é apresentado um erro ao compilar

erro

 
Alexandr:
Os indicadores regulares NÃO estão a funcionar após a actualização do sistema para Windows10. Simplesmente não pode ser anexado aos gráficos. No editor, o erro https://i.gyazo.com/5dbea3b25ab9a45cf3a9449335c1f57f.png aparece ao compilar.
Provavelmente algo com direitos de acesso, verifique se as pastas dos terminais são graváveis, tente baixar o UAC ....