Caractéristiques du langage mql5, subtilités et techniques - page 193

 
fxsaber:

Absolument toutes les règles sont artificielles.

Je suis d'accord. La question est le niveau de l'art :)

 

Si vous utilisez un indicateur personnalisé qui a beaucoup de paramètres (disons 50), quelles sont les meilleures façons de gérer les paramètres de l'indicateur ? (sauf transfert direct des paramètres d'un indicateur vers des paires d'experts, tout est clair ici)

J'ai trouvé l'utilisation du chargement de fichiers *.set dans le code de quelqu'un d'autre lors de l'appel à iCustom, mais je n'ai rien trouvé de tel et il semble que cela ne fonctionne pas dans le test.

Peut-être que quelqu'un le sait et qu'il existe des astuces non documentées ?

 

La dernière version est la 2650. C'est normal qu'un script comme celui-ci ne soit pas compilé :

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First,const A_INFO &Second) //operator< has invalid parameters count
{
  return First.a<Second.a;
}

void OnStart()
{
}

Et c'est normal :

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First)
{
  return true;
}

void OnStart()
{
}

Est-ce qu'il s'attend à ce que je compare 1 valeur ? Ou pourquoi l'opérateur ne peut-il pas devenir unestructure non membre ?

 
Et une deuxième question complémentaire. Pourquoi ArraySort ne peut-il pas être appliqué à un tableau de telles structures ? Qu'est-ce qui empêche de les comparer en utilisant l'opérateur <, qui est défini ?
 
traveller00:

Il s'attend à ce que je compare 1 valeur ?

La deuxième valeur (celle à gauche de l'opérateur) est la suivante.

 
fxsaber:

La deuxième valeur (celle qui se trouve à gauche de l'opérateur) est la suivante.

Pourquoi cela si je n'ai pas fait de l'opérateur un membre de la structure, mais globalement ? Ou est-ce que je ne peux pas le rendre global ? Le C++ se comporte différemment.

 
traveller00:

Pourquoi cela, si j'ai fait de l'opérateur un élément global plutôt qu'un membre de la structure? Ou est-ce que je ne peux pas le faire globalement ? Le C++ se comporte différemment.

Je ne sais rien de ces opérateurs.

 
traveller00:
Et la deuxième question de suivi. Pourquoi ArraySort ne peut-il pas être appliqué à un tableau de telles structures ? Qu'est-ce qui les empêche de comparer à travers l'opérateur < , qui est défini ?

La fonction intégrée ArraySort est juste une fonction, surchargée pour tous les types standard.

Les classes et autres OOP sont une aide. Si tous les types (structures) avaient un ancêtre commun(CObject dans SB) et ainsi de suite...

 
Aleksey Mavrin:

La fonction intégrée ArraySort est juste une fonction, surchargée pour tous les types standard.

Les classes et autres OOP sont une aide. Si tous les types (structures) avaient un ancêtre commun (CObject dans SB) et ainsi de suite...

Oui, j'ai une idée approximative de la façon dont cela se passe à l'intérieur. La question n'appelait pas de réponse. Mais comme une suggestion de prêter attention à d'autres variantes de mise en œuvre, par exemple STL, et de gérer les conteneurs d'une manière similaire, où nous pouvons écrire des choses universelles, y compris des trieurs.

 
traveller00:

J'ai une idée approximative de comment c'est fait à l'intérieur. La question n'a pas été posée dans le but d'obtenir une réponse. Mais je suggère de prêter attention à d'autres variantes de mise en œuvre, par exemple STL, et de travailler de la même manière avec les conteneurs, où nous pouvons écrire des choses universelles, y compris des trieurs.

Sans aucun doute, STL pour sûr) Alors que ArraySort peut être surchargé en le rendant basé sur des modèles et en l'utilisant ensuite, mais je ne suis pas un spécialiste des modèles, j'ai l'habitude de travailler avec des hiérarchies de classes simples.