Questions des débutants MQL5 MT5 MetaTrader 5 - page 732
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Que se passe-t-il si, après le tri, vous modifiez l'ordre d'indexation en utilisant ArraySetAsSeries ?
ArraySetAsSeries ne s'applique pas aux tableaux multidimensionnels.
Oui, il ne s'applique pas. Et qui sait ce qui s'applique, veuillez répondre.
Oui, il ne s'applique pas. Et qui sait ce qui s'applique, veuillez répondre.
J'utilise parfois le tri à bulles sur un tableau à deux dimensions. Vous pouvez choisir la direction et la dimension par lesquelles vous voulez trier.
Venez chez vous pour le code, ou postez-le, si vous le voulez bien)
Ajouté : à quel point cela consomme-t-il des ressources ? autant inverser la boucle, ce que je ne veux pas faire.
Venez chez vous pour le code, ou postez-le si vous le voulez bien)
Je ne me souviens pas de la dimension du tableau que vous avez écrit - peut-être que vous n'en avez pas besoin, et je vais pousser ...
//| Пузырьковая сортировка двумерного массива |
//+------------------------------------------------------------------+
template<typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) {
T t=0;
int k=ArrayRange(array,1); // Количество колонок
int n=ArrayRange(array,0); // Количество строк
//---
if(sort_dimension<0) sort_dimension=0;
if(sort_dimension>k) sort_dimension=k;
//---
for(int i=n-1; i>0; i--) {
for(int j=0; j<i; j++) {
//--- по возрастанию
if(sort_direction==0) {
if(array[j][sort_dimension]>array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
//--- по убыванию
else {
if(array[j][sort_dimension]<array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Eh bien, prenez une bière et venez nous rendre visite ;)
Je ne me souviens pas de la dimension du tableau que vous avez écrit - peut-être n'en avez-vous pas besoin, et je vais le mettre ici ...
C'est l'hiver, mais les skis ne veulent pas partir.
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Erreur : "'m' - conversion de paramètres non autorisée e.mq5 2076 20".
C'est l'hiver, mais les skis ne veulent pas partir.
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Erreur : "'m' - conversion de paramètres non autorisée e.mq5 2076 20".
Note
L'indicateur AS_SERIES ne peut pas être défini pour les tableaux multidimensionnels et pour les tableaux statiques (c'est-à-dire les tableaux dont la taille entre crochets est déjà spécifiée au moment de la compilation).
Et qu'est-ce qui vous empêche de le trier avec la fonction que je propose ?
C'est écrit dans l'aide :
Note
L'indicateur AS_SERIES ne peut pas être défini pour les tableaux multidimensionnels et les tableaux statiques (c'est-à-dire les tableaux dont la taille entre crochets est spécifiée au moment de la compilation).
Mais qu'est-ce qui vous empêche de faire le tri en utilisant la fonction que je propose ?
Exactement la même erreur lors du transfert vers une fonction
Laquelle ?
A votre"ArraySortBubbleTwoDims".
Quoi qu'il en soit, j'ai élargi la boucle et le problème est résolu. Mais j'aimerais quand même voir une solution normale sous la forme d'une fonction standard