Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 569
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Und hier ist der Lösungsvorschlag:
Hallo! Ich habe eine kleine Frage beim Studium von MQL4. Das Problem findet sich in der Anleitung auf dieser Website. Hier ist die Bedingung: Problem 25. Erstellen Sie ein Programm, in dem folgende Bedingungen realisiert werden: Wenn die Rate den angegebenen Wert übersteigt, wird eine Nachricht ausgegeben, in der mit Worten angegeben wird, dass die Rate den Wert übersteigt (bis zu 100 Punkte); in den anderen Fällen wird die Nachricht darüber informieren, dass die Rate den angegebenen Wert nicht übersteigt.
Und hier ist der Lösungsvorschlag:
Zeigt mögliche Lösungen auf. Nützlich für die Ausbildung.
Es gibt noch andere Möglichkeiten. Es gibt noch andere Fehler.
Vertrauen Sie sich selbst mehr. Experiment.
Hallo! Beim Studium von MQL4 habe ich eine kleine Frage. Die Aufgabe befindet sich in der Anleitung auf dieser Website. Hier ist die Bedingung: Problem 25. Erstellen Sie ein Programm, das folgende Bedingungen erfüllt: Wenn die Rate den angegebenen Wert überschreitet, gibt es eine Meldung aus, dass die Rate den Wert überschreitet (bis zu 100 Punkte); in den anderen Fällen gibt es die Meldung aus, dass die Rate den angegebenen Wert nicht überschreitet.
Und hier ist der Lösungsvorschlag:
P.S.
Insbesondere die Nützlichkeit dieses Beispiels im Umgang mit einem Array,
die mögliche Darstellung von Daten in Worten,
die Verwendung der Funktion NormalizeDouble und der vordefinierten Variablen Point.
Möglichkeit, ein einfacheres Hobby zu wählen.
Offenbar gibt es keine Möglichkeit, externe Variablen direkt in der Klasse zu deklarieren. Welche Möglichkeiten gibt es dann? Wenn ich diese externen spezifischen Variablen, die nur bei Verwendung dieser Klasse benötigt werden, nicht im Expert Advisor selbst oder an anderer Stelle deklarieren möchte. Ich denke, die einzige Möglichkeit besteht darin, einen Inluder zu erstellen, der diese externen Variablen deklariert. Und dann sollte die Klasse mit einbezogen werden, richtig?
Um die Klasse aufrufen zu können, müssen Sie die Klasse selbst einbinden. Ist das so? Oder kann es auch andere Varianten geben?
Das sieht für mich einfach nicht gut aus. Eine Menge verschachtelter Einschlussdateien zu erstellen... Deshalb habe ich eine solche Frage.
Oder ist es immer noch möglich, wie in einer gewöhnlichen Bibliothek, externe Variablen zu deklarieren und die erforderlichen Bibliotheken zu importieren, bevor die Klasse deklariert wird? Ich meine so etwas wie das hier:
Das habe ich noch nie gesehen. Ich frage mich also, ob ich auf dem richtigen Weg bin...Geben Sie sie als globale Variablen über Comment auf dem Terminalbildschirm aus. Es gab keine Nullen, nur negative Zahlen. Dann änderte ich
Beim Übertragen des Indikatorcodes in den Expert Advisor tritt ein Fehler auf. Null-Division im Code-Teil
...
Geben Sie sie als globale Variablen über Comment auf dem Terminalbildschirm aus. Es gab keine Nullen, nur negative Zahlen. Dann änderte ich
...
zu.
...
fiel alles an seinen Platz, setzte es wieder an seinen Platz. Keinerlei Fehler! Was war die Ursache? Ich habe das Internet weiter ausgeschaltet.Außerdem erhielt ich die Fehlermeldung "zero divide", bei der die Null im Nenner des Bruchs nicht übergeben werden konnte. Vor der Aufteilung führe ich eine formale Prüfung durch:
Und der Fehler ist verschwunden. D.h. der Compiler sollte angewiesen werden, was zu tun ist, wenn der Nenner=0 ist, auch wenn der Programmierer 100% sicher ist, dass dort keine 0 steht.
Hallo, können Sie mir bitte mit dem Code helfen? Ich brauche die EA zu tun, die elementare Sache - offene Positionen bei der Annäherung an die vertikale (d.h. streng Zeit, nicht Preis) Linie, und zwar für eine bestimmte shi-Intervall, das ich hier 120 d.h. wie ich verstehe - 2 Minuten. Die Farbe der Linie sollte bestimmen, ob es sich um einen Kauf oder Verkauf handelt. Ich habe im Internet recherchiert und ihn umgeschrieben und folgendes erhalten:
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
Hallo, können Sie mir bitte mit dem Code helfen? Ich brauche die EA zu tun, die elementare Sache - offene Positionen bei der Annäherung an die vertikale (d.h. streng Zeit, nicht Preis) Linie, und zwar für eine bestimmte shi-Intervall, das ich hier 120 d.h. wie ich verstehe - 2 Minuten. Die Farbe der Linie sollte bestimmen, ob es sich um einen Kauf oder Verkauf handelt. Ich habe im Internet recherchiert und ihn umgeschrieben:
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
Wenn Ihre Zeit mit der Terminalzeit übereinstimmt, können Sie TimeLocal() verwenden, aber TimeCurrent() ist zuverlässiger .
Ändern Sie den Typ der Operacia-Variablen in int und entfernen Sie die Anführungszeichen OP_BUY und OP_SELL
Wenn Sie die gleiche Zeit wie die Terminalzeit haben, können Sie TimeLocal() verwenden, aber TimeCurrent() ist zuverlässiger .
Ändern Sie den Typ der Operacia-Variablen in int und entfernen Sie die Anführungszeichen OP_BUY und OP_SELL
Ich danke Ihnen. Über TimeCurrent ist es wahr, meine Zeit stimmt nicht mit der Serverzeit überein. Ich habe es repariert, aber es funktioniert immer noch nicht... Schreibt keine Fehler in das Protokoll.
P.S. In meinem vorherigen Beitrag wurde irgendwie Code ohne Leerzeichen eingefügt. Aber ich glaube, ich habe alle geschweiften Klammern richtig gesetzt.
MT4 - 625, Meldung des Testers beim Versuch, Eulen mit der Bibliothek zu testen:
2014.03.29 18:38:48.753 'C:\Programmdateien\Admiral1\MQL4\Bibliotheken\ingLib094.mq4' ist keine 32-Bit-Version
Davor hat die Eule problemlos kompiliert, und auch in der Bibliothek gab es kein einziges Wort. Eigentlich verstehe ich das überhaupt nicht.
Mein System (ich meine Windows) ist 32-Bit, ich hatte noch nie ein anderes. Siebte.
Die Bibliothek ist meine Heimatbibliothek, und zwar mit allem Drum und Dran. Läuft gut in Echtzeit auf dem neuen Build. Auch mit anderen Eulen. Und im Tester in früheren Versionen ohne Probleme.
Aber im Tester will es sich nicht öffnen, und der Grund dafür wird einem sogar aus den Fingern gesaugt.
Und in allen Handbüchern findet sich kein Wort über 32-Bit-Fälle.