Erros, bugs, perguntas - página 320

 
stringo:
O código é fundamentalmente diferente.

Uau... Estou chocado...

Pode colocar qualquer fragmento de código simples x32 e x64 para comparação? Só para satisfazer a sua curiosidade por assim dizer...

 
KffAlex:


Caríssimos Senhores! Esta é a terceira vez que me deparo com este problema. A criação de uma biblioteca externa sob Windows7 x64 leva a certos milagres:


Desculpem o atraso. Respondeu-lhe em privado.

Por favor anexar o código fonte. Se possível, por favor, faça-o através de servicedesk. Isto irá minimizar a probabilidade de tais atrasos.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
AlexSTAL:

Uau... Estou chocado...

Pode apresentar um simples fragmento de código para comparação de x32 e x64? Para acalmar a sua curiosidade, por assim dizer...

Não posso dar-lhe o código de improviso - não tenho a característica em mãos.

As diferenças são as seguintes.

  • Os registos são de 64-bit - 32-bit. Correspondentemente, a aritmética de 64 bits cabe numa instrução (em 32 bits a divisão de dois inteiros de 64 bits é feita em 40 instruções de montagem)
  • Existem mais registos de 64 bits. De forma correspondente, o endereçamento dos registos é diferente.
  • A convenção de chamada é diferente. Por exemplo, em 64 bits, os 4 primeiros parâmetros de uma função são passados em registos
 
Devemos acrescentar tempo de optimização ao MT5. Foi em MT4 e seria a solução certa aqui)
 
Renat:

Os agentes locais ficam pendurados na memória com as suas caches levantadas durante mais 5 minutos depois de o teste ser interrompido, à espera de novas tarefas. Se ninguém os carregar em 5 minutos, são automaticamente descarregados com todos os recursos libertados.

Este mecanismo de espera permitiu aos agentes aumentar a velocidade de resposta em tarefas repetidas à custa de infra-estruturas prontas/elaboradas.

ps: trata-se de agentes locais. agentes remotos que funcionam como serviços não são descarregados, mas também libertam recursos após algum tempo de paragem.

Usando a construção 404. Estou a falar de problemas com agentes remotos. Mesmo após 10 horas de inactividade, a memória não está a ser libertada.

Mais alguns problemas:

1. quase constantemente ao executar um teste de estratégia, a primeira passagem em cada processador termina rapidamente e retorna resultados zero.

E se parar e reiniciar, estes zeros não são recalculados. Estou a executar o teste com um grande número de processadores e resultados 40-50 com zeros e sem oportunidade de recalcular estes dados.

Por vezes, um dos processadores muda para o reprocessador falhado e começa a devolver resultados zero algumas vezes por segundo. Mas se eu o parar, estes dados serão recalculados novamente (campo laranja na tabela).

3. Ao executar agentes remotos em 16 processadores, o Internet 1 megaplayer não permite um histórico de downloads tão rápido, e é óbvio que devido ao tempo de espera, todos os processadores falham. Se activar um processador de cada vez, este normalmente funciona. É possível utilizar o sistema com 16 processadores para descarregar o histórico para o primeiro processador e depois copiá-lo para outros processadores? Ou apenas aumentar o tempo de espera ao carregar o histórico.

 
a483483:

Usando a construção 404. Estou a falar de problemas com agentes remotos. Mesmo após 10 horas de tempo ocioso, a memória não está a ser libertada.

Mais alguns problemas:

1. quase constantemente ao executar testes de estratégia a primeira passagem em cada processador termina rapidamente e devolve resultados zero.

E se parar e reiniciar, estes zeros não são recalculados. Estou a executar o teste com um grande número de processadores e resultados 40-50 com zeros e sem oportunidade de recalcular estes dados.

Por vezes, um dos processadores muda para o reprocessador falhado e começa a devolver resultados zero algumas vezes por segundo. Mas se eu parar, estes dados serão recalculados de novo (campo laranja na tabela).

3. Ao executar agentes remotos em 16 processadores, o Internet 1 megaplayer não permite um histórico de downloads tão rápido, e é óbvio que devido ao tempo de espera, todos os processadores falham. Se activar um processador de cada vez, este normalmente funciona. É possível utilizar o sistema com 16 processadores para descarregar o histórico para o primeiro processador e depois copiá-lo para outros processadores? Ou apenas aumentar o tempo de espera ao carregar o histórico.


Necessita de registos de agentes, configurações, símbolo, servidor.

Pode EX5 perito, mas melhor, é claro, a fonte.

De preferência em servicedesk.

 
KffAlex:
Este problema não existe se as funções forem movidas para o corpo do programa, e no Windows XP este problema simplesmente não existe!!!
Parece ser uma questão de bitness (64/32), no Windows XP trabalha-se com menos de 32 bit, pelo que o erro não é reproduzido.
Por favor, crie um pedido para serviricedesk com o(s) ficheiro(s) EX5 do problema anexado(s).(a sua ligação ao Service Desk)
 

Ajuda, não consigo descobrir como comparar os dois números, já passaram 2 dias

(data hoje) > (data ontem)

          datetime bark[1];
          CopyTime(Symbol1,NULL,0,1,bark);
          if(bark[0]<=order)

encomenda - (data de ontem)

Ou não é de todo possível?

 

Escreveu isto:

       for (uint k=0; k<66; k++)
         {
          datetime order=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
          datetime bark[1];
          CopyTime(Symbol1,NULL,k,1,bark);
          if(bark[0]<=order)
            {

o testador está a ficar preso e é só isso

 
alexluek:

Escreveu isto:

Algo está em looping no testador e ponto final.

O tempo no futuro é mais longo que no passado, a sua peça de código não é ilustrativa, não é claro o que está a fazer no se bloco e o que quer dele...

Aqui está, na minha opinião, informação exaustiva sobre a comparação de tempos :)

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   datetime past=D'2010.12.1'; //Прошлое
   datetime future=D'2010.12.02'; //Будущее

   if(past<future)
     {
      Print(past," раньше чем: ",future);
     }

   datetime buffTime[1]; //Буфер для времени последнего бара
   CopyTime(_Symbol,_Period,0,1,buffTime); //Копируем время последнего бара

   if(buffTime[0]>past)
     {
      Print(past," раньше чем: ",buffTime[0]);
     }

  }
//+------------------------------------------------------------------+
Razão: