Erros, bugs, perguntas - página 2445

 
fxsaber:

Não, é o ex5 que fica com o haxixe em opção. Por esta razão, a recompilação restabelece a cache do testador.

Então os programadores não ajudarão, escrevam o vosso próprio analisador de código.

 
fxsaber:

Não, é o haxixe do ex5 que entra em opt. Esta é a razão pela qual a recompilação restabelece a cache do testador.

Não exactamente.

Nem todas as recompilações do Expert Advisor restabelecem a cache do testador.

Se o Expert Advisor tiver componentes dependentes: bibliotecas, indicadores personalizados, e/ou dll, hashes desses componentes são misturados com o hash do Expert Advisor.

Como o hash da EA é calculado e onde é armazenado na EA é um dos segredos tecnológicos.

Foi por isso que lhe disse imediatamente: "Não".

 
fxsaber:

de facto:

  1. colocamos o ficheiro mql numa matriz uchar
  2. apagar comentários ///... и /* ... */
  3. remover todos os espaços, separadores, linhas de alimentação, mesmo todos os parênteses e aspas
  4. do que resta ler o haxixe

A primeira aproximação vai funcionar bem.

Claro que, se alterar o nome da variável (função) ou adicionar uma nova variável não utilizada, alterar a ordem, etc., o hash irá mudar, embora a lógica não o seja. Controlar estas coisas já é mega complicado. É como escrever o seu próprio linker.

 
Slava:

Como o hash da EA é considerado, onde é armazenado na EA, é um dos segredos tecnológicos.

Foi por isso que lhe disse imediatamente: "Não".

A questão é que não houve nenhum pedido para dar um hash MD5. É necessário qualquer hash do código nativo. Por exemplo, a soma de cada três bytes.

Se esta soma for diferente, então com uma enorme probabilidade, o Expert Advisor (lógica - código nativo) mudou.


Isto é, muito simplesmente! Infelizmente, não existe, de momento, nenhum mecanismo deste tipo.

 
Nikolai Semko:

Controlar estas coisas já é mega complicado. É como escrever o seu próprio linker.

É por isso que estou a falar de uma solução simples.

 

Os criadores têm alguma coisa a dizer sobre este tópico?

https://smart-lab.ru/blog/535490.php

Черный вторник для одного трейдера в Открытии
Черный вторник для одного трейдера в Открытии
  • smart-lab.ru
Привет коллегам по цеху. Поднимите пожалуйста пост в топ, если не затруднит. Случилась одна неожиданная история, как говорится прилетело откуда не ждал. Сегодня ночью на NLMK-9.19 некто, пожелавший остаться неизвестным (на данный момент), слил или перелил 420000 рублей по четырем маркет сделкам 100,35,20,10 контрактов на счете в Открытии...
 
fxsaber:

É por isso que estou a falar de uma solução simples.

Então é necessário um raciocínio competente para a MQ.
Para que serve? Como e em que casos pode melhorar as capacidades de mql? E não apenas para satisfazer um capricho pessoal.
Não está claro para mim pessoalmente, neste momento, porque é que o programa precisa de saber que foi alterado. Em que tarefas pode ser útil? Se for mesmo necessário para algo, então a obtenção de hash a partir de código mql depois de eliminar "supérfluo" é suficientemente bom. E não são realmente necessárias mais de 20 linhas de código.

Mais ainda, mesmo que o MQ vá junto e dê um tal haxixe para uso público, ele ainda assim muda tal haxixe não garante que a lógica tenha sido alterada. Por exemplo, quando se muda a sequência de algo.

 

Acidentalmente actualizado - não está a funcionar novamente - erro de compilação:

#define  MACRO1
#define  MACRO2(x, y)    y
#define  MACRO3          MACRO2(&, MACRO1)
class A {};
void f( A* ) { Print( 1 ); }
void f( A& ) { Print( 2 ); }
void OnStart()
{
        A a;
        f( MACRO3 a ); //Error: '&' - operand expected
}

Estava bem antes (construção 1961)

 

Aqui também - agora (construir 2025) há um erro:

#define  MACRO1( x )
#define  MACRO2          MACRO1( y ) void
#import "any.dll"
        MACRO2 f(); //Error: '(' - expressions are not allowed on a global scope
#import

E antes (construção de 1961) estava bem

 

Ajude-me a resolver este problema. Como posso conseguir que caracteres normais sejam transmitidos em vez dos caracteres actuais?


Razão: