trier un tableau à deux dimensions par la deuxième dimension - page 2

 

Hey Gordon, merci pour l'info, en lisant ce code, je me suis souvenu que j'avais déjà un bout de code qui boucle dans le panier pour trouver la transaction la plus perdante, je pourrais l'utiliser couplé avec un clone de celui-ci inversé pour trouver le plus grand gagnant, si le gagnant est plus grand que le perdant, alors je peux fermer chacun d'eux. Cela fonctionnera pour ce dont j'ai besoin. Parfois, juste dormir dessus est le meilleur générateur de code de tous. Mince, je pourrais probablement coder ça en une nuit. Pas beaucoup de modifications. Je n'ai pas besoin de les fermer tous en même temps. Nous le faisons la première fois, puis au prochain tick ou à la prochaine bougie, nous pouvons le refaire, ou comme je le disais avant, j'ai une autre fonctionnalité qui se déclenche en même temps et quelque chose comme ça serait pratique. Je peux simplement l'intégrer dans le codage de cette fonctionnalité.

Merci de m'avoir ouvert les yeux, Gordon.

 

Si vous voulez trier les tableaux par prix, pourquoi ne pas charger le prix dans la première dimension et le billet dans la deuxième dimension......, puis vous pourrez les trier de la manière habituelle.

 

Oui, j'y ai déjà pensé. Ensuite, il suffit de copier les données dans un autre tableau en disposition inversée pour les trier dans l'autre sens. Ce que j'ai décidé de faire était beaucoup plus simple et répondait mieux à mes besoins. En gros, je boucle sur les transactions ouvertes et je trouve le plus grand gagnant et le plus grand perdant qui est inférieur au plus grand gagnant, puis je les ferme tous les deux. Au prochain tick ou bougie, le processus est répété. C'est très bien.

 
gordon:

Peu importe comment vous voulez l'appeler, la première dimension d'un tableau 2D est le vecteur arr_name[0,1,...,n][0], donc techniquement la première parenthèse contient la première dimension ; c'est aussi le vecteur qui sera trié par ArraySort(). Extrait du livre :

Tant que nous sommes sur le sujet de ArraySort(), je vais mentionner 2 particularités non documentées que j'ai trouvées au fil du temps (et je serais heureux que quelqu'un me confirme ou me corrige... ?):

  1. Si certains des éléments de la première dimension sont identiques, ils ne conserveront pas nécessairement leur ordre. Évidemment, cela devrait être documenté si c'est "by-design", sinon je considérerais cela comme un "bug".
  2. OrderSort() ne fonctionne pas avec les tableaux 4D (renvoie l'erreur 4053). Là encore, cela devrait être documenté, mais ce n'est pas le cas.
Désolé pour la réponse tardive les gars... beaucoup de choses se sont mises en travers... Je vous assure que j'apprécie beaucoup vos réponses.
Pour information, voici mes réponses (en mode "spam" :( ) :
- Pour les tableaux 1D, aucune question ne se pose. Sur les tableaux 2D, 3D, 4D, la paire de crochets la plus à gauche est toujours la première dimension, n'est-ce pas Gordon ?
 
cameofx:
- Sur les tableaux 1D, la question ne se pose pas. Sur les tableaux 2D, 3D, 4D, la paire de crochets la plus à gauche correspond toujours à la première dimension, n'est-ce pas Gordon ?

Oui.

 
gordon:

Peu importe comment vous voulez l'appeler, la première dimension d'un tableau 2D est le vecteur arr_name[0,1,...,n][0], donc techniquement la première parenthèse contient la première dimension ; c'est aussi le vecteur qui sera trié par ArraySort(). Extrait du livre :

Tant que nous sommes sur le sujet de ArraySort(), je vais mentionner 2 particularités non documentées que j'ai trouvées au fil du temps (et je serais heureux que quelqu'un me confirme ou me corrige... ?):

  1. Si certains des éléments de la première dimension sont identiques, ils ne conserveront pas nécessairement leur ordre. Évidemment, cela devrait être documenté si c'est "by-design", sinon je considérerais cela comme un "bug".
  2. OrderSort() ne fonctionne pas avec les tableaux 4D (renvoie l'erreur 4053). Là encore, cela devrait être documenté, mais ce n'est pas le cas.
Désolé pour la réponse tardive les gars... beaucoup de choses se sont mises en travers... Je vous assure que j'apprécie beaucoup vos réponses.
Pour information, voici mes réponses :
- Pour les tableaux 1D, aucune question ne se pose. Pour les tableaux 2D, 3D, 4D, la paire de crochets la plus à gauche est toujours la première dimension. C'est également ce que j'ai compris.
int    a[50];       // A one-dimensional array of 50 integers.
double m[7][50];    // Two-dimensional array of seven arrays,
                    //each of them consisting of 50 integers
Mais quand je regarde cette explication. La façon dont elle est décrite est la suivante : "Tableau bidimensionnel de sept tableaux, chacun d'entre eux étant composé de 50 entiers ". En réfléchissant à cela et à vos réponses... Cela doit
être une explication erronée car elle suggère que les 50 entiers sont plus comme la taille de la ligne/membre des données et 7 est la colonne/en-tête. Cela m'a conduit à croire (à tort) que
que la partie la plus à droite était la partie de la ligne/du membre que nous devrions/pouvions redimensionner...
- J'apprécie que vous partagiez votre découverte, Gordon. Malheureusement, les tests sont un luxe pour moi ces jours-ci... Je ne peux avoir accès à un ordinateur et à Internet que par intermittence (c'est compliqué).
Même les tests sur un graphique mort s'avèrent être un défi... :( . D'où ma compréhension parfois "tordue". Je me fie surtout à ma mémoire et à mes références... (désolé...).

PS : oups... je ne savais pas que le premier message était entré. Je l'ai édité.
 
cameofx:
[...] Cette explication doit être erronée car elle suggère que les 50 entiers correspondent plutôt à la taille de la ligne/du membre des données et que 7 est la colonne/l'en-tête.

Je ne suis pas sûr de ce que cela suggère, mais quoi qu'il en soit, la plus à gauche est la première dimension. Une grande partie de la documentation est une traduction du russe, qui n'est souvent pas très bonne, alors peut-être est-ce l'un de ces cas. La notion de colonne/ligne n'est qu'une métaphore ; elle nous permet d'imaginer plus facilement le tableau, mais n'a rien à voir avec l'implémentation réelle. C'est à vous de décider si la première dimension est une "ligne" ou une "colonne"...

 
1005phillip:


Je considère l'indexation et le dimensionnement des tableaux de la manière standard des feuilles de calcul... Row-Column (mnémotechnique "Roman-Catholic").

Tableau 1D : MonTableau[NuméroDeLigne-1]

Tableau 2D : MyArray[RowNumber-1][ColumnNumber-1]

Tableau 3D : MyArray[RowNumber-1][ColumnNumber-1][Worksheet-1] ....

La référence que j'ai citée concernant la première dimension m'a déconcerté (voir le message ci-dessus). Donc, logiquement, nous ne pouvons pas redimensionner le numéro de colonne et/ou le numéro de feuille de travail et/ou le numéro de livre.
et/ou le BookNumber...seulement le RowNumber. Il s'agit de la paire de crochets la plus à gauche dans les tableaux 2D, 3D et 4D.
 
cameofx:
Nous ne pouvons donc logiquement pas redimensionner [...]

C'est exact.

 
gordon:

Je ne suis pas sûr de ce que cela suggère, mais quoi qu'il en soit, la plus à gauche est la première dimension. Une grande partie de la documentation est une traduction du russe, souvent pas une très bonne traduction, donc peut-être que c'est un de ces cas. La notion de colonne/ligne n'est qu'une métaphore ; elle nous permet d'imaginer plus facilement le tableau, mais n'a rien à voir avec l'implémentation réelle. C'est à vous de décider si la première dimension est une 'ligne' ou une 'colonne'...

oui... malheureusement, beaucoup d'entre nous - je suis sûr que je parle au nom de beaucoup de débutants ici... - se fient beaucoup trop souvent à la documentation existante...