Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 383

 
Vitalie Postolache:

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.

keine solche Funktion?
 
Tapochun:

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?

 
Artyom Trishkin:

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?

Wir können es so machen. Ich habe es mir einfach 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 und nicht die Prüfung+Eröffnung. Es wäre einfacher, das Programm zu verlängern. Kurz gesagt: eine Funktion - eine Aktion.
 
Artyom Trishkin:

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 ähnlich wie bei OrderTotal.
 
le0nid2014:
Ich dachte, es wäre so etwas wie OrderTotal, aber hier muss man den Rebound machen und die Funktion schreiben, um Bestellungen zu erkennen?
Wie kann man das ohne rohe Gewalt erreichen? Sie können viele Aufträge von vielen Expert Advisors für viele Symbole auf einmal haben. Sie möchten, dass Ihr Expert Advisor nur seine eigenen Aufträge verarbeitet, nicht wahr?
 
Tapochun:
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);

 
le0nid2014:
Ich dachte, es würde so etwas wie OrderTotal sein.
Natürlich können Sie auch nach Symbol, Typ und Magier nach einer Marktorder suchen und das Suchergebnis zurückgeben: true - ja, false - nein.
 
new-rena:
keine solche Funktion?
Ja, ich habe mich geirrt, als ich sagte "keine Inludes", diese Funktion ist nur in der Trade.mqh-Inlude enthalten.
 
Tapochun:
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);


}

 
le0nid2014:
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.
Die beiden EAs sollten die gleichen Assistenten haben. Sie sollten auf verschiedenen Charts für ein Symbol gestartet werden. Im Allgemeinen ist es natürlich einfacher, den Haupt-EA zu verbessern, als einen weiteren zu bauen.