conseiller expert - questions diverses - page 6

 

J'essaie de faire un bouton de réinitialisation de lot, mais j'ai besoin d'obtenir un meilleur résultat que cela, mais je ne peux pas.
( Je n'aime pas tous mes ea's et indicateurs Bouton objets parce que tous très laid comme celui-ci. )

J'ai besoin de deux choses de vous les gars qui peuvent aider et me donne de bons conseils, s'il vous plaît j'ai vraiment besoin de votre aide.
J'ai passé beaucoup de temps, et je n'arrive pas à comprendre quel est le problème avec mon code.

Merci d'avance.

//--- deuxième édition - pendant que j'écris ce commentaire, je me suis peut-être endormi...

ObjectCreate     ( 0, "button lot reset", OBJ_BUTTON           , 0, 0, 0           );
ObjectSetString  ( 0, "button lot reset", OBJPROP_TEXT         , "x"               );
ObjectSetString  ( 0, "button lot reset", OBJPROP_FONT         , "Verdana"         );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_FONTSIZE     , 14                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_CORNER       , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_COLOR        , White             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BGCOLOR      , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BORDER_COLOR , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_STATE        , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BACK         , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTABLE   , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTED     , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_HIDDEN       , true              );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_ZORDER       , true              );
 
  1. S'il est caché, comment pouvez-vous le voir et cliquer dessus ?
  2. ZORDER n'est pas booléen, c'est un int 0...
 
//+------------------------------------------------------------------+
//| Create the button                                                |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // chart's ID
                  const string            name="Button",            // button name
                  const int               sub_window=0,             // subwindow index
                  const int               x=0,                      // X coordinate
                  const int               y=0,                      // Y coordinate
                  const int               width=50,                 // button width
                  const int               height=18,                // button height
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                  const string            text="Button",            // text
                  const string            font="Arial",             // font
                  const int               font_size=10,             // font size
                  const color             clr=clrBlack,             // text color
                  const color             back_clr=C'236,233,216',  // background color
                  const color             border_clr=clrNONE,       // border color
                  const bool              state=false,              // pressed/released
                  const bool              back=false,               // in the background
                  const bool              selection=false,          // highlight to move
                  const bool              hidden=true,              // hidden in the object list
                  const long              z_order=0)                // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create the button
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create the button! Error code = ",GetLastError());
      return(false);
     }
//--- set button coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set button size
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- set the chart's corner, relative to which point coordinates are defined
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the text
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- set text font
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- set font size
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- set text color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set background color
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- set border color
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- enable (true) or disable (false) the mode of moving the button by mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+

Vous pouvez utiliser la fonction de la documentation 'telle quelle' pour créer les boutons. Ajoutez-la au bas de votre code et vous pouvez appeler la fonction et passer les paramètres.

Ainsi, vous pouvez simplement appeler :

ButtonCreate(...

Aussi

whroeder1:
  1. S'il est caché, comment pouvez-vous le voir et cliquer dessus ?
  2. ZORDER n'est pas booléen, c'est un int 0...
Hidden est juste caché dans la liste des objets.
 
whroeder1:
  1. S'il est caché, comment pouvez-vous le voir et cliquer dessus ?
  2. ZORDER n'est pas booléen, c'est un int 0...

Merci, je l'ai corrigé, c'était juste une erreur.
--------------------------------------------

Marco vd Heijden:

Vous pouvez utiliser la fonction de la documentation 'telle quelle' pour créer les boutons. Il suffit de l'ajouter au bas de votre code et vous pouvez appeler la fonction et passer les paramètres.

Donc, vous pouvez simplement appeler :

ButtonCreate(...)

Merci Marco, cela va beaucoup m'aider, et les codes de mon EA semblent avoir été nettoyés.
J'ai aussi besoin de demander à propos du code ci-dessous, qu'est-ce que c'est, comment ça marche ? ( même si j'ai lu à ce sujet mais je ne comprends pas plus clairement )

Merci de m'expliquer un peu plus, merci d'avance.

ObjectSetString ( 0, name, OBJPROP_TOOLTIP , tip );

----------------------------------------

J'ai également besoin d'utiliser void au lieu de bool comme le code ci-dessous,lequel est le bon ?

bool ButtonCreate(...)

// or

void ButtonCreate(...)
 

La fonction renvoie true (vrai) ou false (faux) selon que la création du bouton a réussi ou non. C'est donc à vous de vérifier si le bouton a bien été créé.

Pour la deuxième question, l'info-bulle est ce qui devient visible lorsque vous passez votre souris sur l'objet dans le graphique.

La façon dont vous travaillez actuellement a des limites.

Si vous voulez aller plus loin, lisez les articles suivants :

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

 
Marco vd Heijden:

La fonction renvoie true (vrai) ou false (faux) selon que la création du bouton a réussi ou non. C'est donc à vous de vérifier si le bouton a bien été créé.

Pour la deuxième question, l'info-bulle est ce qui devient visible lorsque vous passez votre souris sur l'objet dans le graphique.

La façon dont vous travaillez actuellement a des limites.

Si vous voulez développer, veuillez lire les articles suivants :

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

Un grand merci.
WOW, vous allez devenir mon homme, M. Marco.

( depuis votre premier commentaire - vous m'avez beaucoup aidé - vous essayez toujours de comprendre mes préoccupations - une fois de plus un grand merci )

 
Je vous renvoie simplement à ces articles et nous devrions être très reconnaissants envers les auteurs qui les ont écrits et traduits.
 

J'ai besoin d'utiliser le format de fichier .PNG dans le code de mon EA, pour l'icône LotSize.
Mais je n'ai trouvé que le format de fichier .BMP, alors quelqu'un peut-il m'aider / me conseiller ?

Si un commentaire pourrait rapidement beaucoup apprécier, juste je suis pressé un peu plus.
Merci d'avance.

 

J'essaie de faire en sorte que si la taille du lot est supérieure à la valeur du lot, l'état soit vrai, sinon l'état soit faux.
( lorsque je clique sur 'Reset', l'objet devient 'state false' et après avoir augmenté la taille du lot, l'état ne devient pas vrai).

Le code ci-dessous est-il incorrect ?

//|     Lot Reset
if ( sparam == _namelotRset )
{
    if ( _lotSize > _lotValue )
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, true );
    }   //---if Close
    else
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
    }   //---if Close
    _lotSize = _lotValue * _lotMin;

    _infoUpdate();
    return;
}   //---if Close

Merci !

//--- deuxième édition

J'essaie de faire tourner'ON OFF' avec le code ci-dessous.

ObjectSetString( chart_ID, name, OBJPROP_BMPFILE, on_off, file )
 

Veuillez consulter :

https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap

Pour le problème du bitmap.

Et pour l'autre problème, vous pouvez le diviser en parties séparées pour définir l'état en dehors de sparam.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP - Reference on algorithmic/automated trading language for MetaTrader 5
Raison: