Fragen zu MQL4 - Seite 8

 
Sie haben ihn gebeten, alle Bestellungen fünf Minuten vor Schließung der Bar zu vernichten, also wird er sie alle aufschreiben. Stellen Sie einfach die Uhrzeit richtig ein. Und verwenden Sie andere Teile des Codes, um unnötige Aufträge zu schließen. Oder möchten Sie, dass das gesamte Programm für Sie geschrieben wird?

Ich habe mich über den ersten Teil gewundert... wie kann man den zweiten Auftrag löschen, nachdem er ausgelöst wurde.
Meine Löschung erfolgt, bevor sie ausgelöst wird, aber der Löschalgorithmus basiert auf der Prüfung auf OFFENE Aufträge
. Zum Beispiel wurden zwei schwebende Aufträge eingestellt. Einer hat ausgelöst, d.h.
OrderType()==OP_SELL oder OrderType()==OP_SELL
Die entsprechende Zeile wird im Protokoll ausgedruckt
Und in den Testergebnissen
kommt Löschen vor Kaufen oder Verkaufen
und das führt zu Verwirrung bei der Auftragsnummerierung

. Und ich habe gefragt, ob ich am Ende des Tages schließen kann, ohne Curtime() zu verwenden, da die Aktualisierung von eingehenden Ticks abhängt und wenn sie fehlen, wird der EA nicht zu dem Zeitpunkt schließen, den ich brauche
Jetzt verstehe ich, dass das nicht geht, da der EA nicht ohne Ticks funktioniert.
 
Hängen Sie das Skript auf und es wird sich nicht darum kümmern, ob es Zecken gibt.
 
Das zweite können Sie auf diese Weise löschen:
   for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // Prüfung auf offene Position OrderSymbol()==Symbol()) // Prüfung auf Symbol { for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType()>OP_SELL && // Prüfung auf offene Position OrderSymbol()==Symbol()) // Prüfung auf Symbol { OrderDelete(OrderTicket()); } }


Und die Zeit...? Müssen Sie wirklich so genau sein? Stellen Sie ihn auf 2 Minuten ein, dann ist die Flaute normalerweise nicht mehr so groß.

 
Für Roger
Danke jetzt... Mit ein wenig Optimierungsarbeit funktionierte es wie gewünscht, obwohl ich immer noch nicht verstehe, warum es bei mir nicht funktionierte (es ist alles transparent bis zum Maximum)
Über die Flaute... Die Sache ist die, dass manchmal nicht zwei, sondern fünf oder mehr Minuten (je nach Kreuz)

Für Rosh
Geben Sie das Skript nicht weiter, wenn Sie es sicher haben?
 
int Coord[8]; Coord[8]=1;


Der Compiler zeigt keine Fehler an. Ist das so gewollt?

 
Ja, so sollte es sein.
GetLastError erzeugt bei der Ausführung einen Fehler. Der Compiler prüft die Werte von Ausdrücken nicht (die Konstante 8 ist ein Spezialfall eines Ausdrucks).
 
Slawa,
vielen Dank, ich werde jetzt die Dimensionalität von Arrays genauer im Auge behalten...)

Eine weitere einfache Frage.
Übersteigt die Losgröße deutlich den Betrag der verfügbaren Mittel, wenn die Eröffnung "von Hand" erfolgt...
- wird die erste Prüfung auf dem Server durchgeführt?
- Wenn nicht, warum bleibt das Fenster zum Öffnen der Bestellung mehrere Sekunden lang hängen?
- Wenn ja, ist es richtig, dass diese Prüfung vielleicht zuerst am Terminal durchgeführt werden sollte?
 
Für Roger<br / translate="no"> Danke jetzt... Mit ein wenig Optimierungsarbeit hat es funktioniert, obwohl ich immer noch nicht verstehe, warum es bei mir nicht funktioniert hat (alles ist bis zum Äußersten transparent)
Über die Flaute... Die Sache ist die, dass manchmal nicht zwei, sondern fünf oder mehr Minuten (je nach Kreuz)

Für Rosh
Können Sie das Skript weitergeben, wenn Sie eines haben?


Ich habe es gerade erst bemerkt oder vielleicht auch vergessen. Welches Skript ist dasjenige, das unabhängig von Zecken funktioniert?
Wenn ja, sollten wir etwas schreiben wie:

while (true) { startFromExpert(); Sleep(so lange wie nötig); }



Die Funktion startFromExpert() erhalten wir, indem wir einfach die start()-Funktion des EA umbenennen. Wir kopieren alles und fügen es in unser Skript ein, und vergessen Sie nicht, alle Parameter des EA zu verwenden.
Dies ist eine der Möglichkeiten.

 
In MQL 3 gab es eine Funktion:
TotalProfit - Gesamter nicht realisierter Gewinn auf allen offenen Positionen.
Ich kann nicht finden, wie man es in MQL 4 zu implementieren, bitte beraten, wie es zu tun.
 
Ich werde auch bald anfangen zu fluchen. Willst du die Hilfe nicht lesen?
double AccountProfit( ) <br / translate="no">

Gibt den Gewinnwert für das laufende Konto zurück.

Beispiel

Print("Gewinn", KontoGewinn());
Grund der Beschwerde: