Erros, bugs, perguntas - página 659

 
antt:
Qual o ponto de acesso?
Chipre.
 

A situação é a seguinte. Por exemplo, há vagas em aberto na sexta-feira. Estabelecemos Stop Loss e Take Profit. Sem esperar pelo fim da sessão de negociação, deixamos estas posições, desactivamos a comunicação, e pomos o computador a dormir (modo Hibernate). Ligamos no dia seguinte. A ligação à Internet é estabelecida. Existe uma ligação ao servidor. Sábado. O mercado está fechado. Podemos ver que as posições foram encerradas, algumas por Stop Loss e outras por Take Profit. Estes negócios podem ser vistos no separador História do terminal comercial:

Pedimos a história dos três últimos ofícios:

   datetime Start=0;
//---
   if(!HistorySelect(Start,TimeCurrent())) // Загрузим историю сделок
     {
      Print("Ошибка при загрузке истории!"); return;
     }
   else
     {
      ulong ticket=0;
      datetime time=0;
      string symbol="",comment="";
      //---
      int total_deals=HistoryDealsTotal();
      //---
      for(int d=total_deals-1; d>=total_deals-3; d--)
        {
         if((ticket=HistoryDealGetTicket(d))>0) // Если сделка выбрана
           {
            symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
            comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
            //---
            Print("<-- symbol: ",symbol,"; comment: ",comment,"; time: ",time," -->");
           }
        }
     }

E vemos que a história não coincide. Ou seja, podemos vê-lo no terminal, mas não o podemos obter de forma programática.

//---

É um insecto ou assim foi concebido e agora estes negócios só podem ser obtidos programmaticamente quando o mercado abre?

P.S. Eu também tentei desta forma, não ajuda:

#define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }
 

tol64:

...

P.S. Eu também tentei isso, não funciona:

Encontrei uma saída. Na janela do Market Watch pode ver a hora de saída. Ou seja, a última vez que houve uma ligação ao servidor e o tick chegou (última vez que o tick chegou):

Ou seja, no meu caso 18:43:30.

Acontece que ainda usando esta função

#define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }

...pode resolver a situação, mas tem de fazer o pedido com uma margem significativa. Ou pode passar sem esta muleta e esquecê-la para sempre e usar a função TimeLocal() ao fazer pedidos de história, se for usada em tempo real. No testador, utilizar TimeCurrent() ou TimeCurrentAhead(). Algo parecido com isto:

datetime ChoiceTimeFunction()
  {
   if(NotTest())
     { return(TimeLocal()); }
   else
     { return(TimeCurrent()+Milliseconds_Ahead); }
//---
   return(TimeLocal());
  }

Então este ponto deve ser abordado na ajuda ou algo assim...

 

É possível recuperar os gráficos apagados no terminal:

Aberto apagado

Abrir um submenu de gráficos apagados para restaurar. Os gráficos apagados são guardados se "Guardar janelas apagadas para reabrir" for verificado nas definições do terminal. Todos os modelos de gráficos eliminados são guardados nodirectório/Profiles/Deleted. Quando este comando é executado, estes modelos são acedidos e o gráfico correspondente é aberto. Qualquer um dos modelos de gráficos apagados pode ser apagado usando o comando correspondente neste menu.

A situação é a seguinte. O Expert Advisor está pendurado no gráfico e os seus painéis informativos são exibidos. Na função OnDeinit(), especifico que se o gráfico for fechado, os painéis de informação devem ser eliminados, a fim de guardar o modelo para restauração sem objectos. Fecho a tabela. Usando a opção Abrir Apagado, restauro-a, mas é restaurada com objectos, e incorrectamente (alguns estão lá, alguns não estão). O Expert Advisor restaura tudo após a inicialização. Deixa um resíduo desagradável e uma sensação de trabalho mal feito. Eu estimo-o do ponto de vista dos utilizadores do Expert Advisor, não do ponto de vista do terminal. Em quaisquer outros eventos de desinicialização, tudo funciona correctamente. Compreendo que o salvamento do modelo acontece antes da desinicialização, porque durante a desinicialização os objectos ainda são apagados, mas têm tempo para serem salvos no modelo.

 

