Hilf mir, die Ordnung am Ende der Bar zu schließen! - Seite 2

 

Hmm so wäre das gut?

/////////////////OrderSelect() and other stuff

if( OrderType() == OP_BUY ){
    
if( /* blablabla condition && */ Time[0]>OrderOpenTime()  ){

OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,TAKEPROFITPIPS,CLR_NONE);             
RefreshRates();    

}}

Eigentlich habe ich Time[1] zu Time[0] geändert, weil Time[1] 1 weiteren Balken übersprungen hat, so dass Time[0] tatsächlich die Open[0] darstellt, wenn jemand etwas Besseres/leichteres als dies weiß, bitte sagen Sie es!

 
Proximus:

Hmm also wäre das gut?

Eigentlich habe ich Time[1] in Time[0] geändert, weil Time[1] 1 weiteren Takt übersprungen hat, so dass Time[0] eigentlich den Open[0] repräsentiert.Wenn jemand etwas Besseres/leichteres als dies weiß, bitte sagen!

RefreshRates();
OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,Slippage,CLR_NONE);

und prüfen Sie auch, ob orderclose erfolgreich ist

 
deVries:

und prüfen Sie auch, ob orderclose erfolgreich war

Nun, wenn nicht erfolgreich dann, wenn die start() Funktion wiederholt sich es wird wieder testen, dass if() vor der orderclose() und da die Bedingungen noch wahr sein wird, um fortzufahren, wird es versuchen, es wieder zu schließen.ich kann nicht versuchen, es zu schließen 2 mal in der gleichen Schleife der start(), muss ein weiteres Tick nicht warten?
 
Proximus:
Nun, wenn nicht succed dann, wenn die start() Funktion wiederholt sich es wieder testen, dass if() vor der orderclose() und da die Bedingungen immer noch wahr sein wird, um fortzufahren, wird es versuchen, es wieder zu schließen.ich kann nicht versuchen, es zu schließen 2 mal in der gleichen Schleife der start(), muss ein weiteres Tick nicht warten?
Wollen Sie nicht wissen, dass es fehlgeschlagen ist? und wenn es fehlgeschlagen ist, warum es fehlgeschlagen ist? und was der Wert der relevanten Variablen zu der Zeit war, die das Fehlschlagen verursacht haben könnte? wenn Sie all das wissen, können Sie es so beheben, dass es das nächste Mal nicht fehlschlägt...
 
Proximus:

Hmm so wäre das gut?

Eigentlich habe ich Time[1] zu Time[0] geändert, weil Time[1] 1 weiteren Balken übersprungen hat, so dass Time[0] tatsächlich die Open[0] darstellt, wenn jemand etwas Besseres/leichteres als dies weiß, bitte sagen Sie es!

Nein, es wird immer geschlossen, unabhängig davon, ob der Tick der Tick des nächsten Balkens ist oder nicht, für jeden Balken, der auf den Balken folgt, an dem der Handel eröffnet wurde, und zu jedem Zeitpunkt während dieses Balkens wird Time[0] immer größer sein als OrderOpenTime().

Wenn Sie so nahe wie möglich am Ende des Balkens schließen wollen, müssen Sie feststellen, ob der aktuelle Tick der erste Tick des neuen Balkens ist ... dann müssen Sie auch sicherstellen, dass das Schließen funktioniert, da Sie nur eine Chance pro Balken haben.
 
Proximus:
Nun, wenn nicht erfolgreich, dann, wenn die start() Funktion sich wiederholt, wird es wieder testen, dass if() vor der orderclose() und da die Bedingungen noch wahr sein wird, um fortzufahren, wird es versuchen, es wieder zu schließen.ich kann nicht versuchen, es 2 mal in der gleichen Schleife der start() zu schließen, muss ein weiteres Tick warten, nicht?


Sie haben damit begonnen, dass er den letzten Tick des Balkens schließen muss.

Wir haben versucht zu verstehen, dass es nicht möglich ist, zu wissen, wann der letzte Tick Bar kommt.

jetzt ist es egal, ob das Schließen fehlschlägt, wir versuchen es wieder, wieder, wieder bei den folgenden Ticks

Haben Sie auch andere Änderungen vermisst, die ich vorgeschlagen habe?

Welchen Sinn macht es, nach dem Schließen der Order die Raten zu erneuern?

und wissen Sie, warum Slippage anstelle von TAKEPROFITPIPS

es hängt vom errorreturn ab, du kannst versuchen ihn 2 mal in der gleichen Schleife zu schließen

Wenn der Handelskontext zu sehr ausgelastet ist und Sie mehrere Trades in der Schleife haben, die Sie schließen wollen, besteht die Möglichkeit, dass auch diese fehlschlagen.

 
RaptorUK:
Nein, die Order wird immer geschlossen, unabhängig davon, ob der Tick der Tick des nächsten Balkens ist oder nicht, und zwar für jeden Balken, der auf den Balken folgt, in dem der Handel eröffnet wurde, und zu jedem Zeitpunkt während dieses Balkens wird Time[0] immer größer sein als OrderOpenTime().

Wenn Sie so nahe wie möglich am Ende des Balkens schließen wollen, müssen Sie feststellen, ob der aktuelle Tick der erste Tick des neuen Balkens ist ... dann müssen Sie auch sicherstellen, dass das Schließen funktioniert, da Sie nur eine Chance pro Balken haben.

Wiederholt sich die Funktion start() nicht nach jedem Tick? Liege ich da falsch?

Wie auch immer, stellen Sie sich das vor:

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

Die Order wird geöffnet, das Orderclose()-Funktionspaket befindet sich nach meinem OrderSend()-Paket im Hauptcode, so dass mein OrderClose()-Paket direkt nach dem Öffnen der Order prüft, ob die Bedingungen erfüllt sind, um die Order zu schließen oder nicht.Nehmen wir an, dass dies der Fall ist, dann ist es jetzt an der Zeit, die Order zu schließen:

Time[0] ist der Eröffnungskurs dieses Balkens, so dass er nach allgemeiner Logik kleiner sein muss als die Zeit, zu der die Order geöffnet war, da die Order nicht geöffnet werden kann, bevor derselbe Balken geöffnet wurde.Es ist: 12:12:00

Also auf jeden Fall :

if(Time[0]>OrderOpenTime())

Wenn die Order aus irgendeinem Grund nicht geschlossen werden kann, z.B. wegen Slippage oder so, ist das kein Problem, denn start() wiederholt sich.

Und bei der nächsten Wiederholung wird die Time[0] 100% größer sein als die Eröffnungszeit der Order, weil es logisch ist, also wenn die erste Schließung fehlschlägt, wird die andere OrderClose() jedes Mal danach passieren, wenn die start() sich wiederholt, und da ich denke, dass start() sich bei jedem Tick wiederholt, dann denke ich nicht, dass es einen besseren Weg gibt, die Order schneller zu schließen, ich hoffe, ich habe es klar erklärt :)

 
deVries:


Sie haben damit begonnen, dass der letzte Tick des Balkens geschlossen werden muss.

Wir haben versucht zu verstehen, dass es nicht möglich ist, zu wissen, wann der letzte Tick Bar kommt.

jetzt ist es egal, ob das Schließen fehlschlägt, wir versuchen es wieder, wieder, wieder bei den folgenden Ticks

Haben Sie auch andere Änderungen vermisst, die ich vorgeschlagen habe?

Welchen Sinn macht es, nach dem Schließen der Order die Raten zu erneuern?

und wissen Sie, warum Slippage anstelle von TAKEPROFITPIPS

es hängt vom errorreturn ab, du kannst versuchen ihn 2 mal in der gleichen Schleife zu schließen

Wenn der Handelskontext zu sehr ausgelastet ist und Sie mehrere Trades in der Schleife haben, die Sie schließen müssen, ist die Wahrscheinlichkeit groß, dass auch diese fehlschlagen.

Ich verwende TAKEPROFITPIPS, weil das meine Variable für TAKEPROFIT ist, und weil ich maximale Slippage in Höhe meines TP-Levels zulasse, weil es logisch ist, dass Sie nicht mehr Slippage als Ihren TP haben sollten, wenn Sie Aufträge mit OrderClose() schließen, denn wenn Sie das tun, wird TAKEPROFIT sie an Ihrer Stelle effizienter schließen als OrderClose().
 
Proximus:

Wiederholt sich die Funktion start() nicht nach jedem Tick? Liege ich da falsch?

Ja, start() wird für jeden Tick aufgerufen, es sei denn, es wird noch ausgeführt.

Proximus:

Wie auch immer, stellen Sie sich Folgendes vor:

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

Die Order wird geöffnet, das Orderclose()-Funktionspaket befindet sich nach meinem OrderSend()-Paket im Hauptcode, so dass mein OrderClose()-Paket direkt nach dem Öffnen der Order prüft, ob die Bedingungen erfüllt sind, um die Order zu schließen oder nicht.Nehmen wir an, dass dies der Fall ist, dann ist es Zeit, die Order zu schließen:

Time[0] ist der Eröffnungskurs dieses Balkens, also muss er nach allgemeiner Logik kleiner sein als die Zeit, zu der die Order geöffnet war, weil die Order nicht geöffnet werden kann, bevor derselbe Balken geöffnet wurde.Es ist: 12:12:00

Also auf jeden Fall :

Wenn die Order nicht geschlossen werden kann, aus welchem Grund auch immer, wie z.B. Slippage oder so, kein Problem, die start() wiederholt sich.

Und bei der nächsten Wiederholung wird die Time[0] 100% größer sein als die Eröffnungszeit der Order, weil es logisch ist, also wenn die erste Schließung fehlschlägt, wird die andere OrderClose() jedes Mal danach passieren, wenn die start() sich wiederholt, und da ich denke, dass start() sich bei jedem Tick wiederholt, dann denke ich nicht, dass es einen besseren Weg gibt, die Order schneller zu schließen, ich hoffe, ich habe es klar erklärt :)

Ja, aber das ist nicht das, wonach Sie in Ihrem ersten Beitrag in diesem Thread gefragt haben ... jetzt sagen Sie, dass es in Ordnung ist, wenn der Abschluss um eine Periode verzögert wird und dann um eine weitere Periode usw. Wenn Sie so nah wie möglich am Ende des Balkens schließen wollen, müssen Sie dies beim ersten Tick des nächsten Balkens tun, und Sie müssen prüfen, ob das Schließen fehlgeschlagen ist, und es auf die richtige Weise erneut versuchen, damit Sie es erfolgreich abschließen können.
 

Es kommt recht selten vor, dass der Schlusskurs eines Balkens nicht auf dem nachfolgenden Balken wiederholt wird, nicht unbedingt sein Eröffnungskurs ...