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.
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?
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?
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
doubleDepo=10000.0, // Angegebene Kaution
Persent=30,// angegebener Prozentsatz
Geld;// Gesuchte Mittel.
string Quantity="GV_Quantity"; // Name der GV-Variable
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.
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);
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
Am besten ist es, die neuen CopyHigh-Funktionen von mql4 und die MathMax-Mathematikfunktion zu verwenden
Oder iHighest
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?
Wenn CopyHigh, dann ArrayMaximum, IMHO...
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?
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?
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()
}
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