Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 852

 
Wie finde ich den Höchstwert von High[] unter mehreren Balken?
 

Am besten ist es, die neuen CopyHigh-Funktionen von mql4 und die MathMax-Mathematikfunktion zu verwenden

Oder iHighest

 

Guten Morgen, sagen Sie mir, wo der Fehler liegt.

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

Die Idee ist, dass der Code bei jeder Iteration die Kanalbreite überprüfen sollte und wenn sie kleiner oder gleich dem aktuellen Wert ist(z11-z12<=z10), sollte ein Rechteck gezeichnet werden, aber die Ausgabe ist, dass alle Iterationen zuerst durchlaufen werden, und dann gibt es eine Prüfung auf Konsistenz.
 
AlexeyVik:

Am besten ist es, die neuen CopyHigh-Funktionen von mql4 und die MathMax-Mathematikfunktion zu verwenden

Oder iHighest

Wenn CopyHigh, dann ArrayMaximum, IMHO...
 

Wie ist mit Fehler Nummer 1 (ERR_NO_RESULT Kein Fehler, aber Ergebnis unbekannt) umzugehen?

Wenn eine Order mehr als $1 (100 Pips bei 0,01 Lot) auf EURUSD verliert, versucht mein Expert Advisor, die Order zu modifizieren (TakeProfit der Order zu ihrem Eröffnungskurs zu platzieren).

Ich erhalte diese Fehlermeldung, was soll ich tun?

 
evillive:
Wenn CopyHigh, dann ArrayMaximum, IMHO...
Ja, das habe ich auch gedacht... Es kann zu Ausrutschern und Missverständnissen kommen. Vor etwa eineinhalb Monaten wurde im fünften Forum die gleiche Frage gestellt. Dort habe ich also über ArrayMaximum gesprochen, und hier ist etwas durcheinander geraten...
 

Hallo, ich arbeite mit 2000 gleitenden Durchschnitten(MAs).

Die Aufgabe besteht darin, die Anzahl der Wiederholungen des MA-Kurses bei Close[1] zu berechnen.

- Wie kann ich diese Aufgabe mit minimalen Ressourcen umsetzen?

 
Top2n:

Hallo, ich arbeite mit 2000 gleitenden Durchschnitten (MAs).

Die Aufgabe besteht darin, die Anzahl der Wiederholungen des MA-Kurses bei Close[1] zu berechnen.

- Wie kann ich diese Aufgabe mit minimalen Ressourcen umsetzen?

Wenn wir die Periode 1 bei den Schlusskursen nicht verwenden, ist die Anzahl der Wiederholungen gleich Null. Aber wenn wir in einen bestimmten Bereich kommen, kann die Aufgabe lösbar und interessanter sein. Alternativ können wir auch die Höchst- und Mindestwerte ermitteln. Wir teilen die Differenz durch den Bereich. Dann definieren wir einen Bereich, der in jede Bewegung fällt (wir werden ein Array betrachten, das Bereichen oder Intervallen entspricht). Der Array-Index mit der höchsten Trefferzahl ist der Gewinner. Vielleicht habe ich mich nicht ganz klar ausgedrückt. Die Aufgabe sollte besser in einem separaten Thema gelöst werden. Es kann mehrere Varianten der Lösung geben. Und in Zukunft wird sie vielleicht jemand brauchen. Und hier werden sie danach kein Ende mehr finden.
 

Hallo, Lesen des Tutorials, bekam zu den GV-Variablen. Ich kann nicht verstehen, wie sie funktionieren. Zum Beispiel sagt das Tutorial, dass GV-Variablen nur vom Typ double sein können. Okay, doppelt und nochmals doppelt). Bei der Auflistung der FunktionenGlobalVariableSet(),GlobalVariableGet(),GlobalVariableDel() heißt esdann aber, dass eine davon die Zeit zurückgibt, eine andere den Wert bool, usw. Ich bin verwirrt, ich verstehe nicht, wie sie organisiert sind. Ich habe vor kurzem auch angefangen, MQL4 zu studieren, ich habe eine Menge neuer Informationen in meinem Kopf. Wenn möglich, erläutern Sie mir bitte ein Beispiel für eines der Probleme aus einem Lehrbuch (oder eines Ihrer eigenen):

Aufgabe 24. Mehrere Expert Advisors arbeiten gleichzeitig im Terminal. Der Einzahlungsbetrag beträgt 10 000 $. Der Gesamtwert aller offenen Aufträge sollte 30 % des Einzahlungsbetrags nicht überschreiten. Jedem Expert Advisor sollte der gleiche Geldbetrag zugewiesen werden. Erstellen Sie ein Expert Advisor-Programm, das die Berechnung des für den Handel vorgesehenen Geldbetrags enthält.

intExperten;//Anzahl der Expertenberater. von Experten

double Depo=10000.0, // Angegebene Kaution

Persent=30,// angegebener Prozentsatz

Geld;// Gesuchte Mittel.

string Quantity="GV_Quantity"; // Name der GV-Variable

//--------------------------------------------------------------------

int init()//Spezial. Funktion init

{

Experts=GlobalVariableGet(Quantity); // Textwert abrufen.

Experts=Experts+1; // Anzahl der Experten.

GlobalVariableSet(Menge, Experten); // Neuer Wert

Money=Depo*Persent/100/Experts; // Exp.

Alert("Für den Experten im Fenster ", Symbol()," zugeteilt ",Money);

Rückkehr;// Beenden von init()

}

//--------------------------------------------------------------------

int start()// Spezial. Funktionsbeginn

{

int New_Experts= GlobalVariableGet(Quantity);// Neue Anzahl von exp.

if (Experts!=New_Experts) // Falls geändert

{

Experts=New_Experts; // Die aktuelle Anzahl ist jetzt

Money=Depo*Persent/100/Experts; // Neuer Wert von exper.

Alert("Neuer Wert für Experte ",Symbol(),": ",Geld);

}

/*

...

Hier muss der Hauptcode des Expert Advisors angegeben werden,

die den Wert der Variablen Money verwendet

...

*/

Rückkehr;//Ausstieg aus start()

}

//--------------------------------------------------------------------

int deinit()//Proper. Funktion deinit()

{

wenn (Experten ==1)// Wenn nur ein Experte..

GlobalVariableDel(Menge); //... GV-Variablen löschen

sonst// Ansonsten..

GlobalVariableSet(Menge, Experten-1); //...um 1 verringern

Alert("EA wird aus dem Fenster entladen ",Symbol()); // Benachrichtigung über das Entladen

Rückkehr;// Beenden von deinit()

}

 
Vinin:
Wenn Sie bei Schlusskursen die Periode 1 nicht verwenden, ist die Anzahl der Wiederholungen gleich Null. Aber wenn man zählt, dass man einen bestimmten Bereich trifft, dann könnte das Problem lösbar und interessanter sein. Alternativ kann man auch die Maximal- und Minimalwerte ermitteln. Wir teilen die Differenz durch den Bereich. Dann definieren wir einen Bereich, der in jede Bewegung fällt (wir werden ein Array betrachten, das Bereichen oder Intervallen entspricht). Der Array-Index mit der höchsten Trefferzahl ist der Gewinner. Vielleicht habe ich mich nicht ganz klar ausgedrückt. Die Aufgabe sollte besser in einem separaten Thema gelöst werden. Es kann mehrere Varianten der Lösung geben. Und in Zukunft wird sie vielleicht jemand brauchen. Und hier werden sie danach kein Ende mehr finden.

Ich werde darüber nachdenken, danke.

eigenes Thema - https://forum.mql4.com/ru/66882