Sélectionnez un symbole dans les paramètres - page 3

 
Alexey Viktorov:

Remplir un tableau de caractères et travailler avec le tableau.

Voici un EA gratuit utilisant le morceau de code ci-dessus ***


ps ; drubashka, vous auriez dû supprimer le lien. Parmi mes produits sur le marché, seuls DEUX sont payants. L'un de 2017 a été loué 4 fois, et l'autre de 2014 pour 10 livres n'a pas été acheté une seule fois. Il n'y a donc pas de publicité à attendre ici.

Je ne sais pas pourquoi j'ai rejoint ce fil de discussion - maintenant je me débats, et ça ne marche pas. Je cherche toujours un moyen de le faire fonctionner.

Je ne sais pas, peut-être que ça va marcher.

struct translate{
   string EURUSD;
   string GBPUSD;
   string USDCHF;
   string USDJPY;
   string USDCAD;
   string AUDUSD;
   string AUDNZD;
   string AUDCAD;
   string AUDCHF;
   string AUDJPY;
   string CHFJPY;
   string EURGBP;
   string EURAUD;
   string EURCHF;
   string EURJPY;
   string EURNZD;
   string EURCAD;
   string GBPCHF;
   string GBPJPY;
   string CADCHF;
};
translate langs;
 
Aleksandr Klapatyuk:

Je ne sais pas pourquoi je suis venu sur ce fil de discussion - maintenant je me débats et je n'arrive pas à le faire fonctionner.

Je ne sais pas, peut-être que ça va marcher.

Vous perdez votre temps. Vous ne pourrez pas remplir la structure ou l'enum de manière programmatique. Et le tableau ne peut être utilisé que pour un EA multi-devises. L'EA multidevise n'est pas celui qui peut être placé sur n'importe quel symbole, mais celui qui peut négocier plusieurs symboles tout en étant sur un des graphiques. Dans ce lien, vous pouvez voir un exemple d'un tel EA multi-devises. La sélection des devises peut être réglée sur l'une des trois options suivantes :

  1. seule la paire sur laquelle se trouve le conseiller expert sera négociée.
  2. une liste de devises séparées par des virgules qui seront négociées
  3. toutes les paires ouvertes au moment du lancement du Conseiller Expert sont négociées
Mais les options sont sélectionnées via l'enum
 
Alexey Viktorov:

Vous ne devriez pas faire ça. Ni la structure ni l'enum ne peuvent être remplis de manière programmatique. Et le tableau ne peut être utilisé que pour un EA multidevises. L'EA multidevise n'est pas celui qui peut être réglé sur n'importe quel symbole, mais celui qui se trouve sur un des graphiques et peut négocier plusieurs symboles. Vous trouverez dans ce lien un exemple d'un tel EA multidevises. La sélection des devises peut être réglée sur l'une des trois options suivantes :

  1. uniquement la paire sur laquelle le conseiller expert est négocié.
  2. une liste de devises séparées par des virgules qui seront négociées
  3. toutes les paires de devises ouvertes au moment du lancement du Conseiller Expert sont négociées
Mais les options sont sélectionnées via l'enum

Merci ! J'ai commencé à faire quelque chose que je ne peux pas me permettre. Je préfère apprendre quelque chose de plus facile.

J'ai déjà fait cela auparavant - tout a fonctionné.

string         Symb[3]={"EURUSD","GBPUSD","EURJPY"};
double         prPos[3];
------------------------------------------------------------
   for(int i=0;i<3; i++)
      if(PositionSelect(Symb[i]))
        {
         prPos[i]=(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n;
        }
      else
        {
         prPos[i]=0;
        }
 
Aleksandr Klapatyuk:

Merci ! Je fais quelque chose que je ne sais pas faire. Je préfère apprendre quelque chose de plus facile.

C'est comme ça que j'ai fait - ça a marché.

C'est la deuxième option que j'ai décrite. Échangez les devises de la liste préparée dans une ligne séparée par des virgules. Mais ma version est un peu différente. La liste ressemble à ceci

"EURUSD,GBPUSD,EURJPY"

alors le tableau est rempli à partir de cette liste et le tableau est utilisé. En outre, le suffixe de la devise est défini et joint automatiquement lors duremplissage du tableau. Ceci afin d'éviter de devoir retaper la liste dans différents comptes.

 
Alexey Viktorov:

Nous ne parlons pas de la même chose.

simv

syTotal = SymbolsTotal(true) semble toujours être 1, parce que si true, SymbolTotal() ne montrera pas le nombre de symboles dans Market Watch, mais le nombre de symboles sélectionnés dans Market Watch et cela soulève la question de savoir comment avancer dans la liste avant de sélectionner l'élément suivant.

 
andre:


syTotal = SymbolsTotal(true) semble toujours être 1 parce que si true SymbolTotal() ne donne pas le nombre de symboles dans Market Watch, mais le nombre de symboles sélectionnés dans celui-ci et cela pose la question de savoir comment parcourir la liste avant de sélectionner l'élément suivant.

Dans le testeur, oui, il y a toujours un symbole. C'est pourquoi il y a un avertissement dans la description de l'EA, indiquant que dans le testeur vous ne pouvez tester que sur un symbole ou sur une liste de symboles.

 
Malheureusement, pour le rendre agréable, vous devez dessiner vous-même le panneau de saisie, mettre en place une liste déroulante, en général, rien de fondamentalement compliqué, mais trouble. Si la religion et/ou le client le permettent, il est plus facile de l'implémenter sur Sharp, par le biais de windowsform. Quant à la possibilité technique de le faire dans le panneau standard, je ne vois pas de problème de principe, c'est plus une question de volonté des créateurs. Il est possible d'implémenter la sélection de valeurs, pour le compilateur seulement nous devrions introduire des mots-clés supplémentaires, pour écrire comme : __declsymb input string value=__default(ou __pos1), en général les développeurs du compilateur/terminal doivent le développer.
 
Vladimir Simakov:
Malheureusement, pour le rendre agréable, vous devez dessiner vous-même le panneau de saisie, mettre en œuvre une liste déroulante, en général, rien de fondamentalement compliqué, mais trouble. Si la religion et/ou le client le permettent, il est plus facile de l'implémenter sur Sharp, par le biais de windowsform. Quant à la possibilité technique de le faire dans le panneau standard, je ne vois pas de problème de principe, c'est plus une question de volonté des créateurs. Il est possible d'implémenter la sélection de valeurs, pour le compilateur seulement nous devrions introduire des mots-clés supplémentaires pour écrire comme : __declsymb input string value=__default(or __pos1), en général les développeurs du compilateur/terminal doivent le développer.

Eh bien, oui. Si vous utilisez dll, vous pouvez jouer aux tanks sur le terminal. Mais le problème a été soulevé sans prendre en compte les capacités de dll

 
Alexey Viktorov:

Eh bien, oui. Si vous utilisez la dll, vous pouvez également jouer aux tanks sur le terminal. Mais le problème a été soulevé sans tenir compte des capacités de la dll.

Ensuite, vous pouvez soit prier les créateurs, soit écrire votre propre panneau d'entrée. Au démarrage du robot (plus compliqué avec l'indicateur), dans OnTimer(), on démarre le panneau d'entrée auto-écrit, on entre les données, puis le robot se met au travail. C'est comme ça.
 
Vladimir Simakov:
Ensuite, vous pouvez soit prier les créateurs, soit écrire votre propre panneau d'entrée. Lorsque le robot démarre (ce qui est plus compliqué avec l'indicateur), le panneau de saisie auto-écrit est lancé dans OnTimer(), les données sont saisies, puis le robot commence à fonctionner. C'est comme ça.

Il faut d'abord se demander : "Qui en a besoin ?"

J'aimerais l'essayer mais cela n'a pas fonctionné. J'ai dit au conseiller expert que cela ne peut pas être fait en utilisant MQL. Mais personne ne lui a demandé comment le faire en utilisant d'autres moyens. Quel est l'intérêt de toutes ces bêtises ? Il y a suffisamment de personnes ici qui peuvent dessiner des dessins humoristiques sur la carte du terminal.