Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 325

 

Komm und hilf mir.

Die Aufgabe besteht darin , das kleinste Element in array[] zu finden.

//+------------------------------------------------------------------+ 
//| Получим Lowest для заданного промежутка                          | 
//+------------------------------------------------------------------+ 
double iLowMin(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMinimum(buffer,ot,bands)];
   return(result);
  }
//+------------------------------------------------------------------+ 
//| Получим High для заданного номера бара                           | 
//+------------------------------------------------------------------+ 
double iHighMax(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMaximum(buffer,ot,bands)];
   return(result);
  }

Das Problem ist, es zu lösen, aber das Minimum bringt mich um. Alles versucht, Eingabefelder sind gefüllt - Debugging durchgesehen, was ist zu tun?

Print("DwMin  ",iLowMin(rates_total-50,49,ExtLowerBuffer));

Vielleicht gibt es einige Nuancen?

erklärt über

   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
 
Top2n:

Komm und hilf mir.

Die Aufgabe besteht darin , das kleinste Element in array[] zu finden.

Das Problem ist, es zu lösen, aber das Minimum bringt mich um. Alles versucht, Eingabefelder sind gefüllt - Debugging durchgesehen, was ist zu tun?

Vielleicht gibt es einige Nuancen?

erklärt über

Versuchen Sie ArraySort und überprüfen Sie die Ausgabe auf dem ersten Index.

 

Soviel zur Noosphäre, sobald ich die Frage aufgegeben hatte, begann ich mit einer Vermutung: Ich habe 0 im Array, also gibt es min = 0. Aber es gibt immer noch Abschnitte mit Nicht-Null-Werten, und das min ist immer noch 0, nun, Gott hilf mir, die Frage ist aus)) Danke an diejenigen, die gerade die Frage gelesen haben, die Noosphäre gab Ihnen

 

Achtung Frage))

Wie stelle ich den Balken im Indikator ein, ab dem die Verarbeitung beginnen soll?

if(prev_calculated>rates_total-Bmax)

{ ... то что нужно обрабатывать начиная с бара[rates_total-Bmax]

}

Das Ergebnis ist, dass der Indikator überhaupt keine Bewegung macht.

 

Hallo noch einmal, könnten Sie mir bitte sagen, ob ich den Index eines Array-Elements kenne und welche Funktion verwendet wird, um seinen Wert herauszufinden?

int Totall=AuftragsSumme();

double Price; // Preis der ausgewählten Bestellung

double Mas[]; //Array zum Ordnen aller Aufträge

for(int i=0; i<OrdersTotal(); i++) //Bestellschleife

{

if(OrderSelect(i,SELECT_BY_POS)) // If(OrderSelect(i,SELECT_BY_POS)) // Wenn es einen nächsten

{Price=OrderOpenPrice(); //Füllung des Arrays mit Preisen

Mas[i] = Preis;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Jetzt werden die Eröffnungskurse in absteigender Reihenfolge sortiert

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // Der Index des Elements, das dem aktuellen Preis am nächsten kommt, wird ermittelt

 
Nauris Zukas:

Wie ich schon beim Studium der Kurse festgestellt habe, gibt es auch hier Nuancen, die in den Artikeln nicht beschrieben werden oder so versteckt sind, dass man sie mit einer Suchmaschine nicht finden kann. Einen ganzen Tag lang haben wir vergeblich nach Erklärungen gesucht. Zum Beispiel, was dieses Symbol bedeutet und wie es sich auswirkt, wenn nicht. Wie im folgenden Beispiel für Statik zu sehen ist, ist es erst da und dann nicht mehr: &

Auch bei diesem Symbol ist nicht klar, was es bedeutet: ~

*

Die Funktionen mql4, mql5 übergeben ein Array immer nur per Referenz (& == kaufmännisches Und)

Erstens gibt es in den formalen Parametern einer Funktion ein kaufmännisches Und-Zeichen, das anzeigt, dass nicht das Array selbst an die Funktion übergeben wird, sondern ein Link darauf. Und dann - innerhalb der Funktion - arbeiten Sie bereits mit der Referenz, was bedeutet, dass Sie sie nicht noch einmal angeben müssen.

Die Tilde (~) steht vor dem Namen des Klassendestruktors - der Konstruktor und der Destruktor haben denselben Namen wie die Klasse selbst, aber der Destruktor hat ~.

Lesen Sie diesen Artikel darüber, wann Sie Referenzen und wann Sie Zeiger verwenden sollten.

Allerdings müssen Sie trotzdem die Grundlagen lesen.

 
vikzip:

Hallo noch einmal, könnten Sie mir bitte sagen, ob ich den Index eines Array-Elements kenne und welche Funktion verwendet wird, um seinen Wert herauszufinden?

int Totall=AuftragsSumme();

double Price; // Preis der ausgewählten Bestellung

double Mas[]; //Array zum Ordnen aller Aufträge

for(int i=0; i<OrdersTotal(); i++) //Bestellschleife

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Preis=BestellungÖffnenPreis(); //Fülle Array mit Preisen

Mas[i] = Preis;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Jetzt werden die Eröffnungskurse in absteigender Reihenfolge sortiert

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // Der Index des Elements, das dem aktuellen Preis am nächsten kommt, wird ermittelt

Wert_Element_Array = Array[index];

 

Bitte beraten Sie, ich habe ein EA und ich habe es bei der Arbeit auf einem normalen Computer, Windows hp getestet. Alles funktioniert einwandfrei und so weiter.

Ich komme nach Hause, zu Hause Laptops macbook, und absolut mit den gleichen Parametern auf dem gleichen Tool mit dem gleichen Zeitrahmen zeigt ein völlig anderes Ergebnis in den Tester, irgendwelche Vorschläge oder Ideen, warum so?

 
Artyom Trishkin:

Array_element_wert = Array[index];


Danke, jetzt gibt es ein neues Problem. Beim Schreiben der folgenden Bedingung tritt ein Fehler 'PriceBlizko1' - nicht deklarierter Bezeichner auf. Bitte erklären Sie, warum?

doppelter Preis; // Preis für die ausgewählte Bestellung

double Mas[]; //Array zur Anordnung aller Aufträge

for(int i=0; i<OrdersTotal(); i++) // Auftragsschleife

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{


Preis=OrderOpenPrice(); //Fülle Array mit Preisen

Mas[i] = Preis;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Jetzt sind die Eröffnungskurse in absteigender Reihenfolge geordnet

int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Der Index des Elements, dessen Wert dem aktuellen Kurs am nächsten liegt, wird ermittelt

double PriceBlizko1=Mas[Blizko1];

}

if (PriceBlizko1-Bid>=30*Point) //wenn die untere Order weiter als 30 Punkte ist !!!!!! IN THIS STREET!!!!!

OrderSend(Symbol(),OP_SELL,LtsS,Bid,2,0,Bid+30*Point); //Verkaufsorder eröffnen

Alert (GetLastError()); //Fehlermeldung.



 
vikzip:

Verwenden Sie die Schaltfläche zum Einfügen des Codes!

Grund der Beschwerde: