[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 263

 
Valdemar:


Vielen Dank für Ihr Feedback, lieber PapaYozh,aber ich habe diese Funktion auch in int start() eingefügt, es ändert immer noch nicht das Ergebnis des Compilers.

Am Ende zeigt mir der Compiler diese Fehler an, und ich denke, es bezieht sich auf die falsche Variablendefinition?

Voldemar, die Leute versuchen, Ihnen zu sagen, was alle Dokumente, Tutorials und Beispiele sagen: der Körper einer Benutzerfunktion muss außerhalb anderer Funktionen stehen, zum Beispiel nach der letzten Zeile der Start-Funktion.
 
ilunga:

Nochmals:

Dokumentation:

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Der zehnte Parameter in der Zeichenfolge "Newest" ist keine Zahl. Aus diesem Grund gibt es einen Fehler

Sie müssen sie also einfach entfernen?
 
Pyxlik2009:
Es muss also nur entfernt werden?

Sie müssen die Parameter korrekt an die aufgerufene Funktion übergeben.
 

Leute bitte helfen

 
granit77:
Voldemar, die Leute versuchen, Ihnen zu sagen, was alle Dokumente, Tutorials und Beispiele sagen: der Körper einer benutzerdefinierten Funktion muss VOR den anderen Funktionen platziert werden, z.B. nach der letzten Zeile der Start-Funktion.


Ich dankegranit77 und allen, die mir ihre kostbare Zeit geschenkt haben. Es ist mir gelungen, denn ich denke, alle haben sich über die ersten Erfolge bei der Erreichung des angestrebten Ziels gefreut.

Danke!!!!

...ich hoffe, dass ich hier in naher Zukunft jemandem helfen kann.



 
Pyxlik2009:

Leute, bitte helft mir.

Soll ich es für Sie halten? :))))

Ersetzen Sie "Newest" durch eine Zahl.

 
Starting:


Ich glaube, ich habe mich nicht ganz klar ausgedrückt.

Behauptung 1: Jeder Code, der nach der Auslösung einer schwebenden Order auf das Eröffnungsdatum dieser Order zugreift (die zum Zeitpunkt der Auslösung handelbar geworden ist), erhält das Eröffnungsdatum, das dem Datum der Einstellung der schwebenden Order entspricht - so funktioniert die Funktion OrderOpenTime().

Behauptung 2: Ohne einen Expert Advisor, der den Status der Aufträge auf dem Konto ständig überwacht, können Sie sich nicht an den genauen Zeitpunkt der Auslösung eines schwebenden Auftrags erinnern.


Mögliche Lösung 1. Wir können versuchen, vom Datum der Einstellung des schwebenden Auftrags bis zum aktuellen Datum zu laufen und den Zeitpunkt der ersten Kreuzung des Eröffnungskurses und der Auslöseschwelle zu notieren.

Dies wird mehr oder weniger genau die Zeit sein, aber es gibt ein großes Minus: die Spanne. Da wir den Spread nicht in der Historie aufzeichnen (ich nehme die Tick-Historie mit dem Spread aus Dukas nicht, da ich zum Beispiel nicht mit Dukas handle und wir sie sammeln und aufzeichnen müssen), kann die Order viel früher ausgelöst worden sein, als der Preis fast das offene Niveau berührte, es aber nicht überschritt, und die Order wurde aufgrund der Spread-Ausweitung geöffnet, und nicht später, als wir tatsächlich sahen, dass der Preis die Linie zum Setzen der ausstehenden Order überschritt.


Die wahrscheinlichste Lösung besteht darin, einen Expert Advisor zu erstellen, ihn auf dem Chart zu platzieren und die Aufträge auf dem Konto zu überwachen. Ich möchte das aus einigen Gründen nicht tun, und es gibt auch Nachteile im Zusammenhang mit möglichen Problemen während der Pausen im EA-Betrieb.


Die Funktionen, auf die Sie hingewiesen haben. Sie haben einen Link auf die Funktion OrderOpenTime() angegeben. Bei den verzögerten Aufträgen ist es das Datum ihrer Erstellung und nicht das Datum ihrer Auslösung. Daher sind die bestehenden Funktionen nicht geeignet. Und es gibt keine Möglichkeit, sie zu kombinieren, da sie sich immer noch auf OrderOpenTime() für das Datum der Auftragseröffnung beziehen.


Ihre Behauptungen beunruhigen mich etwas. Nach der Umwandlung eines schwebenden Auftrags mit dem Ticket, z.B. 12, wird es keinen schwebenden Auftrag mit dem Ticket 12 in der Historie geben. Es gibt eine offene Position mit Ticket 12, und ihr Typ ist OP_BUY oder OP_SELL. Der Zeitpunkt der Eröffnung ist der Zeitpunkt der Umwandlung eines schwebenden Auftrags in einen Marktauftrag.

Bitte korrigieren Sie mich, wenn es falsch ist.

In jedem Fall benötigen Sie einen Expert Advisor, der die Orderbuchführung für Sie übernimmt. Bei jedem Tick wird geprüft, ob ein schwebender Auftrag vorliegt, sein Ticket gespeichert (falls der Auftrag gefunden wird) und dann die Ticks der offenen Positionen mit dem schwebenden Auftrag verglichen. Sobald Sie eine Übereinstimmung gefunden haben, merken Sie sich den Zeitpunkt der Öffnung. Dies wird die Zeit sein, nach der Sie suchen...

 

Frage - ist es möglich, Skripte und EAs von Drittanbietern (aus der Serie "don't trade themselves") auf einer Eule zu verwenden, die Sie durch einen Tester laufen lassen?

 
artmedia70:

Möchten Sie, dass ich es für Sie halte? :))))

Ersetzen Sie "Newest" durch eine Zahl.

Ich habe es schon herausgefunden. Danke.)
 
artmedia70:

Irgendetwas an Ihren Aussagen macht mich unruhig. Nach der Umwandlung eines schwebenden Auftrags mit dem Ticket 12 gibt es zum Beispiel keinen schwebenden Auftrag mit dem Ticket 12 in der Historie. Es gibt eine offene Position mit Ticket 12, und ihr Typ ist OP_BUY oder OP_SELL. Der Zeitpunkt der Eröffnung ist der Zeitpunkt der Umwandlung eines schwebenden Auftrags in einen Marktauftrag.

Bitte korrigieren Sie mich, wenn es falsch ist.

In jedem Fall benötigen Sie einen Expert Advisor, der die Orderbuchführung für Sie übernimmt. Bei jedem Tick wird geprüft, ob ein schwebender Auftrag vorliegt, sein Ticket gespeichert (falls der Auftrag gefunden wird) und dann die Ticks der offenen Positionen mit dem schwebenden Auftrag verglichen. Sobald Sie eine Übereinstimmung gefunden haben, merken Sie sich den Zeitpunkt der Öffnung. Dies wird die von Ihnen gewünschte sein.

Ja, das Ticket der Market Order nach Auslösung der Pending Order wird nicht geändert (zumindest bei meinem Broker).

DerZeitpunkt der Eröffnung einer Marktposition ist der Zeitpunkt der anstehenden Orderänderung. Zumindest laut den Logs, die ich jetzt am Beispiel einer der Orders verglichen habe.

Auf dieser Grundlage ist die Behauptung 1 offensichtlich falsch. Ich werde es morgen noch einmal überprüfen, wenn es frisch ist; ich habe ein paar Nächte daran gearbeitet (nicht genau), mein Gehirn ist bereits vernebelt.

Wenn die OrderOpenTime() eines Marktauftrags mit einem schwebenden Auftrag immer noch die Zeit seiner Eröffnung anzeigt, haben wir überhaupt keine Probleme und der EA wird nicht benötigt, um Aufträge zu verfolgen. Alles, was wir brauchen, ist der Zeitpunkt, zu dem der Auftrag ausgelöst wurde, um die Aufträge in der Historie korrekt nach ihrer Öffnungszeit und dem Kennzeichen, dass sie geschlossen sind, zu sortieren. Dabei spielt es keine Rolle, ob es sich nur um einen schwebenden Marktauftrag handelte, der nicht gekennzeichnet war - dies ist nicht erforderlich. Das Wichtigste ist die Tatsache, dass es zuletzt geschlossen wurde und mit dem letzten offenen Datum - unser Kunde, bringen Sie es hier.

Es ist nur so, dass es keine Möglichkeit gibt, dass mein Skript die letzte geschlossene Order mit der letzten offenen Zeit ausgibt, genau dann, wenn die schwebenden Orders ausgelöst wurden. Ich werde auf jeden Fall alles überprüfen. Danke für den Tipp, sehr hilfreich!