Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36969
Benutzer: 6.079
Aktive Benutzer: 495
Links: 80
Wir begrüßen unseren neuesten Benutzer: Rene1504
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 55 Minuten
- Rene1504
vor einer Stunde
- ibdafx
vor 23 Stunden
- Batangenyo
vor einem Tag
- Spitzmaus
vor einem Tag
- juleslesqu...

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 67
Gesamt: 69
Team: 0
Team:  
Benutzer:  ibdafx, Rene1504
Freunde anzeigen

Empfehlungen

Werbung

Like Tree1Likes
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 01.03.15
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard 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
  #2 (permalink)  
Alt 01.03.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
Ca$hDigger likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 01.03.15
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

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]);
}
  #4 (permalink)  
Alt 01.03.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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);
}
Viel Erfolg!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 01.03.15
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Prima bis zum IntegerToString alles klasse nur wäre noch eine Fehlermeldung:
IntegerToString - function is not defined
  #6 (permalink)  
Alt 01.03.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #7 (permalink)  
Alt 01.03.15
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

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
  #8 (permalink)  
Alt 01.03.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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);
}
Viel Erfolg!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #9 (permalink)  
Alt 01.03.15
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Thumbs up

Perfekt ! Danke doc !
Thema geschlossen

Lesezeichen

Stichworte
array, mql4, nach größe sortieren, programmierng, programmierung metatrader, sortieren, variablen sortieren


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------