|
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 |
|
|||
wie übergebe ich ein Array an eine Funktion
Je mehr ich darüber lese, desto verwirrender wird die Sache. Also frag' ich mal hier, damit vielleicht etwas Klarheit reinkommt.
Situation: Ich habe mehrere Arrays z.B. Code:
string ApairAud[7]={"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","EURAUD","GBPAUD"}; string ApairNzd[7]={"NZDCAD","NZDCHF","NZDJPY","NZDUSD","AUDNZD","EURNZD","GBPNZD"}; Code:
void CalcAud() { for(int j=0; j<ArrayRange(ApairAud,0); j++) if( ... ) Action; } Alles, was ich bisher für FÜrDiesesArray versucht habe, endetet in Fehlermeldungen. Kann mir bitte jemand sagen, wie ich das richtig mache? Danke. AVT |
|
|||
Das verstehe ich nicht ganz.
Du kannst doch alle Arrays in einer Funktion bearbeiten, ob nacheinander oder alle gleichzeitig hängt sicherlich von der Unterschiedlichkeit der Arraygröße ab und von der if-Abfrage. Kannst Du das noch mal eindeutiger formulieren? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke für Deine Antwort traderdoc.
Mal zur Illustration, hier die erste Funktion (die funktioniert - ich baue lieber alles in kleinen Schritten auf): Code:
void CalcAud() { int CountWeaks=0, CountStrongs=0; for(int j=0; j<ArrayRange(ApairAud,0); j++) { if( GetFrontName(ApairAud[j]) ==ApairClass[0]) //InThisPairNameItIsInFront { for(int i=0; i<ALoopLimit; i++) //SearchTheSStableForTheName { if(SSpairTable[i].SpairName == ApairAud[j] ) //FoundTheSStableName { if(SSpairTable[i].SpairPercMove>0) CountStrongs++; //0% is counted weak else CountWeaks++; } SSpairTable[i].SpairStrongs=CountStrongs; SSpairTable[i].SpairWeaks=CountWeaks; } } if( GetBackName(ApairAud[j]) ==ApairClass[0]) //InThisPairNameItIsInBack { for(int i=0; i<ALoopLimit; i++) //SearchTheSStableForTheName { if(SSpairTable[i].SpairName == ApairAud[j] ) //FoundTheSStableName { if(SSpairTable[i].SpairPercMove<0) CountStrongs++; else CountWeaks++; //0% is counted weak } SSpairTable[i].SpairStrongs=CountStrongs; SSpairTable[i].SpairWeaks=CountWeaks; } } } } Ich hätte das jetzt gerne umgewandelt in eine allgemeine Funktion, etwa so: Code:
void CalcStrongWeak(string ArrayName=??? , int ClassNo=0) { int CountWeaks=0, CountStrongs=0; for(int j=0; j<ArrayRange(ArrayName,0); j++) { if( GetFrontName(ArrayName[j]) ==ApairClass[ClassNo]) { for(int i=0; i<ALoopLimit; i++) { if(SSpairTable[i].SpairName == ArrayName[j] ) { if(SSpairTable[i].SpairPercMove>0) CountStrongs++; //0% is counted weak else CountWeaks++; } SSpairTable[i].SpairStrongs=CountStrongs; SSpairTable[i].SpairWeaks=CountWeaks; } } if( GetBackName(ArrayName[j]) ==ApairClass[ClassNo]) { for(int i=0; i<ALoopLimit; i++) { if(SSpairTable[i].SpairName == ArrayName[j] ) { if(SSpairTable[i].SpairPercMove<0) CountStrongs++; else CountWeaks++; //0% is counted weak } SSpairTable[i].SpairStrongs=CountStrongs; SSpairTable[i].SpairWeaks=CountWeaks; } } } } |
|
|||
Hallo AVT,
per Referenz: void CalcStrongWeak(string &DeinArray[] , int ClassNo=0) { .... } Referenziert wird mit "&" Grüße TraumExperte |
|
|||
Wenn es dann so funktionieren soll, wäre die referenzierte Methode
wie @TraumExperte gezeigt hatte, ein der korrekten Möglichkeiten. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
@ TraumExperte
Danke, das war es was mir fehlte - ist also quasi das gleiche wie die OnCalculate Arrays. @ traderdoc So sollte es eigentlich funktionieren. Die Ergebnisse sind auch richtig. Code:
string ApairClass[8]={"AUD","CAD","CHF","EUR","GBP","JPY","NZD","USD"}; Code:
void CalcStrongWeak(string &ArrayName[], //PairNameArrayToCalc string &ClassArray[], //PairClassArrayToUse int ClassNo=0) //ArrayNoInThePairClass Code:
CalcStrongWeak(ApairAud,ApairClass,0); Danke. AVT |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|