Funktion - Methode zum Sortieren eines Arrays von Strukturen. Preis 10$ - Seite 4

 
Sergey Dzyublik:

Wo liegt das Problem?

Zusätzlich zur Funktion selbst müssen Sie eine Typisierung vornehmen und eine Variable erstellen, nur um die Funktion als Parameter zu übergeben, was Sie mit dem Lambda-Makro tun.

 
fxsaber:

Ich habe es überprüft, es funktioniert.

Leider nicht (((.


 
Vladimir Pastushak:

Leider nicht (((.

In MT4 gibt es keine Sortierung.
Fügen Sie also den Aufruf für die vorgeschlagene Sortierung für MT4 in die bedingte Kompilierung ein und lassen Sie den Code für MT5 unangetastet.

 
Vladimir Pastushak:

Leider nicht (((.


Aktualisieren Sie Ihren MT4.

 

Ichhabe den Code in MT4überprüft, alles funktioniert.

2020.04.21 23:27:35.728 Script t EURUSD,H1: entfernt

2020.04.21 23:27:35.726 t EURUSD,H1: uninit Grund 0

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Sortierung nach Zeit.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Sortierung nach Hochwertigkeit.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Sortierung nach offenem Preis.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Barren ohne Sortierung - wie erhalten.

2020.04.21 23:27:35.726 t EURUSD,H1: initialisiert

2020.04.21 23:27:34.279 Script t EURUSD,H1: erfolgreich geladen

MT4 Build 1262

entpacken Sie es so:

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

Im bereitgestellten Code habe ich vergessen, die Hauptfunktion ArraySortStruct wieder in ein Makro zu verpacken, damit es möglich ist, ein Sortierfeld anzugeben.
Aber der Autor des Themas schweigt hartnäckig, anscheinend bin ich der Einzige, der es braucht...

 

Algorithmus:

1. Struktur = String. Erste Schleife.

2. Array von Zeichenketten sortieren. Zweite Schleife (komplex, Blase).

3. String = Struktur. Die dritte Schleife.

Kaum noch schneller.

Der Grund:

1. Strukturen werden im System als Strings dargestellt, lediglich die Ausrichtung muss berücksichtigt werden (byteweise).

2. Die Verarbeitungsgeschwindigkeit von Zeichenketten ist wesentlich höher als die von anderen Datentypen.

3. In einer Schleife wird nur eine Operation zum Vergleich zweier Strings durchgeführt. Feldwerte müssen nicht verglichen werden.

In den frühen 90er Jahren habe ich das auf Clarion gemacht. Es hat funktioniert.

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

Im bereitgestellten Code habe ich vergessen, die Hauptfunktion ArraySortStruct wieder in ein Makro zu verpacken, damit es möglich ist, ein Sortierfeld anzugeben.
Aber der Autor des Themas schweigt hartnäckig, anscheinend bin ich der Einzige, der es braucht...

Ich habe es mir noch nicht angesehen. Ich verstehe die Makros nicht. Ich wäre dankbar für den vollständigen Code.
 
Алексей Тарабанов:

Das habe ich in den frühen 90er Jahren mit einem Clarion gemacht. Er ist geflogen.

zu Tränen! )))

ich erinnere mich an das erste semester des 1. studiengangs und die ersten praxisstunden in algorithmen und programmierung.... ich weiß nicht einmal mehr, was wir gelernt haben, ich glaube, wir haben zuerst Pascal gelernt, aber der Unterricht fand auf dem IBM-Terminal statt, ich habe das Programm in 15-20 Zeilen kompiliert... naja, die ersten 2-3 Minuten, dann bis zu 20 Minuten, als die Leute eine Menge Tipp- und Syntaxfehler gemacht haben

ab dem zweiten Semester arbeiteten wir an 486ern


er flog! ))))


SZS: Wenn ich mich nicht irre, war es die EC-1035 ...., die geflogen ist!

 
Igor Makanu:

zu Tränen! )))

Ich erinnerte mich an das erste Semester des 1. Studienjahres und an die ersten Übungen zu Algorithmen und Programmierung.... Ich kann mich nicht einmal mehr daran erinnern, was wir gelernt haben, ich glaube, es war anfangs Pascal, aber der Unterricht fand auf IBM-Computern in den Terminal-Klassen statt, wo wir ein Programm mit 15-20 Zeilen kompilierten... Nun, anfangs lernten wir 2-3 Minuten, dann bis zu 20 Minuten, wenn die Leute eine Menge Tipp- und Syntaxfehler machten

ab dem zweiten Semester arbeiteten wir an 486ern


Er ist geflogen! ))))


SZY: Wenn ich mich nicht irre, war es die EC-1035 ...., die sie flog!

Ich habe 1976 mit dem ersten elektronischen Digitalcomputer der Welt angefangen. Es wurde vom Kiewer Institut für Kybernetik der Akademie der Wissenschaften der Ukrainischen Sozialen Sowjetrepublik entwickelt. Dann kam die Minsk-32, und dann die EG.