Une question pour les connaisseurs de MQL - page 4

 
Aback... Je suis entré dans la "Question pour l'expertise MQL"... Désolé, si quoi que ce soit, je suis aussi bon programmeur qu'un d..... mais je suis toujours objectif ! :)
 
leonid553:

Je crois que je l'ai. J'ai défini le nom de l'objet dans la fonction.

ObjectCreate(name+ WindowExpertName(), OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0) ;


Il ne s'agit pas d'objets...

Vous l'écrivez dans init()

IndicatorShortName("CC-STOKS ");

vous utilisez WindowExpertName() comme nom d'indicateur dans une fonction de rendu...

Décidez-vous, cher ami (désolé d'être familier), soit l'indicateur s'appelle "CC-STOKS" (un alias), soit il est appelé par le nom d'un Expert Advisor...

 

Je parle de mon...

Je ne vois pas de vérification pour un objet.

 

Suppression de la ligne IndicatorShortName("CC-STOKS ");

Cela semble fonctionner maintenant.

//------------------------------------------

Je l'ai vérifié.

 string info =ObjectFind("Symbol1+WindowExpertName()");
     IndicatorShortName(info);     

Le commentaire renvoie "-1".

Et - cela n'a pas d'importance si l'"alias" est là ou s'il est supprimé.

 

Oui, ça marche bien...

Merci à tous ceux qui ont aidé et répondu aux questions !

 

J'ai bu quelques bières, mais vous m'épatez...

faire en sorte que ce qui se passe soit clair...


ou

1. pas de nom court et

static int WINDOW = -1;

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( WindowExpertName() );
}

votre init() tel quel

ou définir le nom court dans votre int()

string short = "CC-STOKS";

int init(){
   IndicatorShortName( short );
   // остальное прочее
}

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( short );
}

et ensuite, lorsque vous dessinez des objets, utilisez WINDOW comme numéro de sous-fenêtre.

ObjectCreate(name + WindowExpertName(), OBJ_LABEL, WINDOWS, 0, 0);

la fonction objet devrait ressembler à ceci

void object(string name, int window, string text, color col, int corner,
            int x, int y, bool back = false, int fontsize = 9, 
            string fontname = "Tahoma") {
   if (ObjectFind(name)==-1)      
      ObjectCreate(name, OBJ_LABEL, window, 0, 0);
   ObjectSetText(name, text, fontsize, fontname, col);
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_BACK,back);
   ObjectSet(name, OBJPROP_XDISTANCE, x);
   ObjectSet(name, OBJPROP_YDISTANCE, y);     
}

de cette façon, tous les attributs clés sont passés en paramètres, et d'ailleurs, le nom de l'objet doit être formé en dehors de la fonction ...

 
OK. En parcourant vos instructions ...
 

Bon après-midi. Veuillez me conseiller.

Est-il possible de dessiner un triangle dans la fenêtre de l'indicateur ? Si oui, comment définir les coordonnées ?

Je ne trouve pas de moyen de définir les coordonnées d'un triangle dans l'aide mql.

 
Rita:

Bon après-midi. Veuillez me conseiller.

Est-il possible de dessiner un triangle dans la fenêtre de l'indicateur ? Si oui, comment définir les coordonnées ?

Je ne trouve pas de moyen de définir les coordonnées d'un triangle dans l'aide mql.


ObjectCreate(имя_объекта, OBJ_TRIANGLE, 0, вершина1_время, вершина1_цена, вершина2_время, вершина2_цена, вершина3_времявершина3_цена);
S'il ne se trouve pas dans la sous-fenêtre principale, utilisez le numéro de la sous-fenêtre correspondante au lieu de 0 : https://docs.mql4.com/ru/windows/WindowFind.
 


ObjectCreate(name, OBJ_TRIANGLE, WindowFind(WindowExpertName(), Time[-1],vertex1_price,

Temps[-5],vertex2_price,

Temps[-7],vertex3_price, ) ;

//--------------------------------------------------------------------------------------------------------------------------

J'ai défini les coordonnées des nœuds du triangle en fonction du temps (par exemple, en fonction de l'heure d'ouverture des barres du futur). Le reste n'est pas très clair pour moi. Ce n'est pas le prix qui est affiché sur l'échelle de la fenêtre de l'indicateur. C'est la gradation des valeurs des indicateurs.

J'ai besoin de "mettre" un triangle avec des sommets fixés de manière rigide, quel que soit le prix.

Et de préférence, il doit être fixé de manière rigide dans le coin droit (ou inférieur).

Et je ne sais pas comment définir les coordonnées de ses sommets - sur l'axe vertical de l'échelle de l'indicateur :