[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 394
Alles klar!!!! Wenn es keine gewünschten Aufträge gibt, bleibt X gleich Null mit der gewünschten magischen Zahl und die Aufträge werden eröffnet. Wenn es welche gibt, ist X gleich 2 und es werden keine weiteren Aufträge eröffnet.
in der ersten Schleife for(int Uy=OrdersTotal();Uy<=-1;Uy--) So was, gut der Zyklus läuft mehr für die Hoffnung, dann änderte ich es auf 0, gibt es keine Änderung in der Arbeit, das sind alles keine Fehler, sie nicht ändern, ich entschuldige mich.
Es wurde ein Alert eingefügt, um die Arbeit des Zyklus zu verfolgen. Ich verstehe gar nichts. Die Variable, die in der Schleife ist, nur einmal, am Anfang, mit einem Wert von 0, und dann verkaufen Stop 0 und kaufen Stop 130, die auch überraschend ist, sind sie symmetrisch!!!! Und nach 2,5 m der Inschrift sagt bereits Fehler 148 (Broker verbietet viele Aufträge)
Oh, was für ein Unsinn. Und am Anfang stimmt jedes Mal das Datum nicht, etwa 49 Mal. Ja!!!! X bleibt immer bei 0 und es wird gut geschrieben. In 2 Aufträgen.
Alles klar!!!! Wenn es keine gewünschten Aufträge gibt, bleibt X gleich Null mit der gewünschten magischen Zahl und die Aufträge werden eröffnet. Wenn es welche gibt, ist X gleich 2 und es werden keine weiteren Aufträge eröffnet.
Wo liegt sonst das Problem?
- Im allerersten Moment wählen Sie mit der Funktion OrderSelect einen Auftrag aus, der noch nicht existiert.
in der ersten Schleife for(int Uy=OrdersTotal();Uy<=-1;Uy--) So was, die Schleife läuft mehr für die Hoffnung, dann änderte ich es auf 0, gibt es keine Änderung in der Arbeit, das sind keine Fehler, sie nicht ändern, ich entschuldige mich.
Wie kann sie länger laufen als ?
Unabhängig davon, wie viele Aufträge offen sind, ist die Bedingung Uy<=-1nicht sofort erfüllt, da die Anzahl der Aufträge sofort größer oder gleich Null ist
Wenn die Ticks laufen, das Icon von EA "lächelt", EA sollte Geschäfte machen (d.h. die Bedingungen dafür erscheinen), aber er macht sie nicht, dann ist es notwendig, zu debuggen.
Ordnen Sie den Befehl price() im Code des EA, insbesondere an den Stellen, an denen verglichen wird, und sehen Sie nach, was genau verglichen wird. Vielleicht haben Sie einen Vergleich über die Gleichheit von Variablen mit dem Typ double und das Ergebnis des Vergleichs ist immer falsch, während Sie davon ausgehen, dass die Variablen gleich sind.
Vielen Dank für die Tipps!!! Ich habe mein Problem gelöst. Es stellte sich heraus, dass der Broker, den ich brauchte, um eine Marktorder zu platzieren, d.h. gemäß den Bedingungen, nicht die Möglichkeit hat, gleichzeitig Stop Levels zu platzieren. Jetzt werden die Aufträge ohne Stopp-Levels platziert, und ich setze die Stopp-Levels unmittelbar nach jedem Auftrag. Ich habe dabei ein Problem: Nur ein sehr kleiner Teil der Aufträge wird geändert, während die meisten Aufträge in der Sektion "Expert Advisors" die folgenden Ergebnisse anzeigen:
2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: öffnen #30906670 verkaufen 0.01 CLM1 bei 99.79 ok 2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: ungültiges Ticket für OrderModify-Funktion 2011.05.19 09:55:40 Spacenewcomer-Svecha ESM1,M5: offen #30906787 kaufen 0.01 ESM1 bei 1337.50 ok
2011.05.19 10:00:03 Spacenewcomer-Svecha EURUSD,M15: Ungültiges Ticket für OrderModify-Funktion
Liebe Programmierer, ich bitte um einen Vorschlag zur Verbesserung des Expert Advisors: Es gibt eine offene Position und nach einiger Zeit gibt es ein Wiedereröffnungssignal in dieselbe Richtung. Ich möchte das zweite Signal nur ausfüllen, wenn der erste Auftrag bereits im Gewinn ist. Ich habe dies durch den Vergleich von Kontostand und Eigenkapital umgesetzt (wenn das Eigenkapital höher ist als der Kontostand, ist der eröffnete Auftrag im Plus). Können Sie einen Code vorschlagen, um den Gewinn/Verlust des letzten offenen Auftrags zu ermitteln?
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Alles klar!!!! Wenn es keine gewünschten Aufträge gibt, bleibt X gleich Null mit der gewünschten magischen Zahl und die Aufträge werden eröffnet. Wenn es welche gibt, ist X gleich 2 und es werden keine weiteren Aufträge eröffnet.
Wo liegt sonst das Problem?
- Im allerersten Moment wählen Sie mit der Funktion OrderSelect einen Auftrag aus, der noch nicht existiert.
in der ersten Schleife for(int Uy=OrdersTotal();Uy<=-1;Uy--) So was, gut der Zyklus läuft mehr für die Hoffnung, dann änderte ich es auf 0, gibt es keine Änderung in der Arbeit, das sind alles keine Fehler, sie nicht ändern, ich entschuldige mich.
Oh, was für ein Unsinn. Und am Anfang stimmt jedes Mal das Datum nicht, etwa 49 Mal. Ja!!!! X bleibt immer bei 0 und es wird gut geschrieben. In 2 Aufträgen.
Alles klar!!!! Wenn es keine gewünschten Aufträge gibt, bleibt X gleich Null mit der gewünschten magischen Zahl und die Aufträge werden eröffnet. Wenn es welche gibt, ist X gleich 2 und es werden keine weiteren Aufträge eröffnet.
Wo liegt sonst das Problem?
- Im allerersten Moment wählen Sie mit der Funktion OrderSelect einen Auftrag aus, der noch nicht existiert.
in der ersten Schleife for(int Uy=OrdersTotal();Uy<=-1;Uy--) So was, die Schleife läuft mehr für die Hoffnung, dann änderte ich es auf 0, gibt es keine Änderung in der Arbeit, das sind keine Fehler, sie nicht ändern, ich entschuldige mich.
Wie kann sie länger laufen als ?
Unabhängig davon, wie viele Aufträge offen sind, ist die Bedingung Uy<=-1 nicht sofort erfüllt, da die Anzahl der Aufträge sofort größer oder gleich Null ist
Helfen Sie mir, einen Fehler zu finden,
Dankeschön
Wenn die Ticks laufen, das Icon von EA "lächelt", EA sollte Geschäfte machen (d.h. die Bedingungen dafür erscheinen), aber er macht sie nicht, dann ist es notwendig, zu debuggen.
Ordnen Sie den Befehl price() im Code des EA, insbesondere an den Stellen, an denen verglichen wird, und sehen Sie nach, was genau verglichen wird. Vielleicht haben Sie einen Vergleich über die Gleichheit von Variablen mit dem Typ double und das Ergebnis des Vergleichs ist immer falsch, während Sie davon ausgehen, dass die Variablen gleich sind.
Vielen Dank für die Tipps!!! Ich habe mein Problem gelöst. Es stellte sich heraus, dass der Broker, den ich brauchte, um eine Marktorder zu platzieren, d.h. gemäß den Bedingungen, nicht die Möglichkeit hat, gleichzeitig Stop Levels zu platzieren. Jetzt werden die Aufträge ohne Stopp-Levels platziert, und ich setze die Stopp-Levels unmittelbar nach jedem Auftrag. Ich habe dabei ein Problem: Nur ein sehr kleiner Teil der Aufträge wird geändert, während die meisten Aufträge in der Sektion "Expert Advisors" die folgenden Ergebnisse anzeigen:
2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: öffnen #30906670 verkaufen 0.01 CLM1 bei 99.79 ok2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: ungültiges Ticket für OrderModify-Funktion
2011.05.19 09:55:40 Spacenewcomer-Svecha ESM1,M5: offen #30906787 kaufen 0.01 ESM1 bei 1337.50 ok
2011.05.19 10:00:03 Spacenewcomer-Svecha EURUSD,M15: Ungültiges Ticket für OrderModify-Funktion
Hier ist der Text des Codes:
{res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0, "basic",_MagicNumber,0,Red);
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss*Point,Ask-TakeProfit*Point,0,Red);
zurück(0);
}
Und es ist der erste Auftrag, der nach dem Start des Expert Advisors geändert wird!
Natürlich habe ich die Reihenfolge im Code falsch geändert... Bitte um Rat!
Können Sie einen Code vorschlagen, um den Gewinn/Verlust des letzten offenen Auftrags zu ermitteln?
Am zuverlässigsten ist die Messung in Pips.