Errori, bug, domande - pagina 2742

 
fxsaber:
Quali bandiere e insidie ci possono essere se da un programma MQL qualcosa deve essere aggiunto al file (RAM-drive) tutto il tempo, e dagli altri (e un altro terminale) per leggere dallo stesso si leggono tutti questi dati aggiunti?

La sicurezza dei dati dovrebbe essere garantita, ma credo che ci siano almeno 2 problemi:

- nessuna sincronizzazione garantita durante l'accesso simultaneo, cioè è possibile rileggere dati già letti e allo stesso tempo impedire la scrittura di nuovi dati - collisioni

- non ci sono mezzi per rilevare e controllare una tale situazione

Soluzioni come al solito - semafori o scrivere il proprio gestore di scrittura

ZS: sembra che ci sia la possibilità di mettere in memoria SQLite incorporato, almeno lì per controllare lo stato del database può

 
Alexey Kozitsyn:

In Five, gli indicatori funzionano in modo simile, ma tutto è normale, senza congelamento.

No, in Five gli indicatori sono nel flusso degli strumenti.

 
Bug MT5 (build 2340) nessun accesso all'operator= predefinito dall'oggetto puntatore.

class A{
public:
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template<typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
      static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart(){      
   A a1;
   A a2;
   
   a2.data = 0x1;
   a1 = a2;
   printf("%d", (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2;
   a1.operator=(a2);                      //'operator=' - undeclared identifier 
   printf("%d", (a1.data));               
   
   
   a2.data = 0x3;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf("%d", (a1.data));               // Ok, 0x3
}
 

Si prega di risolvere il bug- il terminale MT va in crash quando si cerca di eseguire il debug di una funzione di struttura statica.
Anche nell'esempio di cui sopra, se prendete un punto di interruzione sulla linea "
p1 = p2;" il terminale andrà in crash.

 
Andrey Khatimlianskii:

No, in Five gli indicatori sono nel flusso degli strumenti.

Mi dispiace, sono confuso. Stavo solo pensando che questo è il comportamento in Quaternario (cioè come in Quaternario - nel flusso degli strumenti).

E dove è scritto il filo dell'interfaccia comune per gli indicatori MT4?

Aggiunto:

Indicatore

Tutti gli indicatori condividono le risorse del filo dell'interfaccia grafica

Un ciclo infinito in un indicatore fermerà il lavoro del terminale


Grazie per il suggerimento, l'ho trovato.

Allora il debugger non è stato pensato originariamente in MT4. Avrebbero proibito di chiamarlo almeno per gli indicatori.

 

Non so esattamente dove segnalare il bug... Cercherò di segnalarlo qui. L'essenza del problema su MT5: quando si usa il ridimensionamento del grafico tramite i pulsanti "+" o "-", il grafico non torna alla sua posizione normale (rientrato dal bordo destro dello schermo). Devo sempre restituirlo manualmente.

Su MT4 non c'è questo problema. Ho controllato con diversi broker...

Dopo aver premuto il "+"


Molto scomodo... Possiamo rimediare?

 
Alexey Kozitsyn:

Poi si scopre che il debugger non è stato originariamente progettato in MT4. Almeno avrebbero proibito di chiamarlo per gli indicatori.

Ma non c'era fin dall'inizio. Quindi non ci hanno pensato bene.

 
Roman Agafonkin:

Non so esattamente dove segnalare il bug... Cercherò di segnalarlo qui. L'essenza del problema su MT5: quando si usa il ridimensionamento del grafico tramite i pulsanti "+" o "-", il grafico non torna alla sua posizione normale (rientrato dal bordo destro dello schermo). Devo sempre restituirlo manualmente.

Su MT4 non c'è questo problema. Ho controllato con diversi broker...


Molto scomodo... Possiamo rimediare?

Quando si usa il ridimensionamento, l'indentazione ritorna al suo stato normale al prossimo tick in arrivo.

 
SEM:

Se viene usato il ridimensionamento, il rientro ritorna normale al prossimo tick in arrivo.

Questo è il punto, non lo fa... su mt4 va bene... su mt5 - ahimè, è glitchato...
OK, girerò un video e lo aggiungerò a questo thread.