Erros, bugs, perguntas - página 427

 
uncleVic:

Obtém VAZIO_VALOR, uma vez que o devolvemos se o ficheiro não for aberto. Se for mais conveniente obter 0,0, devolver 0,0.

E eu preciso de devolver algo. A leitura de um ficheiro que não abriu não é boa.

Sobre erro aberto. Escreva-o desta forma:

Aqui está uma imagem de ecrã do provador. É o mesmo no terminal?


Sim no terminal é o mesmo e o erro É isto que diz:

O tamanho do ficheiro é de 20 mb, cerca de 2,5 milhões de valores.

logo no início do teste 20 vezes durante a abertura, teve êxito

No início do teste, cerca de 20 vezes quando abri o ficheiro conseguiu obter os valores que eu queria, então o erro 5004 continua a surgir - o ficheiro não pôde ser aberto,

Tentei com 2 mb de cerca de 400k valores - abre-se, mas ninguém quer mais, olhei para os dados

Gestor de tarefas, 2,5 gb de RAM é suficiente. (mais 500 mb grátis !)

 

O CODE POLTERGHEIST começou no meu computador, se antes não abriu um ficheiro de 20 mb.

neste momento há um teste com um ficheiro aberto de 38 mb. com 5,5 milhões de valores (dados de 2005),

mas desde 2001 - cerca de 10 mln valores e com um tamanho inferior a 65 mb, não abre. É interessante - e não é claro porquê?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
Infelizmente, nada mais ajudará com o cartão especificado. Se for um portátil, a situação é desesperada. Caso contrário, para 1000-1500 rublos, pode comprar uma placa gráfica decentemente poderosa que eliminará todos os problemas de desempenho.


Então diz-me mt4 \t5 através de DirectX 2D acelerações ou o que ... ?


quais dos parâmetros acima são importantes para a aceleração gráfica vectorial ... ou todos ?

há outra questão ... controladores para HD2000 incorporados no processador, oficialmente não suportam Windows Server 2008 r2 SP1 64bit, -

mas apenas vista e 7ka 64 bit ....


esta compatibilidade incompleta pode ter algum efeito ... ?

(embora os condutores estejam em alta, o trabalho mesmo em jogos HD funciona...)


2. E as plataformas mt4/mt5 com compatibilidade de video-hardware 2D no Windows Server 2008 r2 SP1 64bit ?


Qual o melhor fabricante para escolher ... radionicos ... nVidia ?


qualquer teste de compatibilidade de velocidade e adaptador para mt4/mt5 feito .... ?


obrigado.

 
Im_hungry:

Sim no terminal o mesmo e o erro Isto é o que diz:

Tamanho do ficheiro 20 mb, cerca de 2,5 milhões de valores

No início do teste, cerca de 20 vezes durante a abertura foi possível

No início do teste, a abertura do ficheiro cerca de 20 vezes foi bem sucedida, depois o erro 5004 continua a surgir - o ficheiro não pôde ser aberto,

Tentei com 2 mb. cerca de 400 mil valores - abre, mas não abre maior, olhei para os dados

Task manager, 2,5 gb de RAM é suficiente (mais 500 mb grátis ! (mais 500 mb grátis !)

Não li muito, mas o texto destacado chamou-me a atenção. Está a fechar o ficheiro?

Lida correctamente com o seu descritor?

 
AlexSTAL:

Não li muito, mas o texto destacado chamou-me a atenção. Está a fechar o ficheiro?

Em geral, manusear correctamente o seu descritor?

A lógica (a julgar pelos códigos dados) é quase correcta. Excepto pelo facto de ler e escrever depois de verificar a pega (e depois fecha o ficheiro também).

Penso que o problema aqui é diferente:

1. o indicador em cada carrapato abre o ficheiro, escreve os dados, fecha o ficheiro.

2. O Conselheiro Especialista (penso que está em todas as marcas) abre o ficheiro, lê os dados, fecha o ficheiro.

Como acontece em fluxos diferentes, quanto maior for o tamanho do ficheiro, mais provável é que o ficheiro aberto seja aberto pelo indicador. E uma vez que a bandeira abertaFILE_SHARE_READ não é utilizada, há consequências.

Na minha opinião, o tratamento do problema pode ser o seguinte:

1) Abrir o ficheiro (tanto no indicador como no Expert Advisor) no OnInit com a bandeira FILE_SHARE_READ.

2. Chamar FileFlush(handle) no indicador após a escrita .

3. Fechar o ficheiro no OnDeinit.

Assim.


Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
tester_el_pro:


Então diz-me mt4 \t5 através de DirectX 2D acelerações ou o que ... ?


O terminal utiliza o GDI normal do Windows, que necessita de um acelerador 2D.

Ao escolher um cartão, obtenha qualquer 3D externo, mesmo o nível de preço mais baixo - será suficiente.
E não terá de comparar os pontos básicos de capacidade da placa de vídeo.

 
uncleVic:

A lógica (a julgar pelos códigos dados) é quase correcta. Excepto pelo facto de ler e escrever depois de verificar a pega (e depois fecha o ficheiro também).

Na minha opinião, uma cura para o problema poderia ser esta:

1. abrir o ficheiro (tanto no indicador como no Expert Advisor) no OnInit com a bandeira FILE_SHARE_READ.

2. Chamar FileFlush(handle) no indicador após a escrita .

3. Fechar o ficheiro no OnDeinit.

Assim.


Obrigado por isto no futuro quando o utilizarmos em tempo real

Usarei os vossos conselhos no futuro para trabalhar com o ficheiro de Conselheiro Especialista e indicador.

 
AlexSTAL:

Não li muito, mas o texto destacado chamou-me a atenção. Fecha o ficheiro?

Está a manusear o descritor correctamente?

Sim, é claro - vê o ficheiro mas não o quer ler devido a erro aberto 5004
 
uncleVic:

A lógica (a julgar pelos códigos dados) é quase correcta. Excepto pelo facto de ler e escrever depois de verificar a pega (e depois fecha o ficheiro também).

Penso que o problema aqui é diferente:

1. o indicador em cada carrapato abre o ficheiro, escreve os dados, fecha o ficheiro.

2. O Conselheiro Especialista (penso que está em todas as marcas) abre o ficheiro, lê os dados, fecha o ficheiro.

Como acontece em fluxos diferentes, quanto maior for o tamanho do ficheiro, mais provável é que o ficheiro aberto seja aberto pelo indicador. E uma vez que a bandeira abertaFILE_SHARE_READ não é utilizada, há consequências.

Na minha opinião, o tratamento do problema pode ser o seguinte:

1) Abrir o ficheiro (tanto no indicador como no Expert Advisor) no OnInit com a bandeira FILE_SHARE_READ.

2. Chamar FileFlush(handle) no indicador após a escrita .

3. Fechar o ficheiro no OnDeinit.

Aproximadamente assim.



Lamento, o trabalho do indicador é diferente,

1. antes de testar no terminal, corro o indicador

2. poupa o tempo da barra e o seu valor de correlação em cada barra

3. coloquei o ficheiro na pasta de teste, onde deveria ser C:{Arquivos de Programas\i1}MetaTrader 5\i1}Agent-127.0.0.1-3000\MQL5\Files.

4. lanço um Expert Advisor, que trabalha abrindo bares - e desde 2005 lê todos os dados registados

Lê-se (38 Mb), mas desde 2002 não se lê (67 Mb)

 

Tentou gravar o mesmo na mesma ferramenta mas no mt4

transferi o ficheiro bin para a pasta de teste mt5 - nenhum dos ficheiros

não abre - erro 5004, em MT5 ainda abre alguma coisa.


i implementou o registo de dados no indicador MT4 (todos os dados são escritos correctamente) como se segue:

      Corr = GetCorrelation();
      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);
      Buffer[Pos] = NormalizeDouble(Corr,3);
//------
      datetime bar2 = iTime(Symbol1, 0, Pos);
      Print("Buffer[Pos]...",Buffer[Pos],"...bar2...",bar2);
      handle= FileOpen("kor.bin", FILE_BIN|FILE_READ|FILE_WRITE, ";");
      if(handle<1) Print("can't open file error-",GetLastError());
      if (handle>=1)
       {
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,bar2,DOUBLE_VALUE); 
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,Buffer[Pos],DOUBLE_VALUE); 
        FileClose(handle);
       }
//------
      CurrPos++;

Mas a leitura em mt5 por um EA permanece a mesma:

double proverka()
{
 if (FileIsExist("kor.bin",0)==true) Print("ФАЙЛ ОБНАРУЖЕН = ...");
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle < 0) Print("-----Неоткрывается :- Почему? Потому что произошла ошибка ",GetLastError());
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   //Print("1...kor=",kor,"N=",N,"file=",file,"New=",New);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     Print("2...ss=",ss);
     return (ss);
     break;
    }
   if (New < kor)
    {
     Print ("New=",New,"kor=",kor);
     return (0.0);
     break;
    }
  } 
 Print("ВСЕЕЕЕЕЕ",kor);
 FileClose(handle);
 return (kor);
}
//=

É possível que uma EA em mt5 abra um ficheiro criado em mt4 ?

Razão: