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

 
MakarFX #:

Pour que vous puissiez vous écrire un pense-bête - quelle en est la fonction ?

:))) comme si je ne pouvais pas le faire moi-même quand j'en ai besoin : insérer deux barres obliques et écrire quelques mots. Avez-vous essayé d'écrire quelque chose dans ce cadre ? La barre oblique de droite sera déplacée vers la droite en fonction du nombre de caractères que vous avez tapés, mais que se passe-t-il si vous devez écrire plus d'une ligne ? Au lieu de faire quelque chose, je dois perdre mon temps à dessiner des cadres. C'est juste que l'idéal impose une sorte de vision malade de comment ça devrait être.

 
Nerd Trader #:

:))) comme si je ne pouvais pas le faire moi-même quand j'en ai besoin : insérer deux barres obliques et écrire quelques mots. Avez-vous essayé d'écrire quelque chose dans ce cadre ? La barre oblique de droite sera déplacée vers la droite en fonction du nombre de caractères que vous avez tapés, mais que se passe-t-il si vous devez écrire plus d'une ligne ? Au lieu de faire quelque chose, je dois perdre mon temps à dessiner des cadres. J'impose juste une vision malade de comment ça devrait être.

Mettez deux barres obliques devant la fonction et vous êtes prêt à partir.

//
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime& time[],
                 const double& open[],
                 const double& high[],
 
MakarFX #:

Mettez deux barres obliques devant la fonction et c'est bon.

J'ai déjà écrit plus haut que s'il y a une ligne vide entre le commentaire et la fonction, un cadre sera inséré.
 

Lorsque l'on clique sur le bouton, une ligne horizontale est créée. Ils sont recréés avec une couleur différente selon la position du curseur par rapport au prix. Le problème est le suivant : les lignes jaunes et grises clignotent et sont constamment créées (la verte est OK) lorsque le curseur est à la position appropriée loin du prix. Un code similaire modifiant uniquement la propriété de la couleur de la ligne, sans la recréer, fonctionne correctement.

Le NOT logique est ici à sa place, c'est-à-dire au lieu d'écrire == 0.

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
  ...
  ...
  ...
  if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE)){
    int x = (int)lparam;
    int y = (int)dparam;
    //Переведём координаты X, Y в дату и время
    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      //Линия меняет цвет с зелёного на желтый
      if(price < Bid){
        if(!ObjectFind("Buy Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Sell Stop";
          CreateLine(line_name, clrYellow);
        }      
      }
      //Линия меняет цвет с желтого на зелёный
      if(price > Ask){
        if(!ObjectFind("Sell Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Buy Stop";
          CreateLine(line_name, clrGreen);
        }
      }
      //Линия меняет цвет на серый если в зоне спреда
      if(price > Bid && price < Ask){
        if(!ObjectFind("Buy Stop") || !ObjectFind("Sell Stop")){
          ObjectDelete(line_name);
          line_name = "not allowed";
          CreateLine(line_name, clrGray);
        }
      }
      //Прикрепляем линию к курсору
      if(id == CHARTEVENT_MOUSE_MOVE)
        if(ObjectMove(0,line_name,0,0,price))
          ChartRedraw(0);
    }
  }else if(ObjectFind(line_name) == window) Print(ObjectDelete(line_name));
 
Nerd Trader une ligne horizontale est créée. Ils sont recréés dans une couleur différente selon la position du curseur par rapport au prix. Le problème est le suivant : les lignes jaunes et grises clignotent et sont constamment créées (la verte est OK) lorsque le curseur est à la position appropriée du prix. Un code similaire modifiant uniquement la propriété de la couleur de la ligne, sans la recréer, fonctionne correctement.

Le NOT logique est ici à sa place, c'est-à-dire au lieu d'écrire == 0.

ObjectFind est un int, pas un bool.
 
Nerd Trader #:

Parce que ça me fait vraiment chier quand on décide de passer à un environnement natif mql4 et que ça y est ! Voulez-vous un cadre ? Et nous le vendrons de toute façon.

Vous devez utiliser la méthode de Makar pour obtenir ce que vous voulez.

MakarFX #:

Je ne connaissais pas les styles, alors je les ai formatés de la manière dont je voulais les lire.

 
MakarFX #:
ObjectFind est un int, pas un bool.
dans ce cas, il n'y a pas de différence entre " !" et "==0".
 
Nerd Trader #:
dans ce cas, il n'y a pas de différence entre " !" et "==0".

Il y a une différence ! !!

      if(!ObjectFind("Buy Stop"))Print("All right Христофор Бонифатич!");
      else Print("Something is wrong!");
      if(ObjectFind("Buy Stop")!=0)Print("All right Христофор Бонифатич");
 
Nerd Trader #:
dans ce cas, il n'y a pas de différence entre " !" et "==0".
if(!ObjectFind("Buy Stop"))

Cette requête se présente comme suit :

Vasily Ivanovich Chapayev et Petka sont en train de voler dans un avion, et soudain Vasily Ivanovich, assis au volant, s'écrie :

"Petya, les instruments !"

Petya répond : "Trente-huit."

Vasily Ivanovich : "Trente-huit quoi ?"

Petya : "Et les instruments ?"

 
MakarFX #:

Cette demande ressemble à ceci :

Non Makar, ça ressemble à ça :

La fonction ObjectFind() renvoie le numéro de la fenêtre principale. Et ce nombre est 0. D'autre part, 0 == false, il s'ensuit que si la fonction renvoie 0, elle renvoie toujours false. Bien sûr, je ne l'utiliserais pas car si la fonction renvoie -1, c'est-à-dire une erreur, on peut considérer que l'emplacement de l'objet n'est pas dans la fenêtre principale. En plus de cela, vous ne savez jamais quelles corrections seront apportées...

En général, ne vous disputez pas et n'apprenez pas à le faire ...