Errori, bug, domande - pagina 2314

 

Compagni sviluppatori!

In MT4, cliccando sull'oggetto grafico selezionato si attiva l'evento"CHARTEVENT_OBJECT_DRAG". Questo è un vero errore.

In mt5 non c'è questo problema.

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
 {
  if(id==CHARTEVENT_OBJECT_DRAG)
    Print(id); // 2
 }
 
SuhanovDM94:

Buon pomeriggio a tutti! Scusa per la domanda stupida. Ragazzi, potreste dirmi come fare in modo che la proprietà Pressed di un pulsante sia vera quando si clicca con il tasto sinistro e falsa quando si clicca con il tasto sinistro. Ora la situazione è tale, che non succede niente premendolo, e rilasciandolo Pressed cambia il suo valore al contrario.

Ho capito che ho bisogno di sovrascrivere i gestori di eventi CButton::OnMouseUp e CButton::OnMouseDown, ma non ho idea di dove farlo. Un suggerimento per favore. Grazie in anticipo!

Se qualcuno può aiutare con lo stesso argomento, sarebbe apprezzato.

 
Baruban:

Se qualcuno può aiutare con lo stesso argomento, sarebbe apprezzato.

L'evento viene generato solo quando il pulsante del mouse viene premuto, ma non quando

 
Vitaly Muzichenko:

L'evento viene generato solo quando il pulsante del mouse viene premuto, non quando viene cliccato

Ma c'è un gestore di click, vero? Quindi ci deve essere un evento click.

 
SuhanovDM94:

Ma c'è un addetto stampa, vero? Quindi ci deve essere anche un evento per la stampa.

Non sei confuso? C'è l'evento CHARTEVENT_CLICK - clic del mouse sul grafico; ma non il clic...

 
Alexey Viktorov:

Non stai confondendo le cose? C'è un evento CHARTEVENT_CLICK - un clic del mouse su un grafico; ma non un clic...

C'è, è vero. È solo che la classe CButton ha due gestori di eventi interni: OnMouseDown() e OnMouseUp(). Così ho pensato, forse ci sono anche eventi corrispondenti?

 
SuhanovDM94:

Sì, proprio così. È solo che la classe CButton ha due gestori di eventi interni: OnMouseDown() e OnMouseUp(). Così ho pensato, forse ci sono anche eventi corrispondenti?

Non ho guardato il SB, ma apparentemente lì una stampa OBJPROP_STATE == true, l'altra OBJPROP_STATE == false. O forse mi sbaglio.

 
Ciao a tutti, aiutatemi: perché il grafico scende alla fine del processo di ottimizzazione?
File:
 
Entrambi gli editor MT4 e MT5 si bloccano quando si passa il mouse su "func" nella riga "int i = func( 0, 1 );" e si seleziona l'opzione "Go to definition" (o quando si preme Alt+G)

MQL4 build 1910
MQL5 build 1931

template<typename type>  
type func( type a, type b = 1 ){ return ( 0 ); }

int i = func( 0, 1 );

void OnStart(){ }  

File:
altg.jpg  57 kb
 

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

L'equivalente MQL del tipo None di Python?

nicholi shen, 2018.10.28 21:52

Non in MQL, non più comunque. In realtà è due volte più lento del riferimento nel debug, e abbastanza vicino allo stesso quando compilato normalmente che non ha davvero importanza. Provate voi stessi.

#define  ITERATIONS 1000000

void OnStart()
{
   {
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++){
         string r = string(rand());
         sum += by_ref(r);
      }
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_ref", time/1000.0, sum);
   }{
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++)
         sum += by_val(string(rand()));
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_val", time/1000.0, sum);
   }
}
//+------------------------------------------------------------------+

int by_ref(string &var){ return int(var) % 100; }
int by_val(string  var){ return int(var) % 100; }

Perché by_ref è più lento di by_val?