[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 425

 
Sepulca:

Des paires de devises différentes fonctionneront, même s'il s'agit du même EA. Il n'y en a certainement qu'un seul sur un tableau. Mais sur différents graphiques de la même paire de devises, je ne sais même pas......
Je suis désolé, mais je ne peux pas le comprendre, c'est directement dans la commande, si ce n'est pas difficile d'expliquer plus en détail ....
datime exp=iTime(Symbol(),PERIOD_D1,0)+23*60*60+59*60;
 

Je dois changer le stop loss en pips pour le stop loss du chandelier précédent.

Voici le code, comment le mettre ici.

Merci beaucoup pour les conseils.

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
Dossiers :
 

Pro guys, please advise : J'ai acheté un EA ($300) sur un site web et je l'ai installé selon les instructions du vendeur, mais lorsque je l'ai testé sur l'historique du compte, il affiche zéro profit et perte ou indique que quelque chose ne va pas (bien qu'encore une fois, je l'ai installé en suivant strictement les instructions). D'ailleurs, après l'installation, le conseiller expert était grisé parmi les conseillers gratuits, comme s'il était inactif. Tous les autres étaient de couleur : des visages jaunes dans un chapeau bleu. J'ai déplacé le conseiller expert sur un compte de démonstration. Tout est comme il se doit : visage souriant, ordinateur allumé. Je me suis plaint au vendeur et il m'a écrit : "1) La couleur grise est le code fermé, pas le code source .2) mon conseiller expert ne négocie pas souvent, il faut donc attendre le signal". Pouvez-vous me dire si je dois attendre ? Est-ce même possible ou est-ce une arnaque stupide ?

 
vpogarcev:

Je me suis plaint au vendeur et il m'a écrit : "1) la couleur grise est le code fermé, pas le code source .2) Le conseiller expert ne négocie pas souvent, il faut donc attendre le signal". Pouvez-vous me dire si je dois attendre ? Est-ce même possible ou est-ce une arnaque stupide ?


1) Oui, l'EA est grise car il n'y a pas de code source ;

Qui sait si cela vaut la peine d'attendre ? Les médiums sont en vacances.

 
vpogarcev:

Pro guys, please advise : J'ai acheté un EA ($300) sur un site web et je l'ai installé selon les instructions du vendeur, mais lorsque je l'ai testé sur l'historique du compte, il affiche zéro profit et perte ou indique que quelque chose ne va pas (bien qu'encore une fois, je l'ai installé en suivant strictement les instructions). À propos, après l'installation, le conseiller expert était gris parmi ses homologues gratuits, comme s'il était inactif. Tous les autres étaient de couleur : des visages jaunes dans un chapeau bleu. J'ai déplacé le conseiller expert sur un compte de démonstration. Tout est comme il se doit : visage souriant, ordinateur allumé. Je me suis plaint au vendeur et il m'a écrit : "1) La couleur grise est le code fermé, pas le code source .2) mon conseiller expert ne négocie pas souvent, il faut donc attendre le signal". Pouvez-vous me dire si je dois attendre ? Est-ce même possible ou est-ce une arnaque stupide ?


Au mieux, on vous a peut-être vendu un EA qui ne rapportera bientôt plus rien.
 
FAQ:


Dans ce cas, lorsque vous supprimez par exemple l'objet 18, 19 prend sa place, 19=>18, c'est-à-dire que vous obtenez automatiquement une itération inverse. Utilisez-le également pour les commandes.

De plus, étant donné que la liste des objets et les ordres sont formellement des tableaux commençant à = 0, l'indice maximal sera inférieur d'une unité à la taille du tableau :

Votre dernière réflexion m'a conduit aux considérations suivantes... Supposons que nous ayons une fonction deinit() de la forme suivante :

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

Supposons qu'il n'y ait que 3 objets dans le terminal client, dont le 1er et le 2e correspondent aux conditions de suppression définies dans la fonction deinit(). Par conséquent, ils seront indexés 0 et 1 respectivement. Ensuite, à la première itération, la variable k prendra la valeur 0 et la fonction ObjectDelete(0) supprimera l'objet correspondant. De plus, comme la liste des objets est formellement un tableau, après avoir supprimé l'un des objets, les objets restants seront réindexés (un peu comme si on formait une nouvelle barre et qu'on réindexait toutes les barres actuellement présentes dans le terminal client) : alors l'objet qui était indexé numéro 1 (l'objet qui doit aussi être supprimé par convention) aura l'index 0, et l'objet qui avait l'index 2 aura l'index 1. Après avoir supprimé l'objet numéro 0 à la 1ère itération, le contrôle sera donné à la chaîne de caractères

for(int k=0; k<Quant_Objects; k++)

pour exécuter l'expression k++. La variable k prendra la valeur 1 et comme la valeur de la variable Quant_Objects est 3, les conditions de l'opérateur for (k<Quant_Objects) sont vraies et la 2ème itération sera exécutée. Mais à cette itération, il n'y aura pas de suppression d'objet car l'objet d'indice 1 (précédemment 2) ne remplit pas les conditions de suppression. Mais il s'avère que, puisque la réindexation des objets a eu lieu après la suppression du premier objet, le deuxième objet (qui, par condition, aurait également dû être supprimé) a "sauté" l'opération de suppression, car au moment où la variable k était égale à 1, l'indice de cet objet a été réindexé et est devenu 0. C'est ce que signifiait la phrase "Notez séparément que vous ne pouvez pas supprimer des objets dans la première boucle for, car dans ce cas, après chaque suppression, le nombre total d'objets et leur numérotation changeront, et certains noms d'objets seront donc ignorés".

Ai-je bien compris, ou y a-t-il une erreur dans mon raisonnement ?

Note: la fonction deinit() fait référence à la phrase "Notez séparément que nous ne devons pas supprimer les objets dans la première boucle for, car dans ce cas, après chaque suppression, le nombre total d'objets et leur numérotation changeront, de sorte que certains noms d'objets seront ignorés":

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

P.S. Merci d'avance pour votre réponse.

 
7777877:

Votre dernière réflexion m'a conduit aux considérations suivantes... Supposons que nous ayons une fonction deinit() du type suivant :

Ai-je bien compris ou me suis-je trompé dans mon raisonnement ?


Vous avez raison.

En général, il est préférable d'utiliser la réduction d'index dans les boucles où il y a des suppressions :

int deinit()                           // Спец. функция deinit()
  {
   for(int k=ObjectsTotal()-1; k>=0; k--)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
         ObjectDelete(Obj_Name);
     }
   return;                             // Выход из deinit()
  }
 
oui
 

Messieurs, en utilisant OrderSelect(), vous pouvez facilement trouver le prix d'ouverture d'un ordre. Peut-on utiliser les cotations sur le graphique pour savoir s'il y a un ordre à un certain prix ou rien à ce stade ? Il est très ennuyeux de parcourir tous les ordres sur chaque cotation dans le graphique (surtout s'il y en a beaucoup) pour savoir si quelque chose est là ou non avec ce prix. Pouvez-vous m'envoyer le code s'il existe ?

 
rosomah:

Messieurs, en utilisant OrderSelect(), nous pouvons facilement trouver le prix d'ouverture de l'ordre. Peut-on utiliser les cotations sur le graphique pour savoir s'il y a un ordre à un certain prix ou rien à ce stade ? Il est très ennuyeux de parcourir tous les ordres sur chaque cotation dans le graphique (surtout s'il y en a beaucoup) pour savoir si quelque chose est là ou non avec ce prix. Pouvez-vous m'envoyer le code s'il existe ?

C'est inconfortable de mettre le pantalon sur la tête © Les gens disent.

Ce n'est pas vous qui faites semblant, c'est l'algorithme. Si vous êtes si indigent, vous pouvez transformer tous ces éléments en une seule fonction qui vous donnera les résultats dont vous avez besoin sur demande. Mais dans le corps de la fonction, vous devez encore écrire le code qui recherchera les positions une par une.