Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 732
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Was passiert, wenn Sie nach der Sortierung die Indizierungsreihenfolge mit ArraySetAsSeries ändern?
ArraySetAsSeries gilt nicht für mehrdimensionale Arrays.
Ja, das ist nicht der Fall. Und wer weiß, was gilt, bitte antworten.
Ja, das ist nicht der Fall. Und wer weiß, was gilt, bitte antworten.
Manchmal verwende ich die Blasensortierung für ein zweidimensionales Array. Sie können die Richtung und Dimension wählen, nach der sortiert werden soll
Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen zu, wenn Sie nichts dagegen haben.)
Hinzugefügt: Wie ressourcenintensiv ist es?, könnte auch die Schleife invertieren, was ich nicht tun möchte.
Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen, wenn Sie nichts dagegen haben)
Ich erinnere mich nur nicht, welche Dimension des Arrays Sie schrieb - vielleicht brauchen Sie es nicht, und ich werde schieben ...
//| Пузырьковая сортировка двумерного массива |
//+------------------------------------------------------------------+
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;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Also, schnapp dir ein Bier und komm vorbei ;)
Ich weiß nur nicht mehr, welche Dimension des Arrays Sie geschrieben haben - vielleicht brauchen Sie es nicht, und ich werde es hier einfügen ...
Es ist Winter, aber die Skier wollen nicht fahren
{
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 работает
... здесь работа с уже сортированным массивом и основной код
}
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
Es ist Winter, aber die Skier wollen nicht fahren
{
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 работает
... здесь работа с уже сортированным массивом и основной код
}
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
Hinweis
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und für statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern bereits zur Kompilierzeit festgelegt ist) gesetzt werden.
Und was hindert Sie daran, sie mit der von mir vorgeschlagenen Funktion zu sortieren?
So steht es in der Hilfe:
Hinweis
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern zur Kompilierzeit angegeben wird) gesetzt werden.
Aber was hindert Sie daran, es mit der von mir vorgeschlagenen Funktion zu regeln?
Genau der gleiche Fehler bei der Übergabe an eine Funktion
Welcher ist es?
Zu Ihrem"ArraySortBubbleTwoDims".
Wie auch immer, ich habe die Schleife erweitert und das Problem ist gelöst. Aber ich würde trotzdem gerne eine normale Lösung in Form einer Standardfunktion sehen