Errori, bug, domande - pagina 2445

 
fxsaber:

No, è ex5 che ottiene l'hash in opt. Per questo motivo, la ricompilazione resetta la cache del tester.

Allora gli sviluppatori non ti aiuteranno, scrivi il tuo analizzatore di codice.

 
fxsaber:

No, è l'hash di ex5 che va in opt. Questo è il motivo per cui la ricompilazione resetta la cache del tester.

Non esattamente.

Non ogni ricompilazione di Expert Advisor resetta la cache del tester.

Se l'Expert Advisor ha componenti dipendenti: librerie, indicatori personalizzati e/o dll, gli hash di questi componenti sono mescolati con l'hash dell'Expert Advisor.

Come viene calcolato l'hash dell'EA e dove viene memorizzato nell'EA è uno dei segreti tecnologici.

Ecco perché ti ho detto subito: "No".

 
fxsaber:

infatti:

  1. mettiamo il file mql in un array uchar
  2. cancellare i commenti //... и /* ... */
  3. rimuovere tutti gli spazi, le tabulazioni, i feed di linea, anche tutte le parentesi e gli apici
  4. da ciò che è rimasto leggere l'hash

La prima approssimazione funzionerà bene.

Naturalmente, se cambiate il nome della variabile (funzione) o aggiungete una nuova variabile inutilizzata, cambiate l'ordine, ecc. Controllare queste cose è già mega complicato. È come scrivere il proprio linker.

 
Slava:

Come viene considerato l'hash dell'EA, dove viene memorizzato nell'EA, è uno dei segreti tecnologici.

Ecco perché ti ho detto subito: "No".

Il punto è che non c'era nessuna richiesta di dare un hash MD5. Avete bisogno di qualsiasi hash del codice nativo. Per esempio, la somma di ogni terzo byte.

Se questa somma è diversa, allora con un'enorme probabilità, l'Expert Advisor (logica - codice nativo) è cambiato.


Cioè, molto semplicemente! Sfortunatamente, al momento non esiste un tale meccanismo.

 
Nikolai Semko:

Controllare queste cose è già mega complicato. È come scrivere il proprio linker.

Ecco perché sto parlando di una soluzione semplice.

 

Gli sviluppatori hanno qualcosa da dire su questo argomento?

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

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

Ecco perché sto parlando di una soluzione semplice.

Allora avete bisogno di un ragionamento competente per la MQ.
A cosa serve? Come e in quali casi può migliorare le capacità di mql? E non solo per soddisfare un capriccio personale.
Personalmente non mi è chiaro al momento perché il programma debba sapere che è stato cambiato. In quali compiti può essere utile? Se è addirittura necessario per qualcosa, allora ottenere l'hash da mql-code dopo aver cancellato il "superfluo" è abbastanza buono. E ci vogliono davvero non più di 20 righe di codice.

Per di più, anche se MQ andrà avanti e darà un tale hash per uso pubblico, cambia ancora un tale hash non garantirà che la logica sia stata cambiata. Per esempio quando si cambia la sequenza di qualcosa.

 

Aggiornato accidentalmente - non funziona di nuovo - errore di compilazione:

#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
}

Prima andava bene (build 1961)

 

Anche qui - ora (build 2025) c'è un errore:

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

E prima (costruzione 1961) andava bene

 

Aiutatemi a risolvere questo problema: come posso far trasmettere i caratteri normali al posto di quelli attuali?


Motivazione: