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

 
Alexey Viktorov:

La chaîne variable x ; ne doit pas être confondue avec le caractère "x".

Je n'ai pas compris la tâche spécifique. Par conséquent, il n'y a pas de réponse spécifique.

Peut-être devriez-vous penser à surcharger les fonctions ?

La situation est telle que je dois créer une fonction universelle function_xy où le programme principal comprendrait que le nom de la variable string object_xy change en fonction des paramètres passés(..., ..., string x, string y). Sinon, plus loin dans le code, dans la fonction_xy(), je devrai épeler manuellement le nom de la variable object_xy.
Par exemple,

void function_xy(..., ..., string x="EURUSD", string y="GBPUSD")
{
...
string object_xy=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
}

Sinon, lors de la création de plusieurs objets graphiques dans function_xy(), je devrai affecter manuellement les paramètres des fonctions graphiques.

void function_xy(..., ...,...)
{
...
string object_EURUSDGBPUSD=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_EURUSDGBPUSD,...,...)
ObjectSet(object_EURUSDGBPUSD,...,...)
ObjectSetText(object_EURUSDGBPUSD,...,...)
...
}

void function_wz(..., ...,...)
{
...
string object_USDCHFUSDJPY=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_USDCHFUSDJPY,...,...)
ObjectSet(object_USDCHFUSDJPY,...,...)
ObjectSetText(object_USDCHFUSDJPY,...,...)
...
}

Il y a jusqu'à 200 fonctions de ce type, pouvez-vous d'une manière ou d'une autre réduire et résoudre ce problème ?
J'espère avoir exprimé ma pensée.



 
Timur1988:

La situation est telle que je dois créer une fonction universelle function_xy où le programme principal comprend que le nom de la variable chaîne object_xy change en fonction des paramètres passés (..., ..., chaîne x, chaîne y). Sinon, plus loin dans le code, dans la fonction_xy(), je devrai épeler manuellement le nom de la variable object_xy.
Par exemple,

Sinon, lors de la création de plusieurs objets graphiques dans function_xy(), je devrai affecter manuellement les paramètres des fonctions graphiques.

Il y a jusqu'à 200 fonctions de ce type, pouvez-vous d'une manière ou d'une autre réduire et résoudre ce problème ?
J'espère avoir exprimé ma pensée.

Il suffit d'écrire un bout de code, qui formera le nom de l'objet en fonction de X et Y, par exemple, en le prenant dans un tableau, par exemple : n=10*x+y. Lorsque x=0 et y=0...9, les 10 premiers éléments seront choisis. Lorsque x=1 et y=0...9, les 10 éléments suivants seront choisis.

 
DOCTORGAD: Existe-t-il un code pour ouvrir une seule transaction avec des contrôles d'erreurs ? Exactement pour de vrai, pas pour le test... Peut comme une fonction, juste une impasse :(

A quoi bon vérifier les erreurs - il faut y réagir ! !! Comment ? Print("Error - ...") - ceci n'est utile que pour le débogage. Et même cela serait mieux que Alert(). Vous devez réagir à une erreur par une pause = retard. Il y avait un article à ce sujet quelque part. Mais où ? Si quelqu'un l'a vu - rappelle-le moi !

 
Timur1988:

La situation est la suivante : j'ai besoin de créer une fonction universelle function_xy, dans laquelle le programme principal comprendrait que le nom de la variable string object_xy change en fonction des paramètres passés (..., ..., string x, string y). Sinon, plus loin dans le code, dans la fonction_xy(), je devrai épeler manuellement le nom de la variable object_xy.
Par exemple,

Sinon, lors de la création de plusieurs objets graphiques dans function_xy(), je devrai affecter manuellement les paramètres des fonctions graphiques.

Il y a jusqu'à 200 fonctions de ce type, pouvez-vous d'une manière ou d'une autre réduire et résoudre ce problème ?
J'espère avoir exprimé ma pensée.





//+------------------------------------------------------------------+
void OnStart()
  {

   function_xy();

  }
//+------------------------------------------------------------------+x1 x2 x3
void function_xy(string x="EURUSD",string y="GBPUSD")
  {
   string object_xy;
  string c = "object_EURUSDGBPUSD";
//Для начала,  склеим переданные в функцию строковые переменные 

   object_xy=StringConcatenate("object_",x,y);
   
   Alert("object_xy = ",object_xy);
   
// Cравниваем
   if(StringCompare(c,object_xy)==0)
     {
      Alert("       Ура получилось ))))))))");
      Alert("object_EURUSDGBPUSD == object_xy");
     }
//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD 
  }
//+------------------------------------------------------------------+

Si je vous comprends bien,

ça donne quelque chose comme ça.

 
Ptichka12: Bonjour, une parenthèse me boit le sang je n'arrive pas à l'appairer (ça donne tout de suite un tas d'erreurs). La parenthèse est sur la première ligne.

C'est une décompilation ? Enlevez-le immédiatement ! C'est interdit ici !!! Interdit...

 
Ptichka12:

Bonjour, une parenthèse me boit le sang je n'arrive pas à l'appairer (ça donne tout de suite un tas d'erreurs). La parenthèse est dans la première ligne.


Vous êtes averti pour avoir publié du code décompilé.
 
Artyom Trishkin:
Vous avez été averti pour avoir posté du code décompilé.

Désolé, je ne le ferai plus...

 
Alexey Viktorov: il doit être complètement réécrit. Qui en a besoin ?

Merci)
Pour éviter la réécriture, vous pouvez peut-être superposer les lignes de tendance sur les segments qui sont >=100pts.

Pouvez-vous me dire comment définir les coordonnées des points de la ligne de tendance pour la tracer du creux au sommet du zigzag -a.

 

Bonjour !

Depuis une quinzaine de jours, je travaille sur un script qui vérifie si les prix dans le tableau sont maintenant.....

Je me suis retrouvé au point mort en cherchant dans le tableau. Pour une raison quelconque, il ne donne pas ce qui est attendu.


int start()
{
   while(!IsStopped())
    {    
      double prmas[5] = {11,22,33,44,99}; // Будем проверять каждую цену, есть ли ордер с такой ценой или нет
         for(int ordsel=0; ordsel<=4;ordsel++) {  // Цикл прохода по ценам в массиве
            for(int nmbr = 0; nmbr < OrdersTotal() ;nmbr++) {   // Проверяем каждую цену по всем ордерам
               int os = OrderSelect(nmbr, SELECT_BY_POS, MODE_TRADES); // Выбираем ордер по порядку цикла
               int maspos = ArrayBsearch(prmas,OrderOpenPrice(),5,0,MODE_ASCEND); //Ищем позицию цены в массиве по текущему проверяемому ордеру
               Alert ("Номер в цикле  ", nmbr, " Выбранный ордер  ", os, " Цена из массива ", prmas[maspos]); //Выводим скорбный результат
               Sleep(10000);  
      }
}
     if(!IsExpertEnabled()) break;
    }
return(nmbr);
}

ça ne donne pas le mauvais...

mandats :



 
Dimitry-1983:

Bonjour !

Pendant quinze jours, j'ai essayé de créer un script qui vérifierait si le prix dans le tableau est maintenant.....

Maintenant je suis coincé sur la recherche de tableau. Pour une raison quelconque, il ne nous donne pas ce que nous attendons.


Tout est correct :

Recherche dans les tableaux

Valeur retournée

Renvoie l'index du premier élément trouvé. Si la valeur recherchée n'est pas trouvée, il renvoie l'index de l'élément le plus proche par valeur, entre lequel se trouve la valeur recherchée.

Vous disposez des prix de commande (ordre par heure de passage)
le premier est 11,00000
le second 22.00000
tiers 0,98020
quatrième 0,98004
cinquième 33,00000

1, 2 et 5 respectivement trouvent correctement, mais pour 2 et 3 la valeur inférieure la plus proche...