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
Nun, ich habe einen bescheidenen Vorschlag. Ich schlage vor, eine Funktion in die Sprache einzuführen, die die Anzahl der Array-Zellen zurückgibt, in denen der angegebene Wert liegt (oder - im Falle eines Fehlers - minus eins zurückgibt), da wir sonst jedes Mal eine Schleife machen müssen. Die Funktion ArrayBsearch() ist nicht geeignet - sie gibt den falschen Wert zurück.
Der von dieser Funktion zurückgegebene Wert wird immer noch auf -1 geprüft, so dass Sie den Wert mit dem von ArrayBsearch zurückgegebenen Index auf Gleichheit mit dem gesuchten Wert prüfen können. Kein großer Unterschied
Ich zitiere aus der Referenz.
int ArrayBsearch(...)
Gibt den Index des ersten gefundenen Elements in der ersten Array-Dimension zurück.
Wenn es kein Element mit dem angegebenen Wert im Array gibt, gibt die Funktion den Index des nächstgelegenen Elements (nach Wert) zurück.
Nun, wenn man nicht nur nach dem Index einer Nummer im Array sucht, sondern nach einem Ticket der Bestellung, passt diese Funktion überhaupt nicht - warum brauche ich den Index des nächstgelegenen ähnlichen Tickets, wenn ich genau dieses Ticket benötige, und wenn es nicht vorhanden ist, ist die Bestellung nicht unter den marktgängigen - sie ist geschlossen und wir sollten sie in der Geschichte finden! Wenn Sie mit synchron verschobenen Arrays arbeiten, ist der Index sehr wichtig, und er muss entweder genau sein oder nicht verfügbar.
Lesen Sie noch einmal, was ich Ihnen geschrieben habe
"Der von dieser Funktion zurückgegebene Wert wird immer noch auf Gleichheit mit -1 geprüft, so dass Sie den Wert mit dem von ArrayBsearch zurückgegebenen Index auf Gleichheit mit dem gesuchten Wert prüfen können. Kein großer Unterschied."
Suchen Sie das nächstgelegene Ticket, vergleichen Sie es mit dem gesuchten Ticket, und wenn es nicht gleich ist, ist es nicht in der Liste.
Lesen Sie noch einmal, was ich Ihnen geschrieben habe
"Der von dieser Funktion zurückgegebene Wert wird immer noch auf Gleichheit mit -1 geprüft, so dass Sie den Wert mit dem von ArrayBsearch zurückgegebenen Index auf Gleichheit mit dem gesuchten Wert prüfen können. Kein großer Unterschied."
Finden Sie das nächstgelegene Ticket, vergleichen Sie es mit dem Ticket, wenn es nicht gleich ist, bedeutet dies, dass es nicht im Array ist.
Warum müssen Sie ständig herumlaufen? Zeigen Sie mir eine normale Programmiersprache, die nicht über eine Funktion verfügt, die den Index des gewünschten Array-Elements zurückgibt. Gut, ich schreibe die Funktion selbst, dann kann ich wenigstens das Array als Parameter an ein Unterprogramm übergeben.
Die Nachteile von MQL4 sind zahlreich. Die Flexibilität dieser Sprache ist unbrauchbar. Hören wir auf unsere Bedürfnisse und speichern wir den Code des Expert Advisors. А? Oder interessieren sich die Entwickler für niemanden außer sich selbst?
Na ja, was soll's, ich schreibe diese Funktion selbst, dann kann ich wenigstens das Array als Parameter an das Unterprogramm übergeben.
Bei allem Respekt, MQL4 ist immer noch das beste MTS auf dem Markt, aber die folgenden Dinge fehlen sehr stark:
1. eine API oder eine Möglichkeit, EA-Funktionen von einer DLL aus aufzurufen (Mister Developers - wir brauchen das wirklich !!!! )
Ereignisbehandler - mindestens ein Systemereignis (ein CallBack oder etwas mit einer Meldungsnummer, z. B. die Meldung - der Handel mit diesem Symbol wird eingestellt)
3. Strukturen, Zuweisungen im Satz a = b = d = e, implizite Typumwandlungen.
Ich bitte andere, sich anzuschließen und die Wunschliste in diesem Thread fortzuführen.
P.S. noch einmal zum ersten Punkt: Sie können alles so lassen, wie es ist - aber rufen Sie von der DLL aus an.
Ich würde gerne eine objektorientierte Sprache ähnlich wie C++ sehen.
Wenn wir uns dem Handel nähern
Ich möchte gerne
1 Aufruf dieser Funktion mit anpassbarem Timer (wäre eine sehr schöne Funktion)
2 LOSS TAKE ACTION (obwohl ich verstehe, dass dies programmatisch mit verschiedenen Handlern verfolgt werden kann)
3 es wäre schön, eine Art visuellen Debugger zu haben (obwohl ich mit dem Prüfdruck zufrieden bin)
drknn, schauen Sie mal hier: https://docs.mql4.com/ru/basis/variables/formal. Es geht nur um die Übertragung von Arrays.
Danke. Ich werde es mir ansehen.
Übrigens wäre es gut, die Sortierung der Registerkarten mit Code im Meta-Editor hinzuzufügen. Oft möchte man einige Module nebeneinander gruppieren, um nicht ständig scrollen zu müssen, um ein benötigtes zu finden.
In einer Sprache gab es ein Problem, als ich eine Zeichenfolgenvariable übergab, die ein Parameter einer anderen Funktion war.
Das hat so nicht funktioniert:
func(Symbol());
void func(string symbol) {
mql_func(symbol);
}
Aber es funktioniert folgendermaßen
void func() {
mql_func(symbol();
}
Warum müssen Sie ständig herumlaufen? Zeigen Sie mir eine normale Programmiersprache, die nicht über eine Funktion verfügt, die den Index des gewünschten Array-Elements zurückgibt. Gut, ich schreibe die Funktion selbst, dann kann ich wenigstens das Array als Parameter an ein Unterprogramm übergeben.
Die Algorithmen selbst zu implementieren ist übrigens kein "Workaround", sondern die Verwendung von Komponenten, Prozeduren, Bibliotheken und vorgefertigtem Code von Dritten. Dies ist eine Umgehung. Der wissenschaftliche Begriff dafür lautet "Lamerismus". :)
Die Entwickler haben bereits gesagt, dass sie eine Sprache für Programmierer und nicht für lahmarschige Programmierer entwickeln. :)
Jede Funktion, die sich viele Leute wünschen, kann man in einer halben Stunde selbst erstellen, anstatt 3 Jahre zu warten, bis die Entwickler sie für einen machen. Dann packt man sie in eine separate Bibliothek und fügt sie einfach in jeden neuen Expert Advisor mit einem üblichen Inlude ein. Ist es so schwer, das zu durchdenken? Das ist ein Kindergarten. Die Sprache ist cool, es gibt viele Möglichkeiten für Kreativität. Aber wenn ein Mensch nicht kreativ ist, ist diese Sprache für ihn kontraindiziert. Er ist in vielen Dingen kontraindiziert, auch im Handel. :) Entschuldigen Sie die mögliche Abruptheit, ich konnte es nicht ertragen.
Ich hätte mir nur gewünscht, dass ein Übergangsoperator hinzugefügt worden wäre. Der Rest ist für mich in Ordnung.
Wenn ich den OrderLots-Parameter im realen Handel ändern möchte, möchte ich ihn nicht löschen und einen neuen setzen müssen. Ich habe alle meine Zustände mit schwebenden Aufträgen gefüllt. Ich denke, es sollte nicht schwer zu implementieren sein. Renat, wenn Sie dies lesen, antworten Sie bitte.
Mann, warum musst du ständig herumlaufen? Zeigen Sie mir eine normale Programmiersprache, die nicht über eine Funktion verfügt, die den Index des gewünschten Array-Elements zurückgibt. Komm schon, ich werde diese Funktion selbst schreiben, dann kann ich wenigstens das Array als Parameter an ein Unterprogramm übergeben.
Die Algorithmen selbst zu implementieren ist übrigens kein "Workaround", sondern die Verwendung von Komponenten, Prozeduren, Bibliotheken und vorgefertigtem Code von Dritten. Dies ist eine Umgehung. Der wissenschaftliche Begriff dafür lautet "Lamerismus". :)
Die Entwickler haben bereits gesagt, dass sie eine Sprache für Programmierer und nicht für lahmarschige Programmierer entwickeln. :)
Jede Funktion, die viele Leute wollen, kann man in einer halben Stunde selbst machen, anstatt 3 Jahre zu warten, bis die Entwickler sie für einen machen. Dann wurden sie in eine separate Bibliothek geladen und einfach in jeden neuen Expert Advisor durch ein gewöhnliches Inlude eingefügt. Ist es so schwer, das zu durchdenken? Das ist ein Kindergarten. Die Sprache ist cool, es gibt viele Möglichkeiten für Kreativität. Aber wenn ein Mensch nicht kreativ ist, ist diese Sprache für ihn kontraindiziert. Er ist in vielen Dingen kontraindiziert, auch im Handel. :) Entschuldigen Sie die mögliche Abruptheit, ich konnte es nicht ertragen.
Wenn ich den OrderLots-Parameter im realen Handel ändern möchte, möchte ich ihn nicht löschen und einen neuen setzen müssen. Ich habe alle meine Zustände mit schwebenden Aufträgen gefüllt. Ich denke, es sollte nicht schwer zu implementieren sein. Renat, wenn Sie dies lesen, antworten Sie bitte.