Errori, bug, domande - pagina 2612

 
Vladimir Simakov:
È completamente congelato, o l'EA si scarica dopo un po' di tempo? Se è la seconda, state cercando un loop.

Più interessante. Non si blocca in modalità debug. Ma in modalità completa, si attacca.

 
Ciao colleghi, qualcuno sa perché il terminale MT4 su Android non conta alcune posizioni chiuse in profitto, anche se sono visualizzate nella storia?

Forse è un bug?
 
fxsaber:

Più interessante. Non si blocca in modalità debug. Ma in modalità completa, è congelato.

Ho localizzato il problema.

#include <WinAPI\WinAPI.mqh>

#define  GA_ROOT           0x00000002

void OnDeinit( const int )
{
  static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
  
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
                                                                                        
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                             
    Handle = user32::GetDlgItem(Handle, ControlID[i]);

  ushort Str[6];
  user32::GetWindowTextW(Handle, Str, sizeof(Str) / sizeof(ushort)); // Freeze
}


Si esegue questo Expert Advisor su un grafico e poi lo si smonta a mano. Il terminale si blocca.

L'esecuzione dello stesso codice in qualsiasi altra funzione On non si blocca.

 
Improvvisamente c'è una cartella nella cartella Tester per un terzo agente (porta 3002), che non è mai esistito prima. Non ho cambiato nulla e non ho avviato il manager. Anche le cartelle degli altri due agenti (normali) hanno file freschi di oggi. Cosa può essere? Posso uccidere quello in più?
 
Stanislav Korotky:
Posso inchiodare quello in più?

Potresti uccidere l'intera cartella Tester, lasciando solo la cache.

 

Potete dirmi se questo è un bug o no?

struct A { int i; };

struct B : public A { int j; };

void OnStart()
{
  B b;
  
  DebugBreak();
}

Manca il campo i.

 

C'è un problema costante con il terminale:

1- Accendiamo i pannelli del disegno e del tempo. Metteteli in linea con quello principale.

2 - comprimere il terminale a metà dello schermo

3-aprire il terminale a tutto schermo e il disegno e le barre timeframe appaiono come una "seconda linea"! Così, un grande spazio dello schermo è occupato da un vuoto inutile!

Ma il terminale dovrebbe essere in grado di ricordare le loro posizioni e ripristinarle.

Inoltre, se si prende il primo di essi, non ne prenderà 2 in una volta, come ci si aspetta, ma solo uno... Quindi devi solo trascinarli uno per uno all'indietro!

E in generale - sono così grandi che bisogna dimezzare/triplicare tutto lì!

E sarebbe meglio rendere più sottili anche le cornici delle finestre delle tabelle! Ora sono così convenzionali - tutti fatti di mattoni...

È solo ergonomia, è un'impressione generale e una comodità generale!

Ci sono sempre problemi di ergonomia nel nostro paese! È costantemente trascurato. I prodotti stranieri di solito vincono in questo senso. Non sto parlando di terminali di altri produttori, intendo in generale! Si può prendere l'industria automobilistica o l'elettronica... Qualsiasi cosa... È così dai tempi dell'URSS e dell'economia pianificata.

Sarebbe bello poter finalmente battere questa cosa!

 
Михаил:

E comunque - sono così grandi che devono dimezzare / triplicare tutto lì!

Non devi pensare alle persone che non possono vedere al cento per cento? Si possono già rottamare? Non sarebbe più facile per te portare gli occhiali così i bottoni non sembrano così grandi?

 
Alexey Viktorov:

Non devi pensare alle persone che non possono vedere al cento per cento? Si possono già rottamare? Non sarebbe più facile per te portare gli occhiali così i bottoni non sembrano così grandi?

Hai bisogno di una regolazione... Capisco che ci sono diversi tipi di vista. Lo schermo può essere grande o il portatile può essere piccolo... Ecco perché hai bisogno di una correzione! E affinché il terminale non dimentichi la posizione degli elementi...

La gente sta gradualmente passando dai monitor ai televisori invece che ai monitor... È molto conveniente. Su una TV, i grandi controlli sono uno spreco di spazio. Su un portatile, è comodo avere controlli più grandi... Avete bisogno di opzioni.

La piattaforma non è più piccola. Sono state fatte tante cose complesse e serie. E il design in molti modi è vecchio, non è cambiato da molto tempo...

 

Domanda su GetMicrosecondCount()

La funzione GetMicrosecondCount() restituisce il numero di microsecondi che sono passati da quando il programma MQL5 è entrato in funzione.

Ho capito bene che questa funzione si blocca quando viene richiesto di chiudere - aprire - modificare ordine - posizione?


Metodo di controllo

Apertura di 20 posizioni

Modifica di 20 posizioni

Misura GetMicrosecondCount()

Chiusura di 20 posizioni

Misura GetMicrosecondCount()


Di conseguenza, tutte le posizioni sono chiuse a intervalli di 70 000 microsecondi. Tutti 20, ma se guardiamo visivamente nel terminale, possiamo vedere che alcune posizioni sono in attesa di essere chiuse per 2-5 secondi!