O problema é o seguinte...

Tanto quanto sei, o terminal "nota" o histórico adicional no servidor e uma espécie de "lacunas" na história local e começa a bombeá-lo freneticamente para preencher automaticamente essas lacunas. Tudo isto é óptimo, é claro, mas...

Existe um fenómeno tal como os prazos atípicos, cuja história parece não ser descarregada de qualquer lugar, mas automaticamente construída "na mente" pelo terminal. E aqui está o que tenho notado. Se estiver tudo bem em anotar as "lacunas" no histórico e no descarregamento automático, a situação com reconstrução do histórico construído e depois danificado (seja no disco ou na memória) de prazos não-padronizados está realmente fora de questão. Bem, o meu terminal descarregou toda a história, depois saltei por cima de todos os prazos e descobri que alguém roubou todo um segmento da história recente sobre H2 e H3 que o terminal não descarregou nem reconstruiu localmente. Foi ajudado a descarregar o terminal e apagar manualmente ficheiros de prazos apropriados de C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache com mais lançamento do terminal, mover paraH2 e H3 e esperar até que reconstrua correctamente a sua história a partir do zero.

Obviamente, gostaríamos de ter um terminal mais inteligente que "sentisse" estes segmentos amargurados a qualquer momento, incluindo os não-padronizados, e tentasse imediatamente preenchê-los.

---------------

Adenda: embora, para ser honesto, o terminal não veja absolutamente nada. Há um ano que estou sentado com uma curva de história de minutos, que na verdade começa com MetaQuotes de 1999, enquanto que o meu calendário foi em 2009 por alguma razão - e porquê? Onde estão esses descarregamentos automáticos? Eu tinha espaço suficiente para os descarregar, mas não houve descarregamentos até hoje, até que desinstalei e reinstalei tudo (fiz o mesmo antes, mas não teve efeito). Claro que não se trata sequer de retomar, trata-se de descarregar toda a história a partir do zero pelo terminal. Bem, pelo menos isso é o pão e a manteiga.

A este respeito, quero dar a todos os programadores MQL, que depuram os seus programas e confiam no consumo dos seus produtos de software por outros utilizadores, um aviso importante: esteja alerta para a disponibilidade do histórico, para o qual o seu produto é calculado: durante os testes com o histórico incompleto ou substituído pelo histórico de tempo mais elevado, a velocidade de processamento será boa, mas pode acontecer que você ou os seus utilizadores de programas rugam a partir de uma carga de CPU a 100% nos computadores modernos e de mensagens de erro "intermináveis".

 

'f0_34' - expressão de comparação esperada

Pode dizer-me o que significa este aviso?

 

Mais uma vez, um erro deste tipo veio à tona:

A área problemática foi identificada. Descrição detalhada no Service Desk.

//---

P.S. Completou um pedido existente, com um problema semelhante uma vez resolvido. Após algum tempo, vi uma notificação perto do meu perfil. Entrei no Service Desk e o pedido desapareceu completamente. Tenho de fazer tudo de novo? )))

 
tol64:

Mais uma vez, um erro deste tipo veio à tona:

A área problemática foi identificada. Descrição detalhada no Service Desk.

//---

P.S. Completou um pedido existente, com um problema semelhante uma vez resolvido. Após algum tempo, vi uma notificação perto do meu perfil. Entrei no Service Desk e o pedido desapareceu completamente. Tenho de fazer tudo de novo? )))

O pedido e os comentários estão em vigor, mas por alguma razão não é visível no perfil.

Iremos sem dúvida tratar do assunto.

 
MetaQuotes:

O pedido, juntamente com os comentários, está em vigor, mas por alguma razão não são visíveis no perfil.

Não nos esqueçamos de o investigar.

Por favor, resolvam-no, pois algumas das minhas candidaturas também já foram embora por completo. nem em aberto nem em fechado.
 
MetaQuotes:

O pedido juntamente com os comentários estão em vigor, mas por alguma razão não são visíveis no perfil.

Não nos esqueçamos de o investigar.

Obrigado. Aguardo com expectativa, pois há esclarecimentos. O problema não é apenas começar a aparecer onde eu indiquei. A área de ocorrência é agora ubíqua.