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

 
Mihail Matkovskij #:

Et sérieusement, ChartRedraw est appelé plus de 24 fois par seconde...

Et ObjectCreate ! L'horreur... (ajouté)

ChartRedraw est bien. Mais l'OBjectCreator peut être chargé si la ligne est créée jusqu'à ce que le bouton soit relâché.

UPD
Oui, c'est vrai...

UPD
Bien que non, ce n'est pas le cas :

Print(ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price));
...
2021.12.03 23:15:50.987    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.967    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.927    USDCHF,M1: false
2021.12.03 23:15:50.907    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.467    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: true
 
Nerd Trader #:
ChartRedraw n'est pas un problème. Mais ObjestCreate pourrait être chargé, si la ligne est créée jusqu'à ce que le bouton soit relâché.

Oui, créez-le au démarrage et supprimez-le à l'arrêt de l'application. Et utiliser les fonctionsObjectSetInteger etObjectSetDouble pour le déplacer. Difficile à comprendre...

 
Mihail Matkovskij #:

Oui, créez-le au démarrage et supprimez-le à l'arrêt de l'application. Et utiliser les fonctionsObjectSetInteger etObjectSetDouble pour le déplacer. Difficile à comprendre...

Il est difficile de comprendre que je ne dois créer qu'après avoir appuyé sur le bouton et supprimer après l'avoir relâché.
 
Nerd Trader #:

UPD
Oui, c'est vrai...

UPD
Bien que non, ce n'est pas le cas :

D'une manière ou d'une autre, votre processeur va exploser devant un tel programmeur... :)

 
Nerd Trader #:
Est-il difficile de comprendre que je dois seulement créer lorsque le bouton est enfoncé et supprimer lorsque le bouton est relâché ?

Vous pouvez masquer le graphique, puis l'afficher. Comment masquer correctement un objet et l'afficher, cela a été expliqué dans le forum. Ou encore, suivez CHARTEVENT_OBJECT_CLICK - la solution parfaite !

 
Mihail Matkovskij #:

D'une manière ou d'une autre, votre processeur va exploser devant un tel programmeur... :)

Je garde un œil sur le thermomètre.

Mihail Matkovskij #:

Vous pouvez masquer le graphique et ensuite l'afficher. Comment masquer correctement un objet et l'afficher, il a été écrit à ce sujet sur le forum.

Nah... Je trouverai la bonne façon de le faire.

 
Nerd Trader #:

Je garde un œil sur le thermomètre.

Nah... Je vais inventer celle-là tout de suite.

J'ai ajouté au message précédent.

 
if(id==CHARTEVENT_OBJECT_CLICK){
    if(sparam=="button_bs")
      (ObjectCreate(0,"H Line",OBJ_HLINE,0,0,0));
  }

  if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
    int      x     =(int)lparam;
    int      y     =(int)dparam;
    datetime dt    =0;
    double   price =0;
    int      window=0;

    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ObjectMove(0,"H Line",window,dt,price))
          ChartRedraw(0);
      }
    }
  }else ObjectDelete(0,"H Line");

Tout est brillamment simple.

 
Nerd Trader #:

Tout ce qui est brillant est simple.

Eh bien, quelque part sur la ligne... :)

 
Mihail Matkovskij #:

Complété le post précédent.

ne peut pas voir
Raison: