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

 
Priffekt:
Bonjour, j'ai modifié toutes les valeurs, mais je suis intéressé par la possibilité de désactiver la fonction elle-même dans les paramètres de l'EA.

Bonjour.

Lorsque vous collez un bout de code, utilisez le bouton </>, il sera beaucoup plus lisible, je vous ai écrit plus haut que "c'est mieux d'attacher de cette façon".

Dans le post 8518 je vous ai envoyé votre propre code dans lequel j'ai déjà ajouté l'interrupteur. Il suffit de séparer la première ligne des variables entrantes, la seconde ligne de OnTick.

 
Sergey Voytsekhovsky:

Bien sûr, je ne suis pas très adapté au rôle de conseiller, mais la tâche ne semble pas difficile.

Notez que je ne vais pas entrer dans votre code lui-même, il y a beaucoup de controverses, même pour moi (les nuls), à commencer par le fait que votre fonction est de type void. Ce type est utilisé soit pour indiquer que la fonction ne renvoie pas de valeur, soit comme paramètre de fonction indique l'absence de paramètres. Et vous avez return(Exist) à la fin de votre code ;

Déclarez une variable d'entrée, écrivez-la en tant que paramètre de votre fonction et quittez la fonction si vous donnez à cette variable la valeur False.

Le surligné est absolument faux. Personne n'interdit de manipuler des variables déclarées globalement.

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
Bonjour, j'ai modifié toutes les valeurs, mais je suis intéressé par la possibilité de désactiver la fonction elle-même dans les paramètres de l'EA.

Si vous voulez pouvoir désactiver une fonction dans les paramètres de l'EA, vous devez définir un drapeau variable

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
La fonction f() ne sera exécutée que si le drapeau == vrai ;
 
Alexey Viktorov:

C'est absolument faux. Personne n'interdit le traitement des variables déclarées au niveau global.

C'est étrange, il s'agit en fait d'une citation du manuel MQL5, qui ressemble à ceci dans son intégralité :

" Le type void et la constante NULL.

Syntaxe Le type void est un type fondamental, au même titre que les types char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double et string. Ce type est utilisé soit pour indiquer que la fonction ne renvoie pas de valeur, soit comme paramètre de fonction pour indiquer l'absence de paramètres.

Une variable constante prédéfinie NULL est de type void. Il peut être affecté à des variables de tout autre type fondamental sans transformation. La comparaison de variables de types fondamentaux avec la valeur NULL est également autorisée ".


J'ai cité ce fragment parce que la fonction dans le texte de l'auteur est de type void, c'est-à-dire qu'elle ne doit pas retourner autre chose que ".return(Exist) ;". Ce qui est probablement faux, vous ne pensez pas ?

Toutes les discussions sur le traitement des données n'ont même pas été adoptées. Il se peut que je me trompe quelque part, puisque je ne fais qu'apprendre les bases, mais merci quand même pour les informations.

 
 
 
Alekseu Fedotov:

"...return(Exist) ;" ,

valeur de retour, par fonction

comme ceci

Oui, vous avez raison, j'étais inattentif et j'ai attribué ce retour à la fonction précédente (au-dessus de laquelle).

 
Alexey Viktorov:

Ce n'est pas de ça qu'il s'agit... Je n'ai juste pas lu attentivement la partie surlignée.

Le viod en surbrillance signifie qu'il n'y a pas de paramètres. Mais vous n'êtes pas obligé de l'écrire. Pas de paramètres, alors ne...

Oui, tu as raison, j'étais inattentif aussi.

 

Question pour les experts.

J'essaie d'écrire un EA, j'ai trouvé un script qui répond à mes besoins en termes de fonctionnalités. Je veux en faire une fonction, je prépare l'environnement, bien sûr il y a des intersections dans les bibliothèques standard. Je veux comprendre la différence entre ces entrées et savoir si le signe " * " a en soi une signification secrète, est-il possible de les renommer en un seul type dans les futures fonctions ?

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

Aide, comment puis-je trouver la première coordonnée temporelle de la ligne de tendance ?

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