Erros, bugs, perguntas - página 2442

 
fxsaber:

O que é que isto vai mudar?

Tanto quanto percebo o problema, o hash do executável não pode ser alterado porque é utilizado na optimização

É por isso que sugiro

int Array[] = {123};

colocá-lo numa biblioteca de ligação e recompilá-lo após uma execução de optimização bem sucedida - não verificou, mas parece que as bibliotecas mql estão ligadas em tempo de execução (não os recursos)

 
Igor Makanu:

Tanto quanto percebo o problema, não se pode alterar o haxixe do executável

Não se compreende o problema.

A EA deve gerar um nome de ficheiro diferente se o seu EX5 tiver mudado.

 
fxsaber:

Não se compreende a tarefa.

A EA deve formar um nome de ficheiro diferente, caso o seu EX5 tenha mudado.

Proponho mudar a biblioteca, se quiser 2 bibliotecas, ligue-as e use um nome diferente

este tipo de manipulação:

link_library.mq5 :

#import "lib.ex5"
int value_array();
#import
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Array = ",value_array());
   return(INIT_SUCCEEDED);
  }

biblioteca lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
em MQL a biblioteca é essencialmente pouco diferente de um ficheiro executável - não há restrições, pode também escrever-se num ficheiro e ... tudo pode como um MQL - programa
 
Igor Makanu:

Sugiro mudar a biblioteca, se quiser duas bibliotecas, ligue-as e use um nome diferente

Esta é a forma de manipular:

perito link_library.mq5 :

biblioteca lib.mq5 :

Na MQL, a biblioteca não é essencialmente muito diferente de um ficheiro executável - não há restrições, pode também escrever-se no ficheiro e ... tudo pode como um MQL - programa

Não percebo porque é que a tarefa não é clara: se a EA mudou - mudar o nome do ficheiro.

 
fxsaber:

Não percebo porque é que a tarefa não é clara: se a EA mudou - alterar o nome do ficheiro.

Não compreendo o problema de todo.
Incluir como recurso o ficheiro de origem do próprio Expert Advisor .mq5 e retirar dele o haxixe.

 
Comentários não relacionados com este tópico foram movidos para"Quaisquer perguntas de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos".
 
Sergey Dzyublik:

Não compreendo o problema de todo.
Incluir como recurso a fonte do próprio ficheiro .mq5 do Expert Advisor e retirar o hash do mesmo.

Portanto, não haverá acesso (bytes para calcular o hash) ao EX5 activado.

 
fxsaber:

Portanto, não haverá acesso (bytes para calcular o hash) ao EX5 activado.

Tudo funciona:

#resource "\\Experts\\Advisors\\ExpertMACD.ex5" as uchar ex5_data[];


O que é que o ex5 tem a ver com isto se estiver a falar de alterações de código que são melhor seguidas por .mq5?
É como se não compreendesse aquilo de que precisa em última análise.
 
Sergey Dzyublik:

O que é que o ex5 tem a ver com isto se estiver a falar de alterações de código que são melhor seguidas por .mq5?

Parece que no final não se compreende o que se quer.

Bem, eu escrevi-o, como posso entrar em mais detalhes?

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Insectos, insectos, perguntas

fxsaber, 2019.04.23 06:15

Eu tenho esta EA.

void OnDeinit( const int )
{
  int Array[] = {123};
  
  FileSave((string)MQLInfoInteger(MQL_PROGRAM_HASH), Array);
}


Quando eu faço um passe, escreve um ficheiro com o mesmo nome. Isto é correcto.


Depois recompilei escrevendo o número 456 em vez de 123.

Depois disso, cada passe escreverá o correspondente e o mesmo ficheiro, mas com um nome diferente.


Este é o tipo de funcionalidade que precisamos de implementar de alguma forma. Ou seja, se EX5 for alterado, os nomes de ficheiro que criar também mudarão.


SZY Usando __DATETIME__ macro não funcionaria.


Tenho um mq5 que cria um ficheiro com Nome1. Eu mudo algum número em mq5. O nome2 deve ser gerado. Eu mudo outra coisa em código - Nome3. E assim por diante.

 
fxsaber:

Bem, já o escrevi, como posso ser mais específico?


Tenho mq5, que cria um ficheiro com Nome1. Eu mudo algum número em mq5. Deve ser gerado Nome2. Eu mudo outra coisa em código - Nome3. E assim por diante.

Ligar o código fonte em formato .mq5 como um recurso e ler o hash a partir do conteúdo do código fonte.
Se alterar o código-fonte, a compilação puxará automaticamente o novo código-fonte como um recurso e calculará um novo hash.
O que é tão difícil?