|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Variablen nach Größe sortieren
Guten Tag,
ich möchte eine größere Anzahl an einzelnen Variablen nach Größe des jeweiligen Wertes in ein Array sortieren sowie den Namen der jeweiligen Variable als String Array ablegen. Es geht um das Anzeigen einer sortierten Liste auf dem Chart mit Name der Variable sowie des dazugehörigen Wertes. Variablenreihe der Quelle zB: var1 = 10; var2 = 5; var3 = -13; var4 = 55; usw Die Chartzeichnung würde ich fix definieren also 1. Reihe WertArray[0] und NameArray[0] 2. Reihe WertArray[1] und NameArray[1] 3. Reihe WertArray[2] und NameArray[2] 4. Reihe WertArray[3] und NameArray[3] usw Große bis kleine Werte sollen inlusiv Variablenbezeichnung, von der Variablenreihe der Quell-Variablen in die ZielArrays, als Wert und Name von oben nach unten einsortiert werden. Ergebniss sollte so aussehen: WertArray[0] = 55 und NameArray[0] = var4 WertArray[1] = 10 und NameArray[1] = var2 WertArray[2] = 5 und NameArray[2] = var1 WertArray[3] = -13 und NameArray[3] = var3 So ist erstmal die Grundidee, ich weiss jetzt nur nicht wie ich die ganze Sache sortiere, also wie die QuellVariablen der Größe nach in Wert- und String- Arrays sortiert werden??? lg C$D ps: ich arbeite mit MetaEditor v509 |
|
|||
Sortieren kann man Arrays über die Funktion
ArraySort() entweder auf- oder absteigend. Vorher mit ArrayCopy() das alte Array sichern und nach dem Sortieren, die Elemente des sortierten Arrays bzgl. des Index im alten Array suchen und in NameArray[i] abspeichern. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Prima das Sortieren klappt schonmal aber das Definieren vom QuelleArray mit den vorhandenen Variabeln macht Probleme und die Variablennamen rauszuziehen liegt über meinem KnowHow. Hier mal der aktuelle Stand:
Code:
// Test-Quellvariablen double Var1 = 10; double var2 = 5; double var3 = -13; double var4 = 55; ... //Testausführung für Printausgabe int init() { double Quelle[4] = {var1,var2,var3,var4); /* FEHLERMELDUNG ! -> comma or semicolon expected ??? Wenn ich die Zahlen direkt reinschreibe ist keine Fehlermeldung aber die Zahlen müssen doch von den Variablen Var1 bis Var4 kommen! */ ArraySort(Quelle, WHOLE_ARRAY,0,MODE_DESCENT); // Funktioniert :) // Variablennamen rausziehen... ??? Print("Wert= ", Quelle[0]); Print("Wert= ", Quelle[1]); Print("Wert= ", Quelle[2]); Print("Wert= ", Quelle[3]); Print("Name= ", Name[0]); Print("Name= ", Name[1]); Print("Name= ", Name[2]); Print("Name= ", Name[3]); } |
|
|||
Code:
double var1 = 10; double var2 = 5; double var3 = -13; double var4 = 55; double Quelle[]; double QuelleSort[]; string Name[]; int init() { ArrayResize(Quelle, 4); ArrayResize(QuelleSort, 4); ArrayResize(Name, 4); Quelle[0] = var1; Quelle[1] = var2; Quelle[2] = var3; Quelle[3] = var4; ArrayCopy(QuelleSort, Quelle, 0, 0, WHOLE_ARRAY); ArraySort(QuelleSort, WHOLE_ARRAY,0,MODE_DESCEND); Alert(Quelle[0], " ", Quelle[1], " ", Quelle[2], " ", Quelle[3]); Alert(QuelleSort[0], " ", QuelleSort[1], " ", QuelleSort[2], " ", QuelleSort[3]); for (int i = 0; i <= 3; i++) { for (int j = 0; j <= 3; j++) { if (QuelleSort[i] != Quelle[j]) continue; else Name[i] = IntegerToString(j); } } Alert(Name[0], " ", Name[1], " ", Name[2], " ", Name[3]); return(0); } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Prima bis zum IntegerToString alles klasse nur wäre noch eine Fehlermeldung:
IntegerToString - function is not defined |
|
|||
Build 509 ist aber ganz schön antiquiert.
Aktuell sollte die bei mindestens 765 liegen. Dann käme der Fehler auch nicht. Gut, dann nimm else Name[i] = j; oder else Name[i] = DoubleToStr(j, 0); traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Herzlichen dank für die Hilfe doc! Fast perfekt jetzt kommt als Name 3 0 1 2 das stimmt mit der Reihenfolger überein aber es ist noch nicht der eigentliche Name der Variable. Wenn die Ursprungsvariablen var1 var2 var3 var4 heißen wäre es klasse wenn auch diese Bezeichnung entsprechen im Name-Array abgelegt wird also statt 3 0 1 2 die variablenbeschriftung var4 var1 var2 var3
lg C$D |
|
|||
Code:
double var1 = 10; double var2 = 5; double var3 = -13; double var4 = 55; double Quelle[]; double QuelleSort[]; string NameVar[]; string Name[]; int init() { ArrayResize(Quelle, 4); ArrayResize(QuelleSort, 4); ArrayResize(NameVar, 4); ArrayResize(Name, 4); Quelle[0] = var1; Quelle[1] = var2; Quelle[2] = var3; Quelle[3] = var4; NameVar[0] = "var1"; NameVar[1] = "var2"; NameVar[2] = "var3"; NameVar[3] = "var4"; ArrayCopy(QuelleSort, Quelle, 0, 0, WHOLE_ARRAY); ArraySort(QuelleSort, WHOLE_ARRAY,0,MODE_DESCEND); Alert(Quelle[0], " ", Quelle[1], " ", Quelle[2], " ", Quelle[3]); Alert(QuelleSort[0], " ", QuelleSort[1], " ", QuelleSort[2], " ", QuelleSort[3]); for (int i = 0; i <= 3; i++) { for (int j = 0; j <= 3; j++) { if (QuelleSort[i] != Quelle[j]) continue; else Name[i] = NameVar[j]; } } Alert(Name[0], " ", Name[1], " ", Name[2], " ", Name[3]); return(0); } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
array, mql4, nach größe sortieren, programmierng, programmierung metatrader, sortieren, variablen sortieren |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|