Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1615

 
Ich habe es auf diese Weise versucht:
if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1")
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);

Aber wenn man klickt, scheint die Schaltfläche einfach nicht zu klicken, was sinnvoll ist.

 
Nerd Trader #:
Ich habe es auf diese Weise versucht:

Aber wenn man klickt, scheint die Schaltfläche einfach nicht zu klicken, was sinnvoll ist.

if(sparam=="button1")
      Sleep(100);
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
 
MakarFX #:
Das reicht, danke.
 
MakarFX #:

Das gesamte Programm verzögert sich. Nicht gut... Für eine einfache Variante ist das natürlich in Ordnung. Aber für normale - Sie müssen die Werte der gedrückten Tasten in den Millisekunden-Timer abfragen und wenn nach dem Drücken der Taste die erforderliche Verzögerungszeit abgelaufen ist - ein Flag setzen.

 
Nerd Trader #:
Das reicht, danke.

In einem geschlossenen Markt werden Sie überrascht sein, wie eine Schaltfläche wie diese funktioniert

 
MakarFX #:

Versuchen Sie dies.

Besser noch: verschreiben,

Wenn es keine offenen Verkaufsaufträge gibt, löschen Sie die Verkaufszeile...

ähnlich für die Bai

Danke für den Tipp, aber er hat nicht geholfen

 
Artyom Trishkin #:

Das gesamte Programm verzögert sich. Nicht gut... Für eine einfache Variante ist das natürlich in Ordnung. Aber für normale - Sie müssen die Werte der gedrückten Tasten in den Millisekunden-Timer abfragen und wenn nach dem Drücken der Taste die erforderliche Verzögerungszeit abgelaufen ist - ein Flag setzen.

Ja, das ist nicht gut. Ist das in Ordnung?

     if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){
       ulong ms=GetMicrosecondCount();
       for(;;){
         if(GetMicrosecondCount()-ms>100000){
           ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
           break;
         }
       }
     }
Ist dies nicht gleichbedeutend mit Sleep(100)? Schließlich bleibt das Programm in einer Schleife hängen, bis break ausgeführt wird.
 
Bitte schlagen Sie einen Indikator für das Kreuzen von zwei Folien mit einer Warnmeldung vor?
 
Frei ...
 
Nerd Trader #:

Ja, das ist nicht gut. Ist das in Ordnung?

Ist dies nicht gleichbedeutend mit Sleep(100)? Schließlich bleibt das Programm in einer Schleife hängen, bis break ausgeführt wird.
Und wenn "ms" global gemacht wird
ulong ms=0;
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
      if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1")
         {ms=GetMicrosecondCount();}
  }
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(GetMicrosecondCount()-ms>100000)
     {
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
      ms=0;
     }
  }
//+------------------------------------------------------------------+
Grund der Beschwerde: