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

 
Seric29:

En général, puisque Artyom ne répond à rien, et que l'homme ci-dessus a donné la réponse que les fonctions travaillent avec des structures qui doivent être connues et donc doivent être déclarées globalement, nous concluons que la structure doit être déclarée globalement.

Par nature, une fonction qui travaille avec une structure ne peut accepter que les mêmes structures statiques. Cela signifie que nous ne pouvons pas déclarer une structure localement pour qu'elle ait une portée limitée et la passer dans une fonction.

Ne te réfère pas à moi quand tu ne comprends pas ce que je dis. Lisez attentivement ce qu'Artem a dit.

Dans sa hâte, il a fait quelques inexactitudes dans le code. Cela ne signifie pas qu'il s'exprimait de manière incorrecte. Une structure est un type de données personnalisé et est définie dans la portée globale. Une variable de type utilisateur peut être déclarée n'importe où. Et il peut y avoir un nombre quelconque de variables de ce type déclarées.
 
Artyom Trishkin:
Les statistiques n'en seront pas modifiées.

D'ailleurs, il ne se contente pas de ne pas me montrer à 1 heure du matin ou à 11 heures du soir, il me montre ça.


Le travail technique.

Progrès

Approbation des TDR
Démo
Transmission des travaux et des paiements


Toutes ces cases sont cochées. Il est indiqué que dans une semaine, le paiement sera automatiquement supprimé. Sauf que seul le fichier de démonstration a été reçu et qu'il contient un restricteur de date permettant de travailler uniquement l'année dernière. Je suppose qu'il s'est ennuyé et que maintenant il va attendre une semaine pour que le fichier de paiement change automatiquement ?


C'est déjà arrivé.


Le client Zlaya_budka a confirmé l'étape"Demo".
2020.01.29 21:47

Transfert des travaux et paiement

Le client a accepté la démo, le développeur doit maintenant lui remettre le résultat final.

Après acceptation du travail, le paiement sera effectué automatiquement sur le compte du client (moins une commission). Si le client ne répond pas au travail soumis dans un délai d'une semaine, la commande sera automatiquement considérée comme terminée.

2020.01.29 21:47

Le développeur========= a confirmé l'étape"Transfert des travaux et paiement".


Qu'est-ce que c'est censé signifier ? j'ai déjà eu une belle commande de pipal où le solde débiteur et le solde créditeur ont été échangés, j'ai déjà attendu 3 semaines pour le service avec le paiement. maintenant cette joie qu'est-ce que cela signifie ?

Zlaya_budka
Zlaya_budka
  • www.mql5.com
Профиль трейдера
 
Alexey Viktorov:

Ne vous référez pas à moi quand vous ne savez pas de quoi je parle. Lisez attentivement ce qu'Artem a dit.

Dans sa hâte, il a fait quelques inexactitudes dans le code. Cela ne signifie pas qu'il s'est exprimé de manière incorrecte. Une structure est un type de données personnalisé et est définie dans la portée globale. Une variable de type utilisateur peut être déclarée n'importe où. Et il peut y avoir un nombre quelconque de variables de ce type déclarées.

Eh bien, je parle exactement de mon cas et exactement de la structure, il est clair qu'il s'agit également d'un type de variable personnalisée, mais en particulier je suis intéressé par le niveau local. Peut-être que cela pourrait se faire par le biais d'un cours. En principe, on peut déclarer un type privé à travers une classe et c'est tout, mais je ne comprends pas très bien.

 
Collègues - pouvez-vous me dire si l'init démarre à chaque passage du testeur ?
 
Seric29:

Eh bien je parle exactement de mon cas et exactement de la structure et exactement comme ça, il est clair que c'est aussi un type de variable personnalisée mais en particulier je suis intéressé par le niveau local. Peut-être que cela pourrait se faire par le biais d'un cours. En principe, vous pouvez déclarer un type privé par le biais d'une classe, mais je ne le comprends pas très bien.

Vous définissez votre structure à un niveau global - tout le programme doit la connaître - c'est un nouveau type de variables que vous avez créé.

Et vous pouvez définir différentes variables avec le type de cette structure à n'importe quel niveau local - seulement dans ceux-ci (les niveaux locaux) seront visibles les variables créées dans leur portée.

 

Bonjour, tout le monde !

Aidez-moi à joindre

extern   ENUM_BASE_CORNER  InpCorner      =  CORNER_LEFT_UPPER;   // Угол привязки индикатора

à cet objet

//--- Clicking on the fifth rectangle
   if(id==CHARTEVENT_OBJECT_CLICK) 
     {
      string clickedChartObject=sparam;
      if(clickedChartObject==obj_name[5]) 
        {
         string name="name_"+IntegerToString(MathRand()+100,0,' ');

         y=100;x=5;
         ChartXYToTimePrice(0,x,y,window,dt_1,price_1);
         ChartXYToTimePrice(0,x+250,y,window,dt_2,price_2);
         ChartXYToTimePrice(0,x,y+20,window,dt_3,price_3);

         ChannelCreate(0,name,0,dt_1,price_1,dt_2,price_2,dt_3,price_3,1,clrRed,STYLE_SOLID,1,InpBackRect,true,false,false,InpHidden_OBJ,0);
        }
     }

bool

//+------------------------------------------------------------------+
//| Create an equidistant channel by the given coordinates           |
//+------------------------------------------------------------------+
bool ChannelCreate(const long             chart_ID=0,                   // chart's ID
                   const string           name="Channel",               // channel name
                   const int              sub_window=0,                 // subwindow index  
                   datetime               time1=0,                      // first point time
                   double                 price1=0,                     // first point price
                   datetime               time2=0,                      // second point time
                   double                 price2=0,                     // second point price
                   datetime               time3=0,                      // third point time
                   double                 price3=0,                     // third point price
                   const ENUM_BASE_CORNER corner = CORNER_RIGHT_UPPER,  // the angle of the graph for the binding
                   const color            clr=clrRed,                   // channel color
                   const ENUM_LINE_STYLE  style=STYLE_SOLID,            // style of channel lines
                   const int              width=1,                      // width of channel lines
                   const bool             back=false,                   // in the background
                   const bool             selection=true,               // highlight to move
                   const bool             ray_left = false,             // extend the line to the left
                   const bool             ray_right=false,              // channel's continuation to the right
                   const bool             hidden=true,                  // hidden in the object list
                   const long             z_order=0)                    // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create a channel by the given coordinates
   if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_window,time1,price1,time2,price2,time3,price3))
     {
      Print(__FUNCTION__,
            ": failed to create an equidistant channel! Error code = ",GetLastError());
      return(false);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete the channel                                               |
//+------------------------------------------------------------------+
bool ChannelDelete(const long   chart_ID=0,     // chart's ID
                   const string name="Channel") // channel name
  {
//--- reset the error value
   ResetLastError();
//--- delete the channel
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete the channel! Error code = ",GetLastError());
      return(false);
     }
//---
   return(true);
  }
//---
 

Je crois savoir que ChartXYToTimePrice calcule également par défaut les coordonnées à partir du coin supérieur gauche.

Comment ChartXYToTimePrice recalculerait-il à partir du coin que j'ai spécifié ?

 
MakarFX:

Je comprends que ChartXYToTimePrice calcule les coordonnées et les valeurs par défaut à partir du coin supérieur gauche.

Comment le ChartXYToTimePrice serait-il recalculé à partir de l'angle que j'ai spécifié ?

Vous ne pouvez changer l'esprit de quelqu'un qui a quelque chose pour prendre des décisions. Et si "ça" ne fait qu'exécuter les paramètres de quelqu'un d'autre, alors tout dialogue pour tenter de vous convaincre de quelque chose n'est qu'une perte de temps.))

Je ne comprends pas bien la tâche, mais faites attention non seulement à l'angle de liaison ENUM_BASE_CORNER, mais aussi au point de liaison ENUM_ANCHOR_POINT

 

Alexey Viktorov:

Je ne comprends pas bien la tâche.

L'indicateur à l'appel crée un objet (OBJ_CHANNEL) dans le coin supérieur gauche.

comment définir la condition pour créer un objet dans l'autre coin.

 
MakarFX:

L'indicateur à l'appel crée un objet (OBJ_CHANNEL) dans le coin supérieur gauche.

comment définir la condition pour créer un objet dans l'autre coin.

Lisez attentivement le manuel. OBJ_CHANNEL n'a rien à voir avec l'angle.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR. – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты...