Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXVII): Arbeiten mit Handelsanfragen - platzieren von Pending-Orders" - Seite 2

 
Реter Konow:

Fast 4 Megabyte Code, und die Bibliothek Schema und benutzerdefinierte Methoden sind nicht vorgesehen ... Schreiben Sie für sich selbst?

Sehen Sie durch die Augen Ihrer Benutzer. Wie ist es für sie, all dies ohne Bezugspunkte zu verstehen?

Gute, autarke Bezugspunkte sind die Artikel selbst. Sie haben nicht nur Leitlinien, sondern sind auch gründlich durchgekaut - falls Sie zu faul waren, sie zu lesen.

Das Schema findet sich am Ende der Bibliothekserstellung. Sowie User-Case-Methoden für den schnellen Zugriff auf alle Bibliotheksfunktionen.

 
Реter Konow:

Insbesondere wird in diesem Artikel nicht gesagt, warum beschlossen wird, eine ausstehende Bestellung sofort nach der Internetverbindung zu senden, ohne den Benutzer erneut zu befragen.

Es wird gewarnt, dass die in dem Artikel vorgestellten Pending Requests nicht für den realen Handel verwendet werden können. Das heißt, es handelt sich nur um Konzepttests und nicht um mehr.

Es gibt keine Erklärung dafür, wie man einen Auftrag nach der Wiederherstellung der Internetverbindung ohne Rückfrage beim Benutzer einstellt.

Und braucht man wirklich mehrere Artikel, um einen unkomplizierten Mechanismus eines Pending Trade Request zu testen? Außerdem ist es einfacher und korrekter, den Benutzer erneut abzufragen, und das war's dann auch schon.

Ich sehe sofort, dass Sie keine Handelsfunktionen geschrieben haben und nicht ganz verstehen, wovon wir sprechen.

Ich werde versuchen, es Ihnen noch einmal zu sagen (es war im letzten Artikel): Es gibt einige Fehler des Handelsservers, die eine gewisse Verzögerung erfordern, bevor eine Handelsanfrage erneut an den Server gesendet wird.
Normalerweise wird vorgeschlagen, diese Verzögerung mit Hilfe von Sleep() zu erreichen. Aber das stoppt die Programmausführung. Das gesamte Programm wartet also, bis die Pause innerhalb der Handelsmethode beendet ist, bevor die Handelsanfrage erneut an den Server gesendet wird.
Ist das gut so? Im allgemeinen und einfachsten Fall ist es in Ordnung.
Aber ein Expert Advisor kann aus mehreren Währungen bestehen. Und während der Wartezeit wird er nichts anderes tun als diese Wartezeit.
Ist das gut? Ich denke nicht - der Expert Advisor sollte weiterhin die Umgebung für alle seine Arbeitssymbole überwachen. Genau das ermöglichen ihm die Pending Requests: Wenn er einen Fehler vom Server erhält, der eine Wartezeit erfordert, erstellt er eine Pending Request mit der erforderlichen Anzahl von Versuchen und der erforderlichen Wartezeit dazwischen, und fährt mit seiner Arbeit fort. Dann sendet die Handelsklasse selbst die erforderliche Handelsanfrage rechtzeitig an den Server. Gleichzeitig prüft sie zunächst, "ob die Zeit für die Ausführung aller für die Handelsanfrage vorgesehenen Versuche abgelaufen ist". Daher wird der Expert Advisor nach hundertfünfzig Stunden keine veralteten Aufträge an den Server senden.

Und wenn Sie so gerne mit dem Programm kommunizieren, erlauben die von mir vorgeschlagenen "Pending Trade Requests" dem Benutzer, eine Bedingung festzulegen, wann ein Handelsauftrag gesendet werden soll. Sie legen die Bedingung fest und gehen Ihrer Arbeit nach - sobald die Bedingung eintritt, wird der Auftrag ausgelöst. Dies ist eine der vielen Methoden zur Erstellung von Handelslogik für Expert Advisors. Und wenn die Bibliothek zur Verfügung steht, um eine grafische Oberfläche für Ihre Programme zu erstellen, dann wird es einfach sein, Tools für die Erstellung von Handelslogik zu erstellen - geben Sie die erforderlichen Werte ein, legen Sie die Art der Anforderung fest und wann sie ausgeführt werden muss, und das war's....

Das ist das erste, was mir einfällt, um Ihre Frage zu erklären und zu beantworten, "warum das alles notwendig ist" - alles wird nicht "hier und jetzt" gemacht, sondern Stein für Stein, schrittweise.

 
Artyom Trishkin:

Es ist sofort klar, dass Sie keine Handelsfunktionen geschrieben haben und nicht wirklich wissen, wovon Sie reden.

Ich werde versuchen, es Ihnen noch einmal zu sagen (es war im letzten Artikel): Es gibt einige Fehler des Handelsservers, die eine gewisse Verzögerung erfordern, bevor eine Handelsanfrage erneut an den Server gesendet wird.
Normalerweise wird vorgeschlagen, diese Verzögerung mit Hilfe von Sleep() zu erreichen. Aber das stoppt die Programmausführung. Das gesamte Programm wartet also, bis die Pause innerhalb der Handelsmethode beendet ist, bevor die Handelsanfrage erneut an den Server gesendet wird.
Ist das gut so? Im allgemeinen und einfachsten Fall ist es in Ordnung.
Aber ein Expert Advisor kann aus mehreren Währungen bestehen. Und während der Wartezeit wird er nichts anderes tun als diese Wartezeit.
Ist das gut? Ich denke nicht - der Expert Advisor sollte weiterhin die Umgebung für alle seine Arbeitssymbole überwachen. Genau das ermöglichen ihm die Pending Requests: Wenn er einen Fehler vom Server erhält, der eine Wartezeit erfordert, erstellt er eine Pending Request mit der erforderlichen Anzahl von Versuchen und der erforderlichen Wartezeit dazwischen, und fährt mit seiner Arbeit fort. Dann sendet die Handelsklasse selbst die erforderliche Handelsanfrage rechtzeitig an den Server. Gleichzeitig prüft sie zunächst, "ob die Zeit für die Ausführung aller für die Handelsanfrage vorgesehenen Versuche abgelaufen ist". Daher wird der Expert Advisor nach hundertfünfzig Stunden keine veralteten Aufträge an den Server senden.

Und wenn Sie so gerne mit dem Programm kommunizieren, erlauben die von mir vorgeschlagenen "Pending Trade Requests" dem Benutzer, eine Bedingung festzulegen, wann ein Handelsauftrag gesendet werden soll. Sie legen die Bedingung fest und gehen Ihrer Arbeit nach - sobald die Bedingung eintritt, wird der Auftrag ausgelöst. Dies ist eine der vielen Methoden zur Erstellung von Handelslogik für Expert Advisors. Und wenn die Bibliothek zur Verfügung steht, um eine grafische Oberfläche für Ihre Programme zu erstellen, dann wird es einfach sein, Werkzeuge für die Erstellung von Handelslogik zu erstellen - geben Sie die erforderlichen Werte ein, legen Sie die Art der Anforderung fest und wann sie ausgeführt werden muss, und das war's....

Das ist das erste, was mir einfällt, um Ihre Frage zu erklären und zu beantworten, "warum das alles notwendig ist" - alles wird nicht "hier und jetzt" gemacht, sondern Stein für Stein, schrittweise.

Wenn die Verbindung mit dem Server unterbrochen wird, werden alle Berechnungen im Expert Advisor gestoppt, denn der Hauptmotor der Berechnungen ist der Preis.
Kein Internet - keine Ticks - nichts zu berechnen in einem Expert Advisor mit mehreren Währungen. Sie müssen auf die Verbindung warten. Nachdem die Verbindung wiederhergestellt ist, müssen Sie nach dem Senden der fehlgeschlagenen Orders fragen, und davor können Sie im Kreislauf des Wartens auf die Verbindung bleiben - es gibt sowieso nichts zu tun.
 
Реter Konow:
Wenn die Verbindung zum Server unterbrochen wird, werden alle Berechnungen im Expert Advisor gestoppt, denn der Hauptmotor der Berechnungen ist der Kurs.
Kein Internet - keine Ticks - nichts zu berechnen in einem Expert Advisor mit mehreren Währungen. Sie müssen auf die Verbindung warten. Nachdem die Verbindung wiederhergestellt ist, müssen Sie sich nach dem Senden der fehlgeschlagenen Orders erkundigen, und davor können Sie im Zyklus des Wartens auf die Verbindung verharren - es gibt sowieso nichts zu tun.
Pjotr, ein Verbindungsfehler ist nicht der einzige Fehler, bei dem man warten muss, bevor man ihn wiederholen kann. Du klammerst dich nur an einen künstlich erzeugten Fehler, um ihn zu testen...
In der Bibliothek wird es kein Sleep-waiting geben.
 
Artyom Trishkin:
Peter, ein Verbindungsfehler ist nicht der einzige Fehler, der ein Warten vor der Wiederholung erfordert. Sie klammern sich nur an einen künstlich erzeugten Fehler, um zu testen.....
In der Bibliothek wird es kein Warten im Ruhezustand geben.

Es ist unmöglich, alle Aufrufe des EA an den Server zu verfolgen.


  • Sie können Handelsaufträge, die an den Server gesendet werden, NUR über die Methoden Ihrer Bibliothek verfolgen. Und wenn die Aufträge über Ihre eigenen Funktionen gesendet werden?
  • Wie können Sie verfolgen und was können Sie im Falle eines Verbindungsabbruchs/einer Verbindungsunterbrechung tun, wenn der EA seine eigenen Methoden zur Kommunikation mit dem Server verwendet?
Daher die Frage:
  • Was können Sie als Lösung für Server-Kommunikationsprobleme vorschlagen, außer fehlgeschlagene Aufträge erneut zu senden?


Ich frage, weil die Lösung für das Problem des erneuten Versendens fehlgeschlagener Aufträge (offensichtlich) keine Komplikationen erfordert und einfach zu lösen ist.

 
Artyom Trishkin:

...

Lassen Sie mich versuchen, es noch einmal zu sagen (es war im letzten Artikel): es gibt einige Fehler des Handelsservers, die eine gewisse Verzögerung erfordern, bevor eine Handelsanfrage erneut an den Server gesendet wird.
Normalerweise wird vorgeschlagen, diese Verzögerung mit Sleep() zu erreichen. Aber das stoppt die Programmausführung. Daher wird das gesamte Programm warten, bis die Pause innerhalb der Handelsmethode beendet ist, bevor eine erneute Anfrage an den Server gesendet wird.
...

Benötigt wird eine spezifische Liste solcher Fehler und eine Erklärung - WAS die Bibliothek als Lösung anbietet.

Die Benutzer müssen dazu gebracht werden, die Funktionen der Bibliothek anzuwenden und nicht ihre eigenen.

Was sind also diese Fehler und was sind Ihre Lösungen im Allgemeinen?

 
Реter Konow:

...

Ich frage, weil die Lösung für das Problem der erneuten Übermittlung fehlgeschlagener Aufträge (offensichtlich) keine Komplikationen erfordert und einfach gelöst ist.

Ich habe mir den letzten Artikel angesehen. Dort geht es nur um das Scheitern des Versands einer Bestellung aufgrund der Nichtverfügbarkeit des Servers. Die Form der Lösung ist viel komplizierter, als ich mir vorstellen kann. Aber das Wesen der Lösung wird nicht komplizierter.

Für andere Arten von wiederholten Anfragen gibt es keine Lösung.

 
Реter Konow:

Ich habe mir den letzten Artikel angesehen. Darin ist nur davon die Rede, dass das Versenden einer Bestellung aufgrund der Nichtverfügbarkeit des Servers fehlschlägt. Die Form der Lösung ist viel komplizierter, als ich es mir hätte vorstellen können. Aber das Wesen der Lösung ist nicht komplizierter geworden.

Für andere Arten von wiederholten Anfragen gibt es keine Lösung.

Probieren Sie es aus :)
Wie können Sie nicht erkennen, dass ich zum Testen der Verarbeitung von ausstehenden Anfragen absichtlich nur einen der möglichen Fehler emuliert habe... Im nächsten Artikel habe ich diese Emulation vereinfacht - es gibt eine Reaktion auf den Auto-Trading-Button im Terminal.
Und die Liste der Fehler steht im Code. Ich möchte es nicht noch einmal erklären, für diejenigen, die es nicht lesen.
 
Artyom Trishkin:
Und Sie testen es :)
Wie können Sie nicht erkennen, dass ich zum Testen der Verarbeitung ausstehender Anfragen speziell nur einen der möglichen Fehler emuliert habe.... Im nächsten Artikel habe ich diese Emulation vereinfacht - es gibt eine Reaktion auf den Auto-Trading-Button im Terminal.
Und die Liste der Fehler befindet sich im Code. Ich will es nicht noch einmal erklären für diejenigen, die es nicht lesen.

Dies ist keine Antwort.

Sie wollen nicht über das Thema kommunizieren und zeigen, welche anstehenden Anfragen die Bibliothek bearbeiten kann.

Jede anstehende Anfrage (nicht Bestellung) braucht ihre eigene Lösung, - ihre eigene Magie, ihre eigenen Eigenschaften, ihre eigenen Methoden und so weiter. Und wo ist sie?

 
Реter Konow:

Das ist keine Antwort.

Sie wollen nicht über das Thema kommunizieren und zeigen, welche offenen Anfragen die Bibliothek bearbeiten kann.

Jede anhängige Anfrage (nicht Reihenfolge) braucht ihre eigene Lösung - ihre eigene Magie, ihre eigenen Eigenschaften, ihre eigenen Methoden und so weiter. Und wo ist sie?

Es liegt nicht an mir, dass Sie sich nicht zu diesem Thema äußern wollen, aber Sie verstehen nicht, worum es geht.
In drei Artikeln testen wir ein neues Handelskonzept - den Handel mit schwebenden Anfragen. Nach und nach werden in jedem Artikel neue Objekte-Abfragen hinzugefügt. Außerdem ist dies nur ein Test des Konzepts an einer vorübergehend erstelltenKlasse. Im vierten Artikel zu diesem Thema werden vollwertige Klassen solcher Objekte erstellt. Und das sind nicht viele, aber sie reichen aus, um alle Bedürfnisse des Konzepts abzudecken.
Damit ich Ihnen nicht alles noch einmal erklären muss, versuchen Sie bitte zu verstehen, warum Sie es brauchen und welche Möglichkeiten es Ihnen bietet. Ich habe nur ein paar Beispiele genannt, die mir sofort in den Sinn kamen.