[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 354
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie funktioniert ArrayMaximum?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Suche nach dem Element mit dem höchsten Wert. Die Funktion gibt die Position des maximalen Elements im Array zurück.
Parameter:array[] - Das numerische Array, in dem gesucht werden soll.
count - Die Anzahl der zu suchenden Elemente.
start - Der Startindex der Suche.
Beispiel:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Max value = ", num_array[maxValueIdx]);
also ist es für mich nicht klar... Wie kann ich es so schreiben, dass der Expert Advisor z.B. nach der 2. Array-Nummer sucht?
int MinArray[7] = {1,2,3,4,5,6,7}
int ArrayMaximum (MinArray[7], "Was ist mit hier?", 2); das ist mir nicht klar
Das Problem war zum Beispiel, wie oft der Preis in den letzten zwei Jahren bestimmte Niveaus überschritten hat.
1. Man könnte jede Ebene nehmen und die Daten für zwei Jahre betrachten. Kosten: Anzahl der Balken multipliziert mit der Anzahl der Stufen.
2. Sie können eine separate Reihe von Ebenen erstellen. Es genügt, alle Balken zu überprüfen, indem man die erforderlichen Elemente des Arrays überprüft und inkrementiert. In diesem Fall werden die Berechnungen schneller sein.
Ich bin an einem ähnlichen Beispiel wie diesem interessiert:
for(a=0;a<=100;a++){
for (b=0;b<=100;b++){
for (c=0;c<=100;c++){
for(d=0;d<=100;d++){
for(e=0;e<=100;e++){
for (f=0;f<=100;f++){
for(g=0;g<=100000;g++){
jaw_val1=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, g);
jaw_val2=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH, g);
jaw_val3=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, g);
if (jaw_val1>Close[g] && jaw_val2>Close[g] && jaw_val3>Close[g]) sum=sum+(High[g]-Low[g])
}}}}}}}
Aber dann muss das Array 7-dimensional sein?
Können Sie mir sagen, wie ArrayMaximum funktioniert?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Suche nach dem Element mit dem maximalen Wert. Die Funktion gibt die Position des maximalen Elements im Array zurück.
Parameter:array[] - Numerisches Array, das durchsucht wird.
count - Die Anzahl der zu durchsuchenden Elemente.
start - Der Startindex für die Suche.
Beispiel:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Maximalwert = ", num_array[maxValueIdx]);
Also hier verstehe ich die Zählung nicht... Wie schreibe ich meinen Expert Advisor so, dass er z. B. nach der zweiten Array-Nummer sucht?
int MinArray[7] = {1,2,3,4,5,6,7}
int ArrayMaximum (MinArray[7], "Wie sieht es hier aus?", 2); das ist mir nicht klar
Sie müssen den größten Wert finden, der in diesem Array enthalten ist, beginnend mit dem Nullelement des Arrays:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 0); // Index des Elements mit dem höchsten Wert finden.
double MaxValue=DataMass[IndexMaxValue]; // Ermittlung des Höchstwerts im Array anhand seines Index
Die Zeile, in der das Element mit dem höchsten Wert gesucht wird, kann in kürzerer Form geschrieben werden:
int IndexMaxValue=ArrayMaximum(DataMass); // Die letzten beiden Argumente der Funktion haben Standardwerte, so dass sie beim Aufruf der Funktion weggelassen werden können, da wir das gesamte Array (WHOLE_ARRAY) durchsuchen und mit der Nullzelle (0) beginnen, und diese Werte standardmäßig an die Funktion übergeben werden.
All dies kann in einer einzigen Zeile geschrieben werden
double MaxValue=DataMass[ArrayMaximum (DataMass)]; // Ermittlung des Maximalwerts im Array anhand seines Index.
Die Variable MaxValue enthält den Höchstwert im Array DataMass[].
Wenn Sie nicht im gesamten Array und nicht ab dem Null-Element suchen wollen, sollten diese Werte explizit in den übergebenen Parametern angegeben werden:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // Ermittlung des Index des Elements mit dem größten Wert. Die Suche wird über das gesamte Array (WHOLE_ARRAY) durchgeführt, beginnend mit der zweiten Zelle (2)
int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // Ermittlung des Index des Elements mit dem größten Wert. Die Suche wird für zehn Elemente der Matrix (10) durchgeführt, beginnend mit der dritten Zelle (3)
Ich hoffe, ich habe es deutlich erklärt :)
Angenommen, Sie haben ein DataMass[]-Array, das einige Werte enthält. Der Typ der darin enthaltenen Werte ist double.
Sie müssen den größten Wert finden, der in diesem Array enthalten ist, beginnend mit dem Nullelement des Arrays:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 0); // Ermittlung des Index des Elements mit dem höchsten Wert.
double MaxValue=DataMass[IndexMaxValue]; // Ermittlung des Höchstwerts im Array anhand seines Index
Die Zeile, in der das Element mit dem höchsten Wert gesucht wird, kann in kürzerer Form geschrieben werden:
int IndexMaxValue=ArrayMaximum(DataMass); // Die letzten beiden Argumente der Funktion haben Standardwerte, so dass sie beim Aufruf der Funktion weggelassen werden können, da wir das gesamte Array (WHOLE_ARRAY) durchsuchen und mit der Nullzelle (0) beginnen, und diese Werte standardmäßig an die Funktion übergeben werden.
Jetzt können wir alles in eine Zeile schreiben
double MaxValue=DataMass[ArrayMaximum (DataMass)]; // Ermittlung des Höchstwerts im Array anhand seines Index
Wenn Sie nicht im gesamten Array und nicht ab dem Null-Element suchen wollen, sollten Sie diese Werte explizit in den übergebenen Parametern angeben
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // Ermittlung des Index des Elements mit dem größten Wert. Die Suche wird für das gesamte Array (WHOLE_ARRAY) durchgeführt, beginnend mit der zweiten Zelle
int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // Ermittlung des Index des Elements mit dem größten Wert. Die Suche wird über zehn Elemente der Matrix (10) durchgeführt, beginnend mit der dritten Zelle
Ich hoffe, ich habe es deutlich erklärt :)
mehr als =) danke, aber eine Frage bleibt noch.... Was ist, wenn ich 2 identische Maximalwerte habe? Welchen wählt er aus? den auf der linken Seite?
mehr als das =) danke, aber eine Frage bleibt noch.... Was ist, wenn ich 2 identische Maximalwerte habe? Welcher wird ausgewählt? der auf der linken Seite?
Prüfen Sie es :)
Schreiben Sie ein kurzes Skript, das den maximalen Wert, der im Array gefunden wurde, und seinen Index ausgibt. Initialisieren Sie das Array explizit mit Werten, von denen zwei gleich sind und größer als die anderen Werte sein werden.
Verwenden Sie den Index, um festzustellen, welchen der beiden höchsten Werte er an Sie ausgibt.
Gibt den Index desjenigen aus, der dem Beginn der Suche am nächsten liegt:
Raten Sie mal, welchen Index er ausgibt :)
Es gibt ein Werk von N. Staritsky. Es gibt einen Film mit dem Titel "Beyond Two Hares", der darauf basiert. Ich möchte diesen brillanten Autor lesen. Ich kann seinen Text nicht finden. Helfen Sie mir, es zu finden. und entschuldigen Sie, wenn ich im falschen Thread gefragt habe ;)
Guten Morgen, ich habe zwei Fragen (ich kann nirgends eine verständliche Antwort finden):
1. Der Indikator zeichnet zwei Reihen von vertikalen Trendlinien in das Unterfenster. Wie erhalte ich die Strichnummern, die diesen Zeilen entsprechen?
2. Mit demselben Indikator muss ich Linien für die Zukunft für etwa 24 Stunden im Voraus zeichnen. Aber ich weiß nicht, wie ich es umsetzen soll.
Ich hoffe sehr auf die Hilfe der Forumsnutzer).