Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1615

 
J'ai essayé de cette façon :
if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1")
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);

Mais lorsque vous cliquez, le bouton ne semble pas cliquer, ce qui est logique.

 
Nerd Trader #:
J'ai essayé de cette façon :

Mais lorsque vous cliquez, le bouton ne semble pas cliquer, ce qui est logique.

if(sparam=="button1")
      Sleep(100);
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
 
MakarFX #:
Ça ira, merci.
 
MakarFX #:

L'ensemble du programme est retardé. Pas bon... Pour une simple variante, bien sûr, c'est parfait. Mais pour une utilisation normale, vous devez interroger les valeurs des boutons enfoncés dans le minuteur en millisecondes et si, après avoir appuyé sur le bouton, le délai requis s'est écoulé, placez un drapeau.

 
Nerd Trader #:
Ça ira, merci.

Dans un marché fermé, soyez surpris de l'efficacité d'un bouton comme celui-ci.

 
MakarFX #:

Essayez ça.

Mieux encore, prescrire,

s'il n'y a pas d'ordres de vente ouverts, supprimez la ligne de vente...

similaire pour le bai

Merci pour le conseil mais cela n'a pas aidé

 
Artyom Trishkin #:

L'ensemble du programme est retardé. Pas bon... Pour une simple variante, bien sûr, c'est parfait. Mais pour une utilisation normale, vous devez interroger les valeurs des boutons enfoncés dans le minuteur en millisecondes et si, après avoir appuyé sur le bouton, le délai requis s'est écoulé, placez un drapeau.

Oui, ce n'est pas bon. C'est bon ?

     if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){
       ulong ms=GetMicrosecondCount();
       for(;;){
         if(GetMicrosecondCount()-ms>100000){
           ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
           break;
         }
       }
     }
N'est-ce pas l'équivalent de Sleep(100) ? Après tout, le programme va rester en boucle jusqu'à ce que Break soit exécuté.
 
Veuillez suggérer un indicateur pour le croisement de deux diapositives avec une alerte ?
 
Gratuit...
 
Nerd Trader #:

Oui, ce n'est pas bon. Est-ce que ça va ?

N'est-ce pas l'équivalent de Sleep(100) ? Après tout, le programme va rester en boucle jusqu'à ce que Break soit exécuté.
Et si "ms" devient global
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;
     }
  }
//+------------------------------------------------------------------+