Fehler, Irrtümer, Fragen - Seite 2314

 

Genossen Entwickler!

In MT4 löst ein Klick auf das ausgewählte grafische Objekt das Ereignis"CHARTEVENT_OBJECT_DRAG" aus. Dies ist ein echter Fehler.

In mt5 gibt es ein solches Problem nicht.

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

Guten Tag zusammen! Entschuldigung für die dumme Frage. Leute, könntet ihr mir bitte sagen, wie man die Eigenschaft "Gedrückt" einer Schaltfläche wahr werden lässt, wenn man mit der linken Maustaste klickt, und falsch, wenn man mit der linken Maustaste klickt. Jetzt ist die Situation so, dass nichts passiert, wenn man die Taste drückt, und wenn man sie loslässt, ändert sich der Wert in das Gegenteil.

Ich verstehe, dass ich die CButton::OnMouseUp und CButton::OnMouseDown-Ereignishandler überschreiben müssen, aber ich habe keine Ahnung, wo das zu tun. Bitte einen Hinweis. Vielen Dank im Voraus!

Wenn jemand bei diesem Thema helfen kann, wäre ich sehr dankbar.

 
Baruban:

Wenn jemand bei diesem Thema helfen kann, wäre ich sehr dankbar.

Das Ereignis wird nur erzeugt, wenn die Maustaste gedrückt wird, aber nicht, wenn

 
Vitaly Muzichenko:

Das Ereignis wird nur erzeugt, wenn die Maustaste gedrückt wird, nicht wenn sie angeklickt wird

Aber es gibt doch einen Click-Handler, oder nicht? Es muss also ein Klick-Ereignis geben.

 
SuhanovDM94:

Aber es gibt doch einen Pressesprecher, oder nicht? Also muss es auch eine Presseveranstaltung geben.

Sind Sie nicht verwirrt? Es gibt das Ereignis CHARTEVENT_CLICK - ein Mausklick auf das Diagramm, aber kein Klick...

 
Alexey Viktorov:

Sind Sie nicht verwirrt? Es gibt ein CHARTEVENT_CLICK-Ereignis - ein Mausklick auf ein Diagramm; aber nicht ein Klick...

Ja, das stimmt. Es ist nur so, dass die CButton-Klasse zwei interne Ereignisbehandler hat: OnMouseDown() und OnMouseUp(). Also dachte ich, vielleicht gibt es ja auch entsprechende Veranstaltungen?

 
SuhanovDM94:

Ja, das ist richtig. Es ist nur so, dass die CButton-Klasse zwei interne Ereignisbehandler hat: OnMouseDown() und OnMouseUp(). Also dachte ich, vielleicht gibt es ja auch entsprechende Veranstaltungen?

Ich habe mir die SB nicht angesehen, aber anscheinend drückt dort eine OBJPROP_STATE == true, die andere OBJPROP_STATE == false. Oder vielleicht liege ich falsch.

 
Hallo zusammen, warum geht die Grafik am Ende des Optimierungsprozesses nach unten?
Dateien:
 
Sowohl MT4- als auch MT5-Editoren stürzen ab, wenn man mit der Maus über "func" in der Zeile "int i = func( 0, 1 );" fährt und die Option "Zur Definition gehen" auswählt (oder wenn man Alt+G drückt)

MQL4 Baujahr 1910
MQL5 Build 1931

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

int i = func( 0, 1 );

void OnStart(){ }  

Dateien:
altg.jpg  57 kb
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MQL-Äquivalent zu Pythons None-Typ?

nicholi shen, 2018.10.28 21:52

Nicht in MQL, jedenfalls nicht mehr. Es ist eigentlich doppelt so langsam wie Referenz in der Fehlersuche, und nahe genug, um die gleiche, wenn normal kompiliert, dass es wirklich keine Rolle. Versuchen Sie es selbst.

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

Warum ist by_ref langsamer als by_val?