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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4443
Beiträge: 40485
Benutzer: 6.833
Aktive Benutzer: 267
Links: 80
Wir begrüßen unseren neuesten Benutzer: viewer
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 3 Stunden
- viewer
vor einem Tag
- burkijan
vor 2 Tagen
- Chidiroglo...
vor 3 Tagen
- JapanTrade...
vor 6 Tagen
- chroma

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 108
Gesamt: 108
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.04.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 340
AVT befindet sich auf einem aufstrebenden Ast
Standard Zeilenweise mit Arrays sortiern

Wie packe ich so etwas in Arrays:
string,double,double,int => erste zusammenhängende Zeile

Code:
Beispiel:
Index Range   Spread  Trades
Dax   60.5    2.0     3
Dow   120.0   2.9     1
Die Werte gehören immer zeilenweise zusammen, fest stehen die Anzahl der Zeilen und der Indexname, veränderlich sind die Zahlen.
Wenn ich nun z.B. nach Trades sortiere, müssen ja die anderen Werte trotzdem noch zu dem betreffenden Index gehören,
das heißt, die gesamte Zeile rückt an eine andere Stelle.
Ich krieg das nicht gebacken. Geht schon damit los, daß MT meckert, weil ich einen string dabei habe.
Kann jemand helfen? AVT
Mit Zitat antworten
  #2 (permalink)  
Alt 10.04.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 932
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

In C++ gibts doch Klassen mit denen sowas möglich sein sollte. Obs die bei mql auch gibt, weiß ich nicht. Da jedes Array soviel ich weiß nur einen Daten-Typ aufnehmen kann, wird das so wohl nix werden.

Man könnte vielleicht versuchen ne Tabelle mit den Daten zu füllen.
Mit Zitat antworten
  #3 (permalink)  
Alt 10.04.20
Mitglied
 
Registriert seit: Jun 2011
Ort: Minsk, Weißrussland
Beiträge: 74
Bobs befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht kann man alle Daten als string in einem string Array konvertieren und speichern.
Mit Zitat antworten
  #4 (permalink)  
Alt 10.04.20
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 280
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Einfach die Sachen in ein struct packen und ein Array damit erstellen:

struct s_tabelle
{
string Index
double Range
double Spread
int Trades
};

s_tabelle tabelle[2]; // für jeden index ein eintrag
Mit Zitat antworten
  #5 (permalink)  
Alt 10.04.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 340
AVT befindet sich auf einem aufstrebenden Ast
Standard Zwischenstand

Danke für Eure Antworten. Dummerweise kann MT keine string arrays sortieren, dazu kommt, daß nur die erste Dimension sortiert wird.

Erst mal habe ich rausfinden müssen, wie man die x-te Dimension sortieren kann, das sieht bis jetzt so aus:
Code:
void OnStart()
{
   // === an array can ONLY be sorted IN FIRST DIMENSION
   // === the 1st dimension is free (in output its value is Zero)
   int SeondDataArray[5][3]={{,7,3},
                             {,3,1},
                             {,57,14},
                             {,12,4},
                             {,11,1}
                            }; 
    int NoOfElements=ArrayRange(SeondDataArray,0);            //GetTheNumberForLoop
    
    for(int i=0; i<NoOfElements; i++)
    {
       Print("i=",IntegerToString(i),
             " {",IntegerToString(SeondDataArray[i][0]),      //1stDimension
             ",",IntegerToString(SeondDataArray[i][1]),       //2ndDimension
             ",",IntegerToString(SeondDataArray[i][2]),"}"    //3rdDimension
            );
    }
    Print("====================");
    
    for(int i=0; i<NoOfElements; i++)
    {
       int NeededVal=SeondDataArray[i][2];               //GetValueOfLastDimension
       SeondDataArray[i][0]=NeededVal;                   //PutFoundValueIntoFirstDimension
    }
    
    ArraySort(SeondDataArray,WHOLE_ARRAY,0,MODE_ASCEND);  //SortArrayByFirstDimension

    for(int i=0; i<NoOfElements; i++)                     //Security:EmptyTheFirstDimensionForNextUse
    {
       SeondDataArray[i][0]=0;                            //PutEmptyIntoFirstDimension
       Print("i=",IntegerToString(i),
             " {",IntegerToString(SeondDataArray[i][0]),
             ",",IntegerToString(SeondDataArray[i][1]),
             ",",IntegerToString(SeondDataArray[i][2]),"}"
            );
    }
}
... funktioniert also.

Nun habe ich noch den Beschreibungsstring drin.
Den kann man ja als enum nehmen (damit hat man sowohl einen integer Wert als auch dessen string). Also hab ich erst mal versucht, eine enum nachher in die Tabelle zu schreiben - da gibt es schon wieder Gemecker (obwohl die Ausgabe korrekt ist):
Code:
enum PairNamesInt
{
   AUDCAD,  //0
   EURUSD,  //1
   TRYJPY,  //2
   USDJPY,  //3
   GBPAUD   //4
};
void OnStart()
{
   for(int i=0; i<4; i++)
   {
      PairNamesInt Number=i;  //=> i: implicit enum conversion
      Print(" Pair ",IntegerToString(i),"= ",EnumToString(Number) );
   }
}
Ich hasse dieses Meckern, vor allem wenn es komplett unverständlich ist.
Wenn ich z.B. als Benutzer bei einem Auswahlmenü in enum-Format den Text sehe und auwähle, dann nimmt MT doch intern dessen Nummernwert zur Erkennung (der wird ja wohl kaum mit Buchstaben rumhantieren).
In der Hilfe wird nur mit dem String gearbeitet, also probier ich es so und kriege eine andere Warnung:
Code:
      PairNamesInt Word;  //=> Word: possible use of uninitialized variable 'Word'
      Print(" Pair ",IntegerToString(i),"= ",(string)EnumToString(Word) );
Wo ist denn hier der Fehler? ( wahrscheinlich im Head bei #property strict - auskommentieren, dann ist Ruhe im Karton )
AVT
Mit Zitat antworten
  #6 (permalink)  
Alt 10.04.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 340
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
Einfach die Sachen in ein struct packen und ein Array damit erstellen:
struct s_tabelle
{
string Index
double Range
double Spread
int Trades
};
s_tabelle tabelle[2]; // für jeden index ein eintrag
Tut mir leid, das verstehe ich nicht, mit struct habe ich noch gar nicht gearbeitet und wenn ich mir die Beschreibung davon ansehe, krieg ich noch mehr Probleme - und wenn ich ein Array damit erstelle, habe ich dann nicht dieselben Probleme beim Sortieren?
AVT
Mit Zitat antworten
  #7 (permalink)  
Alt 10.04.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 340
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
In C++ gibts doch Klassen mit denen sowas möglich sein sollte. Obs die bei mql auch gibt, weiß ich nicht. Da jedes Array soviel ich weiß nur einen Daten-Typ aufnehmen kann, wird das so wohl nix werden.
Man könnte vielleicht versuchen ne Tabelle mit den Daten zu füllen.
Kannst Du mir ein Beispiel geben, bitte, ich hab keine Ahnung wie ich das machen soll. Danke, AVT
Mit Zitat antworten
  #8 (permalink)  
Alt 10.04.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 340
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Bobs Beitrag anzeigen
Vielleicht kann man alle Daten als string in einem string Array konvertieren und speichern.
Habe ich zuerst gedacht, aber MT kann keine Strings sortieren, im Endeffekt wird alles sozusagen "sichtbar" sowieso ein String, zum Sortieren muß ich aber Zahlen haben und ich weiß nicht, ob mir dabei nicht der Beschreibungsstring verloren geht. AVT
Mit Zitat antworten
  #9 (permalink)  
Alt 10.04.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.336
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Mich wundert schon mal, dass das der Compiler nicht moniert:

int SeondDataArray[5][3]={{,7,3},
{,3,1},
{,57,14},
{,12,4},
{,11,1}
};

Da werden einem zweidimensionelen Array Wertepaare einer dreidimensionalen Struktur zugewiesen. Das sollt eigentlich nicht gehen.

Um es mal auszuschreiben, welche Array-Variablen es tatsächlich gibt:
SeondDataArray[0][0]
SeondDataArray[0][1]
SeondDataArray[0][2]
SeondDataArray[1][0]
SeondDataArray[1][1]
SeondDataArray[1][2]
SeondDataArray[2][0]
SeondDataArray[2][1]
SeondDataArray[2][2]
SeondDataArray[3][0]
SeondDataArray[3][1]
SeondDataArray[3][2]
SeondDataArray[4][0]
SeondDataArray[4][1]
SeondDataArray[4][2]

Das sind insgesamt 15 Variablen, denen Werte zugewiesen werden sollten.

Was wird da eigentlich bei Deiner Schreibweise in das Array geschrieben?


Print("i=",IntegerToString(i),
" {",IntegerToString(SeondDataArray[i][0]), //1stDimension
",",IntegerToString(SeondDataArray[i][1]), //2ndDimension
",",IntegerToString(SeondDataArray[i][2]),"}" //3rdDimension
);

Das ist nicht die 1. - 3. Dimension, sondern das 1. - 3. Element der 2. Dimension.

traderdoc
AVT likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #10 (permalink)  
Alt 10.04.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 932
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AVT Beitrag anzeigen
ich hab keine Ahnung wie ich das machen soll.
Ich auch nicht, Sorry.
Mit Zitat antworten
Antwort

Lesezeichen


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 +2. Es ist jetzt 21:57 Uhr.





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