Erros, bugs, perguntas - página 2233

 
A100:

E não pode remover - porque é o código da EA ou quer compreender milhares de linhas do código de outras pessoas é irrelevante - o que resulta em apenas um atraso de tempo?

Realize a tarefa que lhe dei acima e informe o público sobre os resultados.

Porque devo repetir código???? errado Porque quereria utilizar algum ficheiro .ex desconhecido????

Se houver um ficheiro de abertura de erro com as bandeiras FILE_SHARE_READ|FILE_SHARE_WRITE seja gentil e reproduza estes problemas sem erros estranhos, criados artificialmente.

 
Alexey Viktorov:

Porque quereria eu repetir um código errado???? Porque iria querer encadear algum ficheiro .eh desconhecido a????

Se houver um erro ao abrir um ficheiro com as bandeiras FILE_SHARE_READ|FILE_SHARE_WRITE, por favor reproduza estes problemas sem erros estranhos, criados artificialmente.

O que o leva a pensar que o código está errado?

Posso utilizar qualquer forma de relatório de erro, e o ficheiro .ex não é para si, mas para os programadores. Se quiser ajudar com uma simples reprodução do erro pode usar o meu conselho, se não quiser ajudar, não incomode os outros com mensagens vazias e zangadas

 
A100:

O que o leva a pensar que o código está errado?

A forma como posso relatar o erro é a forma como o faço. Não escrevi o ficheiro .ex para si, mas para os programadores. Se quiser ajudar com a simples reprodução do erro pode usar o meu conselho, se não quiser ajudar, não incomode os outros com mensagens vazias e zangadas

Os seus cargos são mais como maliciosos. O meu pedido

Fórum sobre negociação, sistemas de negociação automatizados e testador de estratégias

Insectos, insectos, perguntas

Alexey Viktorov, 2018.07.23 14:16

Estranho que não ajude. Só consegui obter 5004 sem a bandeira FILE_SHARE_WRITE

O ficheiro no consultor de escrita abre no OnInit e fecha apenas no OnDeinit. Ao mesmo tempo, no conselheiro de leitura, o ficheiro lê e imprime sem qualquer problema.

Seria bom esclarecer como se escreve o ficheiro a fim de replicar as suas acções com maior precisão.


Não foi dirigido a si, mas o senhor ficou preso e escorregou em postes de há dois anos atrás, aos quais os criadores não prestaram atenção, na minha opinião, devido a um erro criado artificialmente.

E repito: Porque devo reproduzir um erro criado artificialmente???????????

 
Alexey Viktorov:

E mais uma vez: Porque devo reproduzir um erro criado artificialmente???????????

Explicar o que é um erro criado artificialmente? Não compreendo esta frase
 
TheXpert:

Tente depois de abrir um ficheiro para escrever (parte 1 do código) para o visualizar com o visualizador do Windows. pelo menos ficará claro qual é o problema.

Se abrir - o segundo, se não abrir - o primeiro.

O Windows irá abrir o primeiro ficheiro. Vejo ao nível do sistema que as bandeiras de leitura, escrita, partilha_leitura são colocadas. Mas no terminal, abrir o mesmo ficheiro para leitura produz 5004. O primeiro Expert Advisor escreve para o ficheiro, ou seja, não se abre apenas com algumas bandeiras por diversão.

Quando tiver tempo, vou tentar fazer um guião para demonstração. Mas a julgar pelo facto de este não ser o primeiro que escrevi sobre o assunto e de não haver desenvolvimentos relacionados com ficheiros no código, a curvatura está presente.

PS. Talvez, quem já escreveu em SD? Quais são as respostas?

 
A100:
A rigor, o erro é causado pela chamada simultânea deFileOpen( nome do ficheiro ) de diferentes Expert Advisors (as bandeiras não importam)
a bandeira FILE_SHARE_READ significa na realidade acesso de leitura não exclusivo, pelo menos no original winapi
 
Stanislav Korotky:

O Windows abre o primeiro ficheiro.

O segundo Cabo quer acesso exclusivo de leitura ou outro acesso não autorizado, apesar da bandeira.
 
A100:
Explicar o que é um erro criado artificialmente? Não compreendo esta frase.

Não há subtexto no que estou a dizer. É preciso compreender o que é couro artificial. Referir-se a esse entendimento.

Mostrar código sem manipulação adicional com modelos e outros tambores, que devolve erro ERR_CANNOT_OPEN_FILE com bandeiras FILE_SHARE_READ_FILE_SHARE_WRITE

Se o erro não for reproduzido sem pandeiros, significa que o erro foi causado durante os pandeiros...

Vou repetir a sequência de acções:

EA 1:

No OnInit é aberto um ficheiro binário para escrita.

Cada minuto escreve a abertura da barra actual para o ficheiro.

O ficheiro é fechado SOMENTE em OnDeinit.

Consultor Especialista 2:

Cada minuto abre este ficheiro binário.

Lê a última entrada, imprime-a.

Fecha o ficheiro.

E repete isto a cada minuto.


Não há erros de abertura de ficheiros.

 

Neste script simples, correr primeiro com escrita = verdadeiro e depois noutro gráfico com escrita = falso, recebo um erro.

#property script_show_inputs

input bool writing = false;

int OnStart()
{
  int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:0));
  if(handle == INVALID_HANDLE)
  {
    Print("FileOpen failed: ", GetLastError());
    return INIT_FAILED;
  }
  
  if(writing) FileWriteInteger(handle, 0);
  
  Print("handle=", handle);
  
  while(!IsStopped())
  {
    Sleep(1000);
  }

  Print("Closing");
  FileClose(handle);

  return 0;
}
 
Andrey Khatimlianskii:

Tanto quanto me lembro, estabelece um intervalo de tempo após o qual o preço é considerado desesperadamente desactualizado. Por outras palavras, se não mudou durante 3 minutos, não se pode abrir.

Escrevi um guião de teste para este caso. NoPrice foi apanhado 64 segundos após o último tick. Talvez um timeout de um minuto valha de facto a pena. Vou ter de fazer uma pequena pesquisa...