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

 
Anatoliy Markov #:

Merci de votre participation. L'énoncé de mission est clair pour moi. Je suis coincé avec l'implémentation...

J'ai essayé avec les commentaires. Jusqu'au deuxième groupe, il numérote correctement. Au troisième, il en retourne un pour le commentaire, bien que le premier groupe soit encore sur le marché. L'idée n'est pas de multiplier les numéros, mais de prendre ceux qui sont vacants. J'espère l'avoir expliqué clairement).

Pas tout à fait clair, mais utilisez quand même le bouton pour insérer du code


ou ALT+s

 
void OnTick()
{
  //---
    
    for(int a=1; a<10; a++)
     {
       comment="";
       for(int i=0; i<OrdersTotal(); i++)
         {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
               {    
                  if (OrderComment()==IntegerToString(a)) continue; 
                  else
                  {
                   comment=IntegerToString(a);
                   break;                  
                  } 
               }
            } 
         } 
        if(comment!="") break; 
     }
    if (CountOfBuy(magic)<1 && CountOfSell(magic)<1) comment="1";
  //---
}
Да, так более информативно. Т.е. этот незамысловатый модуль должен давать коммент для 
последующего присвоения ордеру. Когда открыта группа с комментом 1, он дает коммент 2 (это правильно). 
Когда открыта 2-я группа, опять дает 1. Не могу понять.
 

Bonsoir à tous !

J'ai écrit une fonction qui détermine si un ordre en attente est déjà fixé, mais la fonction ne fonctionne pas pour une raison quelconque. Pouvez-vous nous dire où se trouve l'erreur ? Sincèrement, Vladimir.

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике уже установлен отложенный    |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции с типом данных bool, чтобы хранить          |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return false; // поэтому возвращаем ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чья-то чужая позиция, поэтому возвращаем ложь
  }
 
MrBrooklin un ordre en attente est déjà fixé, mais la fonction ne fonctionne pas pour une raison quelconque. Pouvez-vous nous dire où se trouve l'erreur ? Sincèrement, Vladimir.

J'AI TROUVÉ L'ERREUR MOI MÊME !!!

Voici un code qui fonctionne normalement. Peut être utile pour quelqu'un. Salutations, Vladimir.

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return true; // поэтому возвращаем значение истина
      else // в противном случае
         return false; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
 

Veuillez me conseiller sur la manière de m'organiser ou sur le chemin à suivre :

Ici, afin de ne pas effectuer le calcul des barres, les tampons ont été inventés. À chaque nouveau tick, seule la dernière barre est vérifiée (si je comprends bien). Lorsqu'une nouvelle barre apparaît, le calcul ne commencera qu'avec cette barre.

Grâce au tampon, les lignes ne sont pas redessinées sur l'ensemble de l'historique, mais un segment supplémentaire est ajouté au dernier bord. Il y a 8 tampons au total.

Que faire si je dois effectuer un calcul une centaine de fois (disons 100 fois pour tracer une ligne, en ne changeant qu'une seule variable), puis dessiner le meilleur résultat. Et à un nouveau tic ou minuteur, faites la même chose, mais avec l'"historique" existant des résultats (dessins). Où et comment puis-je stocker ces informations, afin de ne pas avoir à recalculer tout l'historique ?

Ou, plus simplement, comment augmenter le nombre de tampons dans l'indicateur ? Peut-être les écrire séparément dans un fichier ? Ce qui est mieux
 
Ivan Butko #:

Veuillez me conseiller sur la manière de m'organiser ou sur le chemin à suivre :

Ici, afin de ne pas effectuer le calcul des barres, on a inventé les tampons. À chaque nouveau tick, seule la dernière barre est vérifiée (si je comprends bien). Lorsqu'une nouvelle barre apparaît, le calcul ne commencera qu'avec cette barre.

Grâce au tampon, les lignes ne sont pas redessinées sur l'ensemble de l'historique, mais un segment supplémentaire est ajouté au dernier bord. Il y a 8 tampons au total.

Que faire si je dois effectuer un calcul une centaine de fois (disons 100 fois pour tracer une ligne, en ne changeant qu'une seule variable), puis dessiner le meilleur résultat. Et à un nouveau tic ou minuteur, faites la même chose, mais avec l'"historique" existant des résultats (dessins). Où et comment puis-je stocker ces informations, afin de ne pas avoir à effectuer ces calculs sur l'ensemble de l'historique ?

Ou, pour dire les choses plus simplement, comment augmenter le nombre de tampons dans un indicateur ? Peut-être écrire séparément dans un fichier ? Quelle est la meilleure façon de

Les indicateurs ont 512 tampons.

 
Artyom Trishkin #:

Il y a 512 tampons dans les indicateurs.

Oh, wow. Merci. J'ai dû chercher au mauvais endroit. Je vais continuer à essayer.

 
MrBrooklin #:

ERREUR TROUVÉE PAR MOI-MÊME !!!

Voici un code qui fonctionne normalement. Peut être utile pour quelqu'un. Salutations, Vladimir.

Ça ne sera utile à personne. Il y a de grosses erreurs dans votre code. Et il n'y a aucun sens à les corriger.

Vous ne prenez même pas la peine d'apprendre les bases de la langue et d'essayer d'écrire quelque chose.

Soit vous le prenez au sérieux, soit vous l'abandonnez.

 
Koldun Zloy #:

Personne ne peut l'utiliser. Il y a de grosses erreurs dans votre code. Et il ne sert à rien de les corriger.

Vous ne prenez même pas la peine d'apprendre les bases de la langue, et vous essayez d'écrire quelque chose.

Soit tu deviens sérieux, soit tu abandonnes.

Bonjour ! Oui, vous avez tout à fait raison. Nous devons abandonner cette activité inutile d'aller au

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

et attendre de l'aide ici.

Salutations, Vladimir.

 
MrBrooklin #:
Bonjour ! Oui, vous avez tout à fait raison. Vous devez arrêter cette activité inutile, qui consiste à postuler à la

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

et attendre de l'aide ici.

Sincèrement, Vladimir.

Tu as raison, abandonne.

Vous n'avez même pas compris ce que j'ai écrit en russe.

Pourquoi voulez-vous vous lancer dans la programmation ?

Raison: