MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 124

 
VOLDEMAR:

Vous feriez mieux de tout écrire en anglais. Si votre code arrive à un commerçant étranger, il ne comprendra rien...

J'écris du code pour un Russe et il me demande d'écrire en russe. Et ce que je vérifie ici - j'écris pour moi-même, et je ne me soucie pas de savoir si j'écris en russe ou en martien. Si je vois un problème, je le décris.

Je l'écris en anglais pour le marché.

 
pro_:
stringo:

Cherché et trouvé

.

Donnez-nous votre exemple.



Je vous ai écrit dans un message privé. Avec un exemple du problème auquel je suis confronté. ObjectFind était une tentative de résoudre le problème, et vous avez probablement raison,
ObjectFind lui-même fonctionne bien.

Le problème est clair. Utilisation incorrecte de la fonction ObjectFind. ObjectFind renvoie le numéro de la sous-fenêtre dans laquelle l'objet est trouvé. Si aucun objet n'est trouvé, il renvoie -1. Vous recherchez "zéro - zéro".
 
Night63:

Bonjour !

Nous avons trouvé le problème suivant.

Nous insérons le bloc de passage des cotations à 4 chiffres à celles à 5 chiffres (le code fonctionne absolument bien, il a été testé sur des dizaines d'Expert Advisors) :

De là, vous pouvez voir ce qui suit.

Nous faisons apparaître les paramètres d'entrée de l'Expert Advisor en appuyant sur F7, tout est correct :

Appuyez sur OK, puis appuyez à nouveau sur F7 :

Appuyez sur OK, puis appuyez à nouveau sur F7 :

Appuyez sur OK, puis appuyez à nouveau sur F7 :

Et ainsi de suite......

Ce bogue ne disparaît pas avec les mises à jour. Apparaît de la même manière chez différents utilisateurs. Le sujet a été discuté ici


Vous ne pouvez pas modifier les variables d'entrée !

Utilisez le mot-clé input au lieu de extern, le compilateur ne vous laissera pas faire.

Nous verrons ce que nous pouvons faire pour garder l'ancienne fonctionnalité quadruple.

PS : merci beaucoup d'avoir soulevé cette question

 
artmedia70:
Ainsi, à l'avenir, Bars ne sera pas seulement une variable prédéfinie, mais aussi une fonction portant le même nom : Bars() ?

C'est tout à fait possible. (En C/C++, cela est autorisé, d'ailleurs).
 
stringo:

Vous ne pouvez pas changer les variables d'entrée !



Ici, pouvez-vous expliquer en détail, ce que signifie que les variables d'entrée ne peuvent pas être modifiées ?

Si la variable d'entrée int TakeProfit = 300 ;

Je peux alors lui donner une valeur différente dans le code.

Je ne comprends pas pourquoi je ne peux pas le changer.

 

Autre question, comment puis-je déterminer de manière programmatique que le curseur de la souris se trouve sur un objet bmp ???

J'ai fait un code où sous l'objet il y a une zone où le curseur tombe et le code comprend que le curseur est sur l'objet bmp ...

Je pose la question parce que je cherche une méthode plus simple pour définir le curseur sur un objet bmp ...

 
VOLDEMAR:

Ici, pouvez-vous expliquer plus en détail ce que signifie le fait que les variables d'entrée ne peuvent pas être modifiées ?

Si la variable d'entrée int TakeProfit = 300 ;

Je peux alors lui attribuer une valeur différente dans le code.

Je ne comprends pas, quand est-ce que je ne peux pas changer ?

Le logiciel ne peut pas être modifié. Seulement par l'utilisateur dans les paramètres.

entrée int TakeProfit = 300 ;

int takeProfit ;

int start() {

takeProfit=TakeProfit ;

// Et ensuite modifier takeProfit.

retour(0) ;

}

 
artmedia70:

Vous ne pouvez pas le modifier par programme. Uniquement par un utilisateur dans les paramètres.

entrée int TakeProfit = 300 ;

int takeProfit ;

int start() {

takeProfit=TakeProfit ;

// Et ensuite modifier takeProfit.

retour(0) ;

}




Merci ! !! Je vais le savoir maintenant...
 
VOLDEMAR:

Ici, pouvez-vous expliquer plus en détail ce que signifie le fait que les variables d'entrée ne peuvent pas être modifiées ?

Si la variable d'entrée int TakeProfit = 300 ;

Je peux alors lui attribuer une valeur différente dans le code.

Je ne comprends pas, quand est-ce que je ne peux pas changer ?

Voici un exemple de notre parabole personnalisée.

input double InpSARStep=0.02;    // Step
input double InpSARMaximum=0.2;  // Maximum
//---- buffers
double       ExtSARBuffer[];
//--- global variables
double       ExtSarStep;
double       ExtSarMaximum;

...

void OnInit()
  {
//--- checking input data
   if(InpSARStep<0.0)
     {
      ExtSarStep=0.02;
      Print("Input parametr InpSARStep has incorrect value. Indicator will use value",
            ExtSarStep,"for calculations.");
     }
   else
      ExtSarStep=InpSARStep;
   if(InpSARMaximum<0.0)
     {
      ExtSarMaximum=0.2;
      Print("Input parametr InpSARMaximum has incorrect value. Indicator will use value",
            ExtSarMaximum,"for calculations.");
     }
   else
      ExtSarMaximum=InpSARMaximum;

...

Et nous utilisons ensuite ExtSarStep et ExtSarMaximum.

 
stringo:
Ce qui est sûr, c'est que ce n'est pas demain la veille.


C'est dommage. Mes experts ont besoin de ces événements comme d'air.

À chaque étape, vous devez passer en revue un certain nombre de postes et déterminer lesquels sont allés où et pourquoi.