Un EA peut-il surveiller et négocier plusieurs paires de devises à partir d'un seul graphique ? - page 2

 
angevoyageur:

Si vous ne voulez pas répondre à sa question, ne répondez pas, c'est simple. Pas besoin d'offenser les gens.

Et croyez-moi, c'est possible pour moi aussi, si je publiais tout ce que je veux publier, j'aurais 1000 points d'évaluation de plus, au moins.



s'il avait fait quelques recherches et regardé dans Code Base alors il aurait trouvé par exemple https://www.mql5.com/en/code/11176

et vous pouvez trouver d'autres exemples de ce type la façon dont il demande maintenant me semble, et je suppose que d'autres le pensent aussi

qu'il ne fait pas assez d'efforts pour apprendre à coder et qu'il veut que d'autres codent pour lui afin d'obtenir des exemples sur la façon de trader un EA sur différents symboles

sans faire aucune tentative lui-même...

Comme CodeMonkey a écrit à xennon

'Le problème ici n'est pas que cela ne peut pas être fait, c'est que vous n'avez même pas pris la peine d'essayer de le faire. '

.

si xennon fait ces réponses qu'il n'aime pas, alors c'est aussi sa façon de réagir de la mauvaise manière.

Je pense que vous comprenez la situation comme je la vois...

 
deVries:


s'il avait fait quelques recherches et regardé dans Code Base alors il aurait trouvé par exemple https://www.mql5.com/en/code/11176

et vous pouvez trouver d'autres exemples de ce genre la façon dont il demande maintenant me semble et je suppose que d'autres le pensent aussi

qu'il ne fait pas assez d'efforts pour apprendre à coder et qu'il veut que d'autres codent pour lui afin d'avoir des exemples sur la façon de trader un EA sur différents symboles

sans faire aucune tentative lui-même...

Comme CodeMonkey a écrit à xennon

'Le problème ici n'est pas que cela ne peut pas être fait, c'est que vous n'avez même pas pris la peine d'essayer de le faire. '

.

si xennon fait ces réponses qu'il n'aime pas, alors c'est aussi sa façon de réagir de la mauvaise façon.

Je pense que vous comprenez la situation comme je la vois...

Bien sûr, je suis d'accord.

Mais je suis également d'accord pour dire que si quelqu'un répond, il n'est pas nécessaire d'offenser le PO (ou tout autre utilisateur). Je pense que ce forum a besoin d'une meilleure atmosphère.

 
deVries:

xennon: est inscrit depuis janvier 2012 et vient maintenant ici avec cette question ? ??

Il me semble qu'il est temps pour lui de faire des recherches en lisant et en apprenant.

s'il veut faire cet EA alors il doit venir avec sa tentative s'il a des problèmes pour le faire

c'est possible .... après plus de 2 ans il le sait maintenant pour sûr


Ouais, 2 ans, et alors ? ! Cela ne veut pas dire que j'ai été activement impliqué dans MQL, n'est-ce pas ? - En fait, mon expérience collective avec MQL est probablement inférieure à un mois, TOTAL. Je vous suggère soit de contribuer à quelque chose de positif et d'utile, soit d'en parler. Quelle déclaration stupide et idiote à faire.
 
xennon:

Ouais, 2 ans, et alors ? ! Cela ne veut pas dire que j'ai activement joué avec les MQL, n'est-ce pas ? - En fait, mon expérience collective avec MQL est probablement inférieure à un mois, TOTAL. Je vous suggère de contribuer à quelque chose de positif et d'utile, ou xxx. Quelle déclaration stupide et idiote à faire.

Je vous ai déjà conseillé de surveiller votre langage. C'est mon dernier avertissement.

Merci.

 
xennon:

Ouais, 2 ans, et alors ? ! Cela ne veut pas dire que j'ai été activement impliqué dans MQL, n'est-ce pas ? - En fait, mon expérience collective avec MQL est probablement inférieure à un mois, TOTAL. Je vous suggère soit de contribuer à quelque chose de positif et d'utile, soit d'en parler. Quelle déclaration stupide et idiote à faire.


l'exemple de codebase que j'ai cité ? ??? https://www.mql5.com/en/forum/149766/page2#915892

 
xennon:

Je me demande s'il est possible d'avoir un seul EA fonctionnant sur n'importe quelle paire de devises, mais qu'il surveille plusieurs paires de devises et réponde aux déclencheurs lorsqu'ils surviennent dans chaque paire.

Essentiellement, je veux un EA qui interroge toutes les paires qui m'intéressent, teste des critères préconfigurés sur chacune d'elles et réponde par des achats/ventes/fermetures/alertes selon les besoins.

Je pense que cela ne peut pas être fait, mais je serais intéressé d'entendre si quelqu'un a des idées sur la façon de réaliser ceci sans avoir à ouvrir beaucoup de graphiques et à appliquer l'EA à chaque graphique séparément principalement dans l'intérêt de l'efficacité (mieux d'avoir un bloc de code au lieu d'une douzaine ?).


Merci.


Je parierais sur un tableau de chaînes de caractères pour les symboles, puis sur une boucle pour tous les symboles intéressants.

Quelque chose comme

string nameArray[]={"EURUSD","...","USDJPY"};

puis

for(x=numberOfSymbols;x>=0;x--)
   {
   string symbol=nameArray[x];
   CustomCondition(symbol)
   ....
   .....
//or something like that
 
xennon:

Je me demande s'il est possible d'avoir un seul EA fonctionnant sur n'importe quelle paire de devises, mais qu'il surveille plusieurs paires de devises et réponde aux déclencheurs lorsqu'ils surviennent dans chaque paire.

Essentiellement, je veux un EA qui interroge toutes les paires qui m'intéressent, teste des critères préconfigurés sur chacune d'elles et réponde par des achats/ventes/fermetures/alertes selon les besoins.

Je pense que cela ne peut pas être fait, mais je serais intéressé d'entendre si quelqu'un a des idées sur la façon de réaliser cela sans avoir à ouvrir beaucoup de graphiques et à appliquer l'EA à chaque graphique séparément, principalement dans l'intérêt de l'efficacité (mieux d'avoir un bloc de code au lieu d'une douzaine ?)


Merci.

Bonjour xennon,

La réponse courte à votre question est oui.

J'ai pensé faire quelque chose de similaire, mais je n'ai pas encore codé quoi que ce soit. Je vais donc vous donner les grandes lignes de la structure du code, mais pas les détails, car il serait probablement préférable que vous recherchiez vous-même comment coder chaque partie et que vous vous référiez à la base de code et à d'autres sources comme exemples de codage. Bien que la base de code puisse être déroutante si vous n'êtes pas familier avec le codage, car certaines terminologies peuvent être difficiles à suivre.

De plus, comme mon idée n'a pas encore été testée ou mise en œuvre, il y a peut-être de meilleures façons de la coder ou des bugs que je n'ai pas prévus, car je ne suis pas un maître codeur, loin de là, et je suis assez rouillé en général, donc si quelqu'un a des suggestions, je suis tout ouïe et s'il y a des erreurs, ne me descendez pas.

L'idée générale est d'utiliser l'événement timer milliseconde car l'événement OnTick ne fonctionnera que pour le graphique auquel il est attaché. Les ticks pour les autres paires de devises ne généreront pas d'événement tick et l'EA ne fonctionnera pas mais l'événement timer milliseconde peut se déclencher plusieurs fois par seconde et surveiller les changements de prix. Utilisez également trois tableaux, un pour stocker les chaînes des symboles que vous souhaitez utiliser et un autre pour stocker les données de prix.

Je vais essayer de l'expliquer un peu. Le tableau nameArray stockera chaque symbole sous forme de tableau mais, plus important encore, l'élément du tableau peut être utilisé pour définir la position des deux autres tableaux, car ils ne peuvent pas utiliser une chaîne pour localiser une position dans un tableau, mais la valeur de l'index le peut. Comme les ticks de chaque symbole sont reçus à des moments différents, les données écrites dans le tableau PriceArray ne le seront pas toutes en même temps, car certains symboles sont plus actifs à des moments différents. Le deuxième tableau stocke donc l'index du tableau PriceData afin qu'il puisse être écrit rapidement sans écraser les données de prix antérieures. Le troisième tableau écrira les données de prix nécessaires dont vous avez besoin.

Le code est une combinaison de code et d'anglais avec ce qui doit être ajouté. Il est très simple mais devrait vous fournir un point de départ pour votre idée. Il y a de nombreuses lacunes telles que le moment où il faut traiter les tableaux lorsqu'ils atteignent la fin, mais cela fait partie de la courbe d'apprentissage. Je vous suggère de faire fonctionner le code avec un symbole, puis deux, et ainsi de suite pour vous permettre d'identifier et de corriger les éventuels bugs du code. Comme je l'ai dit, il ne s'agit que d'une ébauche, utilisez-la comme telle et des améliorations sont possibles. Par exemple, vous pouvez utiliser un type de données Struct ou un objet à la place des trois tableaux pour stocker les données du tick, mais cette conception est un peu plus simple pour commencer et vous pourrez étudier les structures et la programmation orientée objet à un stade ultérieur du codage.

J'ai essayé d'être clair mais cela peut être très déroutant pour vous, donc si vous avez d'autres questions sur la clarté, faites-le moi savoir et je vous aiderai si je peux, mais malheureusement je n'ai pas le temps de coder quelque chose comme ça.

Voici le pseudo code,

// OnInit ()
    {
     string nameArray[]={"EURUSD","...","USDJPY"};                         // As suggested by thrdel. Creates an array with currency pairs
     int TicksRecorded [#  of symbols monitored];                           // Records the required position in the PriceData array to write the next tick data to for each symbol
     double PriceData [#  of symbols monitored][Ticks][data to record];     // Stores price data for each symbol required for as many ticks as required

     Create the timer and set an appropriate interval
     Open a file to save data if required for future use
     
     for (x=0; x < #  of symboels; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {                                                               // Also adapted from thrdel's code example
            PriceData [x][0][0] = Ask;
            PriceData [x][0][0] = Bid;
            ... whatever else you want to record
           }

// EventSetMillisecondTimer()
    {
     Refresh all price data for all symbols
     for (x=0; x < #  of symbols; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {
            if ((current Ask != to previously recorded Ask for that x) or (current Bid != to previously recorded Bid for that x)... and every other price data you want)
                {
                 TicksRecorded [x]++;                                    // Increments the position in the PriceData array holding the latest tick data for that symbol
                 PriceData [x][TicksRecorded[x]][0] = Ask;
                 PriceData [x][TicksRecorded[x]][1] = Bid;
                 ... and whatever else you want to record
                 Flag to indicate a new tick has been received set to true
                }
            if (new data)
                {
                 Set new data flag to false
                 Do custom action
                }
           }
     }

// OnDeinit ()
     {
      Kill the timer
      Save data to a file if required
     }
 

J'utilise simplement des variables globales pour permettre à mon ea de surveiller/effectuer des transactions à partir d'un seul graphique.

Il faut cependant que votre ea soit un peu plus robuste et ne soit pas spécifique à un seul graphique.

 

Pourquoi la formule suivante ne fonctionnerait-elle pas ?


if (this is true){

ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,0,"",0,0,Red) ;

ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,0,Green) ;

ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green) ;

}


pops une erreur 4106 symbole inconnu

 
Daniel Laverdiere: Pourquoi ce qui suit ne fonctionnerait-il pas ?

si (ceci est vrai){

ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,0,"",0,0,Red) ;

ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,0,Green) ;

ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green) ;

}


pops une erreur 4106 symbole inconnu

  1. Lorsque vous postez du code, veuillez utiliser le bouton SRC !

  2. Si le modèle de dénomination de vos graphiques n'est pas exactement"BasQuo", cela ne peut pas fonctionner.

  3. Ne traitez pas plusieurs devises dans un seul EA.