Nützliche Funktionen von KimIV - Seite 3

 
KimIV:

Funktion ExistOrders().

Gibt ein Flag für das Vorhandensein einer Bestellung zurück. ...

Ich habe (für mich) "zurück" die Zahl der Aufträge. Damit werden gleich 2 Fliegen mit einer Klappe geschlagen (man muss nicht 2 Funktionen schreiben) - wenn > 0, existiert die Ordnung + wir können analysieren ... Wenn es "Löcher im Gitter" gibt, Auslösung von "Umkehrungen" usw. (Allerdings dauert die Funktion zu lange. (Richtig, die Funktion benötigt mehr Zeit, was aber nicht gerechtfertigt ist, da sie nur für den Zweck der Angabe gedacht ist)

Außerdem scheint es mir visuell intuitiver zu sein, und wenn man eine Variable zugewiesen hat, kann man sie weiter verwenden

... (ExistOrders("", OP_BUYLIMIT)+ExistOrders("", OP_SELLLIMIT)) > 0 ...

als ...

... (ExistOrders("", OP_BUYLIMIT) || ExistOrders("", OP_SELLLIMIT)) ...
 
SergNF писал (а):
Ich habe (für mich) eine "Rückgabe" der Anzahl der Bestellungen vorgenommen.
Es wird später eine Funktion NumberOfOrders() geben.
 
KimIV:
zhuki schrieb (a):

Zeigen Sie Ihre Version von Verzögerungen zwischen Handelsgeschäften

Ich mache keine Verzögerungen zwischen den Handelsgeschäften. Das heißt, wenn ich zwei oder mehr Aufträge erteilen muss, mache ich diese Geschäfte ohne Pause dazwischen. Zwischen den Handelsversuchen, die im Falle eines Fehlers beim Zugriff auf den Server wiederholt werden müssen, mache ich jedoch eine Pause gemäß den Empfehlungen der MT4-Entwickler. Als Beispiel können Sie sehen, wie solche Pausen in meiner SetOrder() -Funktion für den Online-Handel implementiert sind. Für verschiedene vom Handelsserver zurückgegebene Fehler werden unterschiedliche Pausen eingelegt.



Diese Funktion SetOrder() wird zum Setzen von schwebenden Aufträgen verwendet. Es wird für den Einsatz im Online-Handel auf Demo- und Realkonten empfohlen.


Wenn mehr als 20 EAs gehandelt werden, tritt immer der Fehler 146 auf. Die Funktion ist nur in der Lage, das Problem für einige wenige (2-4) EAs zu lösen, aber im Prinzip löst eine feste Verzögerung das Problem nicht...
Wenn mit 20 oder mehr Expert Advisors gehandelt wird, ist es notwendig, Arbitrage zu betreiben, zumindest mit dem Ethernet-Protokoll... Dann ist jeder Expert Advisor in der Lage, in den Markt einzusteigen, wenn er ein Signal erhält.
 
Igor, bitte "verwöhnen" Sie mich mit den Funktionen zum Schließen und Ändern von Aufträgen. ;-)
 
Lukyanov:
Igor, bitte "behandeln" Sie mich mit Funktionen zum Schließen und Ändern von Aufträgen. ;-)

Ja, auf jeden Fall... Aber ich werde zuerst mit der Funktion SetOrder abschließen. Ich warte nun auf die Eröffnung des Handels, um weitere Beispiele für die Verwendung dieser Funktion mit Datensätzen aus dem Protokoll zu geben. Das Testskript ist bereits fertig, aber es muss noch online getestet werden.

Es ist geplant, die Funktionen in alphabetischer Reihenfolge zu veröffentlichen:
- DeleteOrders
- ExistOrdersByLot
- GetLotLastOrder
- GetOrderOpenPrice
- IndexByTicket
- ÄndernAuftrag
- AnzahlBestellungen
- SelectByTicket
- SelectByTicketFromHistory

Sie (Thread-Besucher) können die Veröffentlichungsreihenfolge nach Ihren Wünschen anpassen. Doch zunächst werde ich mich mit der logischen Verwendung der Funktionen befassen, da viele von ihnen miteinander verbunden sind. Mit anderen Worten, als erstes werden die Funktionen veröffentlicht, die bei der Anwendung anderer, später platzierter Funktionen verwendet werden können.

 

Igor, du machst einen guten Job!

Aber... mit so viel Gepäck, und das Forum und das Buch, die Referenz und die kodobase.
Ich habe immer noch brennende Fragen, die zu stellen mir manchmal peinlich ist.
(Zum Glück bin ich ein Dummkopf und verstecke es nicht ... aber ich lerne noch ... :))

Und die Fragen liegen genau in diesen Kleinigkeiten und Nuancen, die es Ihnen ermöglichen, Codestücke zu verbinden
...genauer gesagt, um sicherzustellen, dass die Blöcke (Module) im Programm miteinander verbunden sind...

Ich verstehe, und ich versündige mich oft, wenn die Frage wie?
Die Antwort ist bestenfalls: ja...
Zum Beispiel der Trailing-Stop. Und auf die Frage, ob Sie Ihren eigenen TS verwenden können
Wenn Sie fragen, ob Sie Ihren eigenen TS verwenden können, wird die Antwort bestenfalls lauten: in 100 % der Fälle ja, in 90 % der Fälle fügen Sie Ihren eigenen TS hinzu, in 80 % der Fälle fragen Sie, welchen Sie verwenden werden :)))
usw... in absteigender Reihenfolge...
Und wie genau, Buchstabe für Buchstabe, ist leider nicht immer der Fall.

Ich freue mich also auch auf Beiträge, in denen die Änderungsfunktionen beschrieben werden,
und vielleicht eine detailliertere Anwendung in der Praxis...

 
klot писал (а):
Wenn Sie mit 20 oder mehr EAs handeln, müssen Sie Arbitrage betreiben, zumindest unter Verwendung des Ethernet-Protokolls... Dann kann jeder Expert Advisor in den Markt einsteigen, wenn er ein Signal erhält.
Was verstehen Sie unter "Arbitrage"?
 
kombat писал (а):
Und die Fragen liegen in diesen Kleinigkeiten und Nuancen, die es Ihnen ermöglichen, Teile des Codes zu verbinden
Genauer gesagt, die Gewährleistung der Verbindung von Blöcken (Modulen) des Programms...

Was meine Aufgaben betrifft, so werde ich alle Fragen beantworten. Wenn ich kann :-) ... Dafür ist dieser Thread gedacht. Das heißt, Sie können hier Fragen aus anderen Threads stellen, in denen ich meine Funktionen gepostet habe, ohne detaillierte Erklärungen zu geben. Sie können dies also gerne tun. Dies ist ein Thema, das ich noch lange behalten möchte. Ich habe allein für die Veröffentlichung von Beiträgen 4 Monate eingeplant. Und weitere Antworten auf Fragen...

kombat schrieb (a):
Also werde auch ich ungeduldig auf Beiträge mit Beschreibungen der Änderungsfunktionen warten,
und vielleicht eine detailliertere Anwendung in der Praxis...
Die Funktion ModifyOrder ist universell. Sie gilt sowohl für Aufträge als auch für Positionen. Ich werde darüber nachdenken, es so bald wie möglich in das Thema zu integrieren.
 
KimIV:
klot wrote:

Wenn Sie mit 20 oder mehr Expert Advisors handeln, sollten Sie Arbitrage betreiben, zumindest mit dem Ethernet-Protokoll... Dann ist jeder Expert Advisor in der Lage, in den Markt einzusteigen, wenn ein Signal empfangen wird.
Was verstehen Sie unter "Arbitrage"?

Hallo!
Mit "Arbitrage" meinte ich die Bereitstellung eines garantierten Zugangs zum Handelsfluss für viele gleichzeitig arbeitende Expert Advisors. Ich stand vor langer Zeit vor diesem Problem und bin zu dem Schluss gekommen, dass es besser ist, Mehrfachzugriff mit Kollisionserkennung aus dem Ethernet-Protokoll zu verwenden.
Das Wesentliche ist einfach. Wir prüfen, ob der Handelsstrom belegt ist. Wenn der Fluss besetzt ist, wird eine zufällige Pause (ab 1 Sekunde) eingelegt. Wenn der Handelsfluss frei ist, "senden" wir sofort einen Auftrag. Wenn Sie mit mehreren Expert Advisors handeln, hat jeder Expert Advisor seine eigene Zufallspause, und die Expert Advisors belegen den Handelsfaden abwechselnd. Es wird keine Konflikte zwischen den Experten geben.
Zum Beispiel:
if( IsTradeContextBusy() )  Sleep(MathRand()+1000);
 
Wenn 10 Experten auf die Freigabe eines Handelsstroms warten (jeder in seinem eigenen unabhängigen Strom), was kann passieren, wenn zufällig mindestens 2 zusammenfallen?
Ich rechne und verwende andere Prinzipien. Wenn ein Handelsfaden von jemandem besetzt ist, funktionieren die übrigen EAs einfach nicht (kehren zurück), und dies wird zu Beginn eines EAs überprüft (warum analysieren, wenn sowieso nichts getan werden kann).
Das glaube ich nicht, danke.
Grund der Beschwerde: