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

 
Alexey Viktorov:

Nicht der letzte auf der Liste, aber der "jüngste" in der Zeit.

Obwohl ich genauso rücksichtslos bin. Die Frage bezieht sich auf Änderungen, und ich schreibe in der Nähe... Und wenn Sie es einfach ändern, wird es keine Löcher in der Liste der Aufträge geben... Möglicherweise müssen Sie nur Variablen hinzufügen und ihnen Werte zuweisen, und Sie MÜSSEN die Parameter überprüfen, um Fehler Nr. 1 zu vermeiden. Nun, Mila kann es selbst tun.

Artyom Trishkin:

Wie können Sie sicher sein, dass es nicht zu einer Sortierabhängigkeit kommt und Sie die falsche Reihenfolge nicht übersehen?

Auch hier gilt: Um die letzte Bestellung zuverlässig zu finden, muss sie anhand ihrer Öffnungszeit und nicht anhand ihrer Position auf der Liste identifiziert werden.

Soweit ich weiß, werden die Aufträge in der Liste nur vom frühesten (OrdersTotal()-1) bis zum spätesten (0) angeordnet. Wenn dies nicht der Fall ist (die Liste ist nicht nach Zeit sortiert) und Sie einen Beweis dafür haben, legen Sie ihn bitte vor.

Wenn Sie sagen, dass in dem Moment, in dem die Historie mit der Funktion OrdersTotal() angefordert wurde, ein anderer EA eine Bestellung aufgegeben hat, dann würde diese entweder übersprungen werden (weil sie in jedem Fall keine Zeit hatte, in der Historie der Bestellungen zu sein), oder sie würde auch die letzte in der Liste der Bestellungen werden.

Natürlich können wir uns stark rückversichern und die Zeit der Eröffnung aller Aufträge von insgesamt-1 bis 0 vergleichen, aber das wäre kaum eine optimale Lösung, wenn wir eine große Anzahl von Aufträgen und gehandelten Symbolen haben.

 
Alexey Kozitsyn:

Soweit ich weiß, werden die Aufträge in der Liste nur vom frühesten (OrdersTotal()-1) bis zum spätesten (0) sortiert. Wenn dies nicht der Fall ist (die Liste ist nicht nach Zeit sortiert) und Sie einen Beweis dafür haben, legen Sie ihn bitte vor.

Wenn Sie sagen, dass in dem Moment, in dem die Historie mit der Funktion OrdersTotal() angefordert wurde, ein anderer EA eine Bestellung aufgegeben hat, dann würde diese entweder übersprungen werden (in jedem Fall hätte sie keine Zeit, in der Historie der Bestellungen zu stehen), oder sie würde auch die letzte in der Liste der Bestellungen werden.

Natürlich können wir uns stark rückversichern und die Zeit der Eröffnung aller Aufträge von insgesamt-1 bis 0 vergleichen, aber das wäre kaum eine optimale Lösung, wenn wir eine große Anzahl von Aufträgen und gehandelten Symbolen haben.

Mein Gott... Beweise für sie...

Ich vermute, Sie erinnern sich nicht mehr daran, dass solche Situationen auf mql4.com lange Zeit diskutiert wurden. So kamen wir zu dem Schluss, dass es besser wäre, einen Auftrag nach der Zeit zu suchen, um seine Öffnungs-/Schließungszeit eindeutig zu bestimmen. Ich bin es bereits leid, immer wieder darauf hinzuweisen, dass es eine Abhängigkeit von der Sortierung gibt. Dann haben wir es geschafft, dass es nicht mehr von der Sortierung abhängig ist. Die Menschen entspannten sich und begannen zu tun, was Sie vorschlagen. Und dann bam... und es gab wieder eine Abhängigkeit vom Sortieren. Die Menschen heulten - die Roboter spielten verrückt. Und dann ist die Sortierabhängigkeit wieder verschwunden.

Wenn Sie den Wunsch haben, dass die vermeintliche Optimalität eines Tages wieder unter die Räder kommt, dann machen Sie es so, wie Sie es machen. Aber schlagen Sie anderen Menschen solche Lösungen nicht vor. Oder warnen Sie sie beim Angebot vor der Möglichkeit, jemals Geld zu verlieren, weil die Suche nach der erforderlichen Reihenfolge fehlschlägt, die (die Suche) von der Sortierung der Symbole in der Liste abhängt, die wiederum nicht von Ihnen und Ihrem Algorithmus abhängt. Im Gegenteil - Ihr Algorithmus hängt von jemand anderem ab...

Sagen Sie ihnen nicht, dass der Händler bei den Öffnungs- und Schließungszeiten schummeln kann, das ist eine andere Frage.

Viel Glück!

 
Artyom Trishkin:

Mein Gott... Beweise, die sie wollen...

Offenbar erinnern Sie sich nicht mehr daran, dass solche Situationen vor langer Zeit auf mql4.com diskutiert wurden. Da kamen Sie zu dem Schluss, dass es immer noch besser ist, einen Auftrag nach der Zeit zu suchen, um seine Öffnungs-/Schließungszeit eindeutig zu bestimmen. Ich bin es schon leid, immer wieder darauf hinzuweisen, dass es eine Abhängigkeit von der Sortierung gibt. Dann haben wir es geschafft, dass es nicht mehr von der Sortierung abhängig ist. Die Menschen entspannten sich und begannen zu tun, was Sie vorschlagen. Und dann bam... und es gab wieder eine Abhängigkeit vom Sortieren. Die Menschen heulten - die Roboter spielten verrückt. Und dann ist die Sortierabhängigkeit wieder verschwunden.

Wenn Sie den Wunsch haben, dass die vermeintliche Optimalität eines Tages wieder unter die Räder kommt, dann machen Sie es so, wie Sie es machen. Aber schlagen Sie anderen Menschen solche Lösungen nicht vor. Oder warnen Sie sie beim Angebot vor der Möglichkeit, jemals Geld zu verlieren, weil die Suche nach der erforderlichen Reihenfolge fehlschlägt, die (die Suche) von der Sortierung der Symbole in der Liste abhängt, die wiederum nicht von Ihnen und Ihrem Algorithmus abhängt. Im Gegenteil - Ihr Algorithmus hängt von jemand anderem ab...

Erzählen Sie mir nicht, dass der Händler bei der Öffnungs-/Schließzeit schummeln kann - das ist ein anderes Thema.

Viel Glück!

Ja, an solche Diskussionen kann ich mich nicht erinnern, ich lese das Vierer-Forum nicht oft. Vielleicht gab es früher einmal so etwas. Aber wenn man auf allem aufbaut, was "einmal war", reichen die Mittel nicht aus.

Wenn Sie um der vermeintlichen Optimalität willen den Wunsch haben, eines Tages wieder ins Fadenkreuz zu geraten, dann tun Sie, was Sie tun. Aber schlagen Sie anderen Menschen solche Lösungen nicht vor. Oder warnen Sie sie beim Angebot vor der Möglichkeit, jemals Geld zu verlieren, weil die Suche nach der erforderlichen Reihenfolge fehlschlägt, die (die Suche) von der Sortierung der Symbole in der Liste abhängt, die wiederum nicht von Ihnen und Ihrem Algorithmus abhängt. Im Gegenteil - Ihr Algorithmus hängt völlig von jemand anderem ab...

Wie Sie sagen, kann man auch auf andere Weise "ins Fadenkreuz geraten". Wenn Sie schnell die letzte Bestellung ermitteln müssen, ist es nicht rationell, sie alle in der Zeit zu durchsuchen.

Jeder sollte für sich selbst entscheiden, ob er meine Methode akzeptiert oder nicht. Die beste Lösung ist, viele Aufträge zu eröffnen und zu sehen, wie die Sortierung JETZT funktioniert.

Ich wünsche Ihnen auch viel Glück.

 
Artyom Trishkin:

Sind Sie sicher, dass Sie einen zuverlässigen Weg aufgezeigt haben, um die letzte Position in der Liste zu verfehlen?

Wenn Sie realistisch handeln, haben Sie dann nicht Angst, dass das Sortieren plötzlich süchtig machen könnte?

Dennoch brauchen wir hier IMHO zwei Zyklen - im ersten suchen wir nach der frischesten Position nach Eröffnungszeit, im zweiten ändern wir alle außer der, deren Ticket im ersten Zyklus gefunden wurde.

Nein, nicht sicher, aber logisch korrekt.

Habe unten über die Heimtücke von MQs gelesen - Angst ist aufgekommen. Danke für die Vorwarnung.

 
Alexey Kozitsyn:

Wenn Sie die letzte Bestellung schnell ermitteln müssen, ist es keine gute Idee, sie alle in der Zeit durchzugehen, und ich habe bereits gesagt, warum.

Warum sollten wir sie jedes Mal wiederholen müssen? Genau das ist die Irrationalität.

Wir können einmal pro Tick nach Marktpositionen und nach geschlossenen Aufträgen suchen und alle Felder der Struktur mit allen notwendigen Daten der letzten beiden Aufträge - offen und geschlossen - füllen.

Und verwenden Sie die Daten, die Sie während dieses Ticks erhalten haben. Nachdem Sie sie in diesem Tick geändert haben, erhalten Sie beim nächsten Tick neue Daten und neue Felder der beiden Strukturen. Meines Erachtens ist dies ein normales Gleichgewicht zwischen Zuverlässigkeit und Geschwindigkeit. Genau darum geht es bei der Optimalität. Und das, was Sie als Optimalität bezeichnen, ist IMHO nur ein Schmarrn ;)

 
Artyom Trishkin:

Warum sollte man sie jedes Mal wiederholen? Das ist genau der Punkt, an dem es nicht rational ist.

Sie können einmal pro Tick nach Marktpositionen und nach geschlossenen Aufträgen suchen und alle Felder der Struktur mit allen notwendigen Daten der letzten beiden Aufträge - offen und geschlossen - füllen.

Und verwenden Sie die Daten von diesem Tick. Nachdem Sie sie in diesem Tick geändert haben, erhalten Sie beim nächsten Tick neue Daten und neue Felder von zwei Strukturen. Meines Erachtens ist dies ein normales Gleichgewicht zwischen Zuverlässigkeit und Geschwindigkeit. Genau darum geht es bei der Optimalität. Und das, was Sie als Optimalität bezeichnen, ist IMHO nur ein Schmarrn ;)

Hier geht es um Nuancen, und niemand hat von "jedes Mal" gesprochen. Ich bin wie Sie für die Rationalität, wir haben nur unterschiedliche Ansichten darüber.

 
Alexey Kozitsyn:

Es geht hier um Nuancen, und niemand hat von "jedes Mal" gesprochen. Ich bin wie Sie für die Rationalität, nur haben wir beide eine andere Auffassung davon.

Ihre eigenen Worte:

Wo immer Sie schnell die letzte Bestellung ermitteln müssen, ist es nicht rationell, alle in der Zeit durchzugehen, imho...

"Überall" ist in diesem Zusammenhang nicht gleichbedeutend mit "jedes Mal"?

Deshalb habe ich gesagt: "Gehen Sie es einmal pro Tick durch", füllen Sie die Felder der Struktur mit den richtigen Daten aus und verwenden Sie sie überall dort, wo Sie Daten über die letzte Bestellung benötigen, anstatt sie jedes Mal durchzugehen.

Vielleicht habe ich Sie falsch verstanden? Aber der von Ihnen zitierte Ausdruck schließt, IMHO, eine Mehrdeutigkeit des Verständnisses aus.

 
Artyom Trishkin:

Ihre eigenen Worte:

"Überall" ist in diesem Zusammenhang nicht gleichbedeutend mit "jedes Mal"?

Deshalb habe ich geantwortet, dass es darum geht, einmal pro Tick durchzugehen, die Felder der Struktur mit den richtigen Daten auszufüllen und sie überall dort zu verwenden, wo die Daten der letzten Bestellung benötigt werden, und nicht, sie jedes Mal durchzugehen.

Vielleicht habe ich das missverstanden? Aber der von Ihnen zitierte Ausdruck schließt, IMHO, eine Mehrdeutigkeit des Verständnisses aus.

Sie berücksichtigen nicht, dass es im Programm Pausen/einfach lange Berechnungen geben kann, nach denen die Handelsumgebung aktualisiert werden muss. Es ist nicht immer bequem, ein Array von Aufträgen herumzuziehen, und ein globales Array ist nicht immer eine gute Lösung.

Wie gesagt, niemand will Sie entmutigen, aber es gibt Fälle, in denen Ihre Option weniger vorteilhaft ist (Systeme mit mehreren Währungen und mehreren Aufträgen). Und die Gewissheit, dass MQ die Sortierreihenfolge wieder ändern wird (da sie in mql4 und mql5 dieselbe ist), ist meiner Meinung nach nicht notwendig.

 
Alexey Kozitsyn:

Sie berücksichtigen nicht, dass es im Programm Pausen/einfach lange Berechnungen geben kann, nach denen Sie die Handelsumgebung aktualisieren müssen. Ein Array von Aufträgen hinter sich herzuziehen ist nicht immer bequem, und ein globales Array ist nicht immer eine gute Lösung.

Wie gesagt, niemand will Sie entmutigen, aber es gibt Fälle, in denen Ihre Option weniger vorteilhaft ist (Systeme mit mehreren Währungen und mehreren Aufträgen). Und um sicher zu sein, dass MQ die Sortierreihenfolge wieder ändert (da dies in mql4 und mql5 der Fall ist), ist es meiner Meinung nach nicht nötig.

Eine Klasse, die es Ihnen ermöglicht, einfach und mühelos Daten für beliebige Charaktere und Magier zu haben, wurde schon vor langer Zeit entwickelt. Und es ist nicht nötig, irgendetwas zu tragen, insbesondere nicht die gesamte Palette, sondern nur ZWEI Aufträge - den letzten offenen und den letzten geschlossenen. Jedes Mal, wenn Sie nach langen Berechnungen oder Wartezeiten Strukturfelder neu ausfüllen müssen, was Sie übrigens auch tun müssen, oder Sie aktualisieren Ihre Umgebung nicht?

GUT. Es ist ein Kinderspiel... Machen Sie es auf Ihre Art. Machen Sie sich keine Gedanken über die Zuverlässigkeit - vergessen Sie es...

 
Artyom Trishkin:

Längst gibt es eine Klasse, mit der man einfach und mühelos Daten über beliebige Symbole und beliebige Zauberer erhalten kann. Und es ist nicht nötig, irgendetwas zu ziehen, vor allem nicht das gesamte Feld, sondern nur ZWEI Aufträge - zuletzt geöffnet und zuletzt geschlossen. Jedes Mal, wenn Sie nach langen Berechnungen oder Wartezeiten Strukturfelder neu ausfüllen müssen, was Sie übrigens auch tun müssen, oder aktualisieren Sie die Umgebung nicht?

GUT. Es ist keine große Sache... Machen Sie es auf Ihre Art. Machen Sie sich keine Gedanken über die Zuverlässigkeit - vergessen Sie es...

Und ich aktualisiere die Umgebung, es ist nur so, dass Ihre Suchmethode viel länger dauert, das ist alles, und was die Zuverlässigkeit angeht, so ist das fraglich.
Grund der Beschwerde: