Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 383
![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
Wenn nicht extern - gibt es PositionClose
Sie können auch eine Position mit demselben Volumen in der entgegengesetzten Richtung eröffnen, was zu einer Glattstellung führen wird.
Wir setzen zwei lokale Variablen in der Funktion OnTick vom Typ bool: buyExist = false und sellExist = false.
Wenn ein neuer Tick kommt, prüfen Sie, ob es irgendwelche Aufträge gibt, die zu diesem EA gehören. Liegt ein Verkaufsauftrag vor, ist sellExist = true und dasselbe gilt für den Kaufauftrag. Und dann prüfen Sie, ob buyExist = true ist - öffnen Sie keine Kauforder. Das Gleiche gilt für den Verkauf. Das ist alles.
Wozu brauchen wir unnötige Variablen, wenn wir ohnehin prüfen, ob es offene Stellen gibt?
Wir haben überprüft, ob es irgendwelche Kaufpositionen gibt - keine offene Kaufposition, wir haben eine eröffnet. Warum brauchen wir Variablen?
Warum brauchen wir zusätzliche Variablen, wenn wir ohnehin nach offenen Stellen suchen?
Wir prüfen auf Kaufen - kein Kauf offen - wir öffnen einen, wir prüfen auf Verkaufen - kein Verkauf offen - wir öffnen einen. Warum brauchen wir Variablen?
Warum brauchen wir zusätzliche Variablen, wenn wir ohnehin nach offenen Stellen suchen?
Wir prüfen auf Kaufen - kein Kauf offen - wir öffnen einen, wir prüfen auf Verkaufen - kein Verkauf offen - wir öffnen einen. Warum brauchen wir Variablen?
Ich dachte, es wäre so etwas wie OrderTotal, aber hier muss man den Rebound machen und die Funktion schreiben, um Bestellungen zu erkennen?
Das könnten Sie tun. Ich habe mir das als eine separate Prüffunktion vorgestellt, bei der die Flaggen per Referenz übergeben werden. In diesem Fall führt meine Variante nur eine Funktion aus - die Prüfung auf Aufträge, nicht die Prüfung+Eröffnung. Es wäre einfacher, das Programm zu verlängern. Kurz gesagt: eine Funktion - eine Aktion.
Nun, die Prüfung ist ein Funktionsaufruf, der ein Flag zurückgibt:
if(!Function_check_open_position(symbol, OP_BUY,magic)) function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Function_check_open_position(symbol,OP_SELL,magic)) Function_open_position(symbol,OP_SELL,Lots,stop_loss,take_profit,magic,comment);
Ich dachte, es würde so etwas wie OrderTotal sein.
keine solche Funktion?
Wie kann man es schaffen, ohne sich zu sehr anzustrengen? Sie können einen Haufen von Aufträgen von einem Haufen von Expert Advisors auf einem Haufen von Symbolen zur gleichen Zeit haben. Und Sie möchten, dass Ihr EA nur Ihre Aufträge verarbeitet, nicht wahr?
Er ist eine erste Ergänzung zum Hauptroboter. der Hauptroboter hat immer zwei offene Aufträge in beide Richtungen (der Hauptroboter holt sie ab, aber der Hauptroboter selbst kann nicht starten. Wenn der Hauptroboter eine der Richtungen beendet, schließt er sie) und dann sollte dieser EA wieder eine Order in der Marktrichtung öffnen, in der keine Order vorliegt.
Wir müssen lediglich die Bedingungen für die Auftragseröffnung hinzufügen.
extern double Lots = 1.00;
extern int MagicNumb = 698541; //Magie
int start ()
{
if(Auftragssumme() == 0 && ********** )
OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0, "5891",MagicNumb,0,Red);
if (OrdersTotal() == 0 && ***********)
OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0, "58892",MagicNumb,0,Red);
}
Er ist eine erste Ergänzung zum Hauptroboter. der Hauptroboter hat immer zwei offene Aufträge in beide Richtungen (der Hauptroboter holt sie ab, aber der Hauptroboter selbst kann nicht starten. Wenn der Hauptroboter eine der Richtungen beendet, schließt er sie) und dann sollte dieser EA wieder eine Order in der Marktrichtung öffnen, in der keine Order vorliegt.