Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 40
![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
Korrigieren
Es gibt keine andere Möglichkeit, es irgendwo anders zu formulieren, es wäre ein falscher Parameter.
Es sollte die letzte Version berücksichtigt werden.
Ich werde versuchen, es zu ändern.
Ich habe versucht, die Standardfunktion OrderModify() zu verwenden, aber sie wird blockiert, wenn ich viele Aufträge gleichzeitig und ständig verschiebe
Danke für die Kritik.
Erklären Sie es OHNE ARGUMENTE, ist das wirklich so schwer?
{код функции}
Und rufen Sie auch eine leere auf, und setzen Sie die elza hinter geschweiften Klammern ab:
else {когда есть ордера}
Und jetzt haben Sie das hier:
Versuchen Sie es ^_~
Es funktioniert nicht... Kein Handel, kein Handel...
Werden zumindest die ausstehenden Aufträge angezeigt, nein, wo liegen die Fehler?
...ich habe es repariert.
Fertige Argumente. Terminal hängt fest.
Es gibt also eine Art Schleife, die sich endlos hin und her bewegt.
Schreiben Sie #property strict an den Anfang des Codes und beheben Sie es, viele Warnungen.
Es ist durchaus möglich, in der letzten Funktion durch 0 zu teilen.
Andernfalls wird nur die erste Zeile ausgeführt, der Klammerblock bleibt verwaist.
Generell sollte man die Logik zuerst mit Worten zu Papier bringen, sonst ist sie wackelig.
Es soll einen Befehl mit einem fließenden Dezimalpunkt ausführen, der von den Dezimalstellen in der Tabelle abhängt
NormalizeDouble(Ask+TakeProfit*Point(),Digits)
und wie haben Sie festgestellt, dass einige Zeilen nicht ausgeführt wurden?
Es soll einen Befehl mit einem fließenden Dezimalpunkt ausführen, der von den Dezimalstellen in der Tabelle abhängt
NormalizeDouble(Ask+TakeProfit*Point(),Digits)
Woher wissen Sie, dass einige Zeilen nicht ausgeführt werden?
Ja, ich habe große Probleme mit der Logik. Und was bliebe vom Ergebnis übrig, wenn es in eine Ganzzahlvariable geschrieben wird? Was ist der Sinn dieses Codes?
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
Ist es hier so schwer zu verstehen, dass ein Teil des Codes ein Waisenkind ist und unabhängig von der Bedingung ausgeführt wird?
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
Ja, das ist ein großes Problem mit der Logik. Und was bleibt vom Ergebnis übrig, wenn es in eine Integer-Variable geschrieben wird? Was ist der Sinn dieses Codes?
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
Ist es so schwer zu verstehen, dass ein Teil des Codes ein Waisenkind ist und nicht ausgeführt wird?
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}
Stopp
wenn es Aufträge gibt
Die Auftragsart ist
{
dann werden die Vorgänge für diese Auftragsart ausgeführt
}
nicht?
Ich kann nicht herausfinden, woher die Nullteilung kommt.Stopp
wenn es Aufträge gibt
ist die Auftragsart
{
dann werden die Vorgänge für diese Auftragsart ausgeführt
}
Nein?
Ja, Sie haben recht, aber der Code ist so geschrieben, dass mein Vorredner ihn falsch interpretiert hat.
Hinzugefügt:zero divide ist eine Division durch Null, und es sagt Ihnen im Protokoll, welche Zeile
Stopp
wenn es Aufträge gibt
ist die Auftragsart
{
dann werden die Vorgänge für diese Auftragsart ausgeführt
}
Nein?
Oben korrigiert. Was nach else kommt, wird abhängig von der Bedingung ausgeführt. Der Block der geschweiften Klammern ist separat, er hat also nichts mit else zu tun.
Das ist der Ort, an dem
{
double avg_price; //+------------средняя цена
price=0;//+------------цена
bool z;//+------------выход в переменную
double orderlots=0; //+------------лоты
avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот