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

 
trader781:

réécriture du post 844 pour éviter d'avoir à écrire le code ici à nouveau

Quant au tableau de taille zéro, 0 peut être un entier, l'équivalent d'un falsificateur booléen, un vide ou le point de départ.

Peu importe ce que vous entendez par zéro. Si vous dimensionnez un tableau avec zéro, appelez-le zéro pain d'épice et il sera zéro. Ce qui signifie que le tableau sera égal à zéro.
 
trader781:

réécriture du post 844 pour éviter d'avoir à écrire le code ici à nouveau

Quant au tableau de taille zéro, 0 peut être un entier, l'équivalent d'un falsificateur booléen, un vide ou un point de départ.

Et s'il vous plaît, ne m'obligez pas à insérer le bon code dans le bon post pour vous :

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

Regardez maintenant le tableau que vous remplissez et le champ par lequel vous le triez. Et surtout, pourquoi avez-vous besoin de ce tri ? Quel en est l'intérêt ?

 
Artyom Trishkin:

Et s'il vous plaît, ne m'obligez pas à coller le bon code dans le bon message pour vous :

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

trier le tableau des commandes, dans l'ordre croissant à partir de la valeur zéro

par exemple, si nous avons 20 commandes et que 18 d'entre elles ont accidentellement augmenté de quelques points et que je les ai fermées immédiatement avec mes mains...

 
trader781:

trier le tableau des commandes, dans l'ordre croissant à partir de la valeur zéro

Par exemple, si nous avons 20 ordres et que 18 d'entre eux ont absolument accidentellement augmenté de quelques points, et que je les ai fermés immédiatement avec mes mains.

Si vous avez absolument besoin de trier par ticket, vous devrez faire 2 tableaux. L'un est un tableau de structures et le second est un tableau à deux dimensions qui contient le ticket de commande dans la première dimension, et dans la seconde l'index du compteur, l'index sous lequel les informations de commande sont stockées dans le tableau de structures. Et remplir ces tableaux en même temps dans une boucle.

Vous essayez de résoudre cette question depuis si longtemps que je ne me souviens même plus du but que vous cherchiez à atteindre. Et probablement tous les autres.

Si je me souviens bien, vous devez sélectionner un certain nombre de commandes dans la liste. Alors quel est le problème avec ça ? Il suffit de faire un simple tableau unidimensionnel, de trier les billets, puis de faire orderSelect(array[required], SELECT_BY_TICKET) et c'est tout...alors faites ce que vous voulez avec cette commande.

 
Alexey Viktorov:

Si vous avez absolument besoin de trier par ticket, vous devez créer deux tableaux. Le premier est un tableau de structure et le second est un tableau à deux dimensions qui contient le ticket de commande dans la première dimension et l'index du compteur dans la seconde, l'index sous lequel les informations de commande sont stockées dans le tableau de structure. Et remplir ces tableaux en même temps dans une boucle.

Vous essayez de résoudre cette question depuis si longtemps que je ne me souviens même plus du but que vous cherchiez à atteindre. Et probablement tous les autres.

Si je me souviens bien, vous devez sélectionner un certain nombre de commandes dans la liste. Alors quel est le problème avec ça ? Il suffit de créer un simple tableau unidimensionnel, de le trier, puis d'utiliser orderSelect(array[required], SELECT_BY_TICKET) et c'est tout...Ensuite, vous pouvez faire ce que vous voulez avec cette commande.

Je ne me souviens pas non plus de ce que je dois faire là-bas. Mais la bonne chose est que c'est le cas.

Je lui demande spécifiquement d'écrire une chose au début, puis je lui demande de regarder attentivement ce qu'il a écrit, afin qu'il comprenne lui-même que cela ne fonctionnera pas de cette façon - il a besoin d'un autre tableau local directement dans la fonction, que nous devrons trier et ensuite remplir le tableau global à partir du tableau trié.

 
Alexey Viktorov:

Si vous avez absolument besoin de trier par ticket, vous devez créer deux tableaux. Le premier est un tableau de structure et le second est un tableau à deux dimensions, qui contient le ticket de commande dans la première dimension et l'index du compteur dans la seconde, l'index sous lequel les informations de commande sont stockées dans le tableau de structure. Et remplir ces tableaux en même temps dans une boucle.

Vous essayez de résoudre cette question depuis si longtemps que je ne me souviens même plus du but que vous cherchiez à atteindre. Et probablement tous les autres.

Si je me souviens bien, vous devez sélectionner un certain nombre de commandes dans la liste. Alors quel est le problème avec ça ? Il suffit de faire un simple tableau unidimensionnel, de trier les billets, puis de faire orderSelect(array[required], SELECT_BY_TICKET) et c'est tout...alors faites ce que vous voulez avec cette commande.

Non, je comprends qu'il existe de nombreuses façons de procéder différemment et d'éviter les tableaux. Pourquoi ai-je besoin de 2 si je n'utilise qu'un seul des tableaux ?
 
trader781:
Non, je comprends qu'il existe de nombreuses façons de procéder différemment et de se passer des tableaux. Pourquoi 2 s'il y a une seule structure ?

Parce qu'un tableau simple est trié par les valeurs de la première dimension du tableau, et comment un tableau de structures est trié, je n'en ai aucune idée.

Question intéressante cependant... Je vais maintenant essayer de trier un tableau de structures.

 
Alexey Viktorov:

Parce qu'un tableau simple est trié par les valeurs de la première dimension du tableau, mais comment un tableau de structures est trié, je n'en ai aucune idée.

C'est une question intéressante, mais... Maintenant, je vais essayer de trier un tableau de structures.

Je n'ai aucune idée de ce à quoi ça sert en tant que structure. Le programme mq est écrit dans un seul fichier, le tableau est géré dans un seul défilement, et tient dans un seul écran. Quel est l'intérêt d'une structure dans ce cas, pour l'intérêt sportif ?
 
Alexey Viktorov:

Parce qu'un tableau simple est trié par les valeurs de la première dimension du tableau, mais je n'ai aucune idée de la façon dont un tableau de structures est trié.

Bien que la question soit intéressante... Je vais essayer de trier un ensemble de structures.

Je n'ai aucune idée de ce que c'est ou de ce dont il s'agit.

Mais maintenant que le sujet a été abordé, c'est idiot de le jeter. Il existe également des tableaux de classes.

 
Vitaly Muzichenko:
Je n'ai aucune idée de la raison pour laquelle elle est nécessaire sous la forme d'une structure. Le programme mq est écrit dans un seul fichier, le tableau est géré dans un seul défilement, et tient dans un seul écran. Quel est l'intérêt d'une structure dans ce cas, pour l'intérêt sportif ?

Nous écrivons tout pour le plaisir du sport. D'abord, nous comprenons ce qui fonctionne et comment cela fonctionne, puis nous commençons à réfléchir à la manière de l'écrire plus efficacement.


Quant au tri du tableau de structure : comme je m'y attendais, l'expérience a échoué. Déjà au moment de la compilation, le compilateur a dit"l'expression n'a pas d'effet".

Raison: