[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 354

 
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 ;)
 

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

 
splxgf:

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?

 
CLAIN:

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

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); // 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 :)

 
artmedia70:
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?
 
CLAIN:

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:

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                             Copyright © 2011, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//|                                           Skype: artmedia70      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"
//                   Skype: artmedia70
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double DataMass[15]={4,1,6,3,19,4,1,6,3,19,4,1,6,3,9}; // индекс первого = 4, индекс второго = 9

int start()
  {
//----
   int IndexMaxValue=ArrayMaximum(DataMass); 
   double MaxValue=DataMass[IndexMaxValue]; // находим максимальное значение в массиве по его индексу
   Alert("Индекс максимального элемента массива = "+IndexMaxValue+", его значение = "+MaxValue);
//----
   return(0);
  }
//+------------------------------------------------------------------+

Raten Sie mal, welchen Index er ausgibt :)

 
drknn:
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 ;)
Vladimir, es ist ein Theaterstück. Hier ist der Text.
 

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).

 
Bitte helfen Sie, eine Funktion zum Löschen von Aufträgen hinzuzufügen!