Schließung von halben Parzellen.

 

Es ist mir also gelungen, eine Schleife einzubauen, die den ausstehenden Auftrag löscht und einen neuen Auftrag auf der Grundlage des mit dem gleitenden Durchschnitt synchronisierten Stopps erteilt. Die Lots würden auf der Grundlage des Pip-Abstands zwischen Einstieg und Stop berechnet. Nicht nur das, sondern ich habe es geschafft, herauszufinden, wie das Gewinnziel mit dem Stop-Abstand als Verhältnis funktioniert (extern int - etwas, das ich 1-2-3 R;R usw. wähle) - also bewegt sich auch dies.

Vielen Dank für die Kommentare zu früheren Beiträgen in Bezug auf das Ausdrucken meines Codes und andere Kleinigkeiten!


Wie auch immer - ich versuche, die Hälfte der Position zu schließen, wenn der Kurs 50 % meines 2x-Ratio-Gewinnziels erreicht... Ich weiß, dass ich die Dinge im Journal ausdrucken muss, und ich bin gerade dabei, das einzutragen, aber kann mir jemand sagen, ob ich das in irgendeiner Weise falsch schreibe? Vielleicht in Bezug auf "OrderLots()/2"?

"btp" = gibt einen bestimmten Preis zurück.

         if(Bid == btp-OrderOpenPrice()/2+OrderOpenPrice()){
         
         for(int q=OrdersTotal()-1; q >=0; q--)
         {
            if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true){
              Print(" Stop loss value for the order is ", OrderStopLoss());
              Print("lots for the order ",OrderLots());
            }
            else if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==false){
              Print(" OrderSelect failed error code is ",GetLastError());
            }
            if(OrderMagicNumber()==MagicNumber)
             if(OrderSymbol()==Symbol())
              if(OrderType()==OP_BUYSTOP)
               
               CloseHalfLong = OrderClose(OrderTicket(),OrderLots()/2,Bid,3,CLR_NONE);
         
            if(CloseHalfLong!=TRUE)Print("LastError = ", GetLastError());
         }
         }
 
DomGilberto:

Es ist mir also gelungen, eine Schleife einzubauen, die den ausstehenden Auftrag löscht und einen neuen Auftrag auf der Grundlage des mit dem gleitenden Durchschnitt synchronisierten Stopps erteilt. Die Lots würden auf der Grundlage des Pip-Abstands zwischen Einstieg und Stop berechnet. Nicht nur das, sondern ich habe es geschafft, herauszufinden, wie das Gewinnziel mit dem Stop-Abstand als Verhältnis funktioniert (extern int - etwas, das ich 1-2-3 R;R usw. wähle) - also bewegt sich auch dies.

Vielen Dank für die Kommentare zu früheren Beiträgen bezüglich des Ausdruckens meines Codes und anderer Kleinigkeiten!


Wie auch immer - ich versuche, die Hälfte der Position zu schließen, wenn der Kurs 50 % meines 2x-Ratio-Gewinnziels erreicht... Ich weiß, dass ich die Dinge im Journal ausdrucken muss, und ich bin gerade dabei, das einzutragen, aber kann mir jemand sagen, ob ich das in irgendeiner Weise falsch schreibe? Vielleicht in Bezug auf "OrderLots()/2"?

"btp" = gibt einen bestimmten Preis zurück.

Ich glaube nicht, dass OrderLots()/2 in allen Situationen ausreicht (verzeihen Sie das Wortspiel). Ich bin mir ziemlich sicher, dass Sie die Positionsgröße, die Sie schließen möchten, mit MarketInfo() MODE_LOTSTEP und MODE_MINLOT abgleichen müssen.

Siehe hier: https://www.mql5.com/en/forum/143966

 
RaptorUK: Ich glaube nicht, dass OrderLots()/2 in allen Situationen ausreicht (verzeihen Sie das Wortspiel). Ich bin mir ziemlich sicher, dass Sie die Positionsgröße, die Sie schließen möchten, mit MarketInfo() MODE_LOTSTEP und MODE_MINLOT abgleichen müssen.
Ganz genau. Siehe meine CloseOrder()
 

Danke RaptorUK - Ich bin nicht sicher, wo ich WHRoeder auf Ihren Link schaue, aber danke.

Geht es nur mir so, oder ist der Prozess zum Schließen von Lots auf einer offenen Position ein wenig kontraintuitiv... scheint unnötig kompliziert zu sein, wenn man bedenkt, was ich eigentlich machen will...

Mann, ich glaube, ich habe an diesem Code genug für einen Tag sah - ich bin nicht verstehen, wie ich MarkerInfo() mit OrderClose verwenden... es scheint unnötig komplex.

 
DomGilberto:

Danke RaptorUK - Ich bin nicht sicher, wo ich WHRoeder auf Ihren Link schaue, aber danke.

Geht es nur mir so, oder ist der Prozess zum Schließen von Lots auf einer offenen Position ein wenig kontraintuitiv... scheint unnötig kompliziert zu sein, wenn man bedenkt, was ich eigentlich machen will...

Mann, ich glaube, ich habe an diesem Code genug für einen Tag sah - ich bin nicht verstehen, wie ich MarkerInfo() mit OrderClose verwenden... es scheint unnötig komplex.

Wenn Ihre Order eine Positionsgröße von 0,3 Lots hat und Sie die Hälfte davon schließen wollen, wären das 0,15 Lots. Wenn der MODE_LOTSTEP Ihres Brokers 0,1 ist, dann ist 0,15 eine ungültige Lotgröße ... bevor Sie also OrderClose() verwenden, überprüfen Sie Ihre Positionsgröße, die Sie schließen wollen.
 
Ah, ich hab's! Danke RaptorUK! Letzte Frage: Wenn Sie sagen, dass Sie die Losgröße validieren, meinen Sie damit, dass Sie sie mit If-Anweisungen vergleichen?
 
DomGilberto: Ich bin mir nicht sicher, wo ich WHRoeder in Ihrem Link finde, aber danke.
Der oberste Link auf dieser Seite
 
Ah, erwischt! Das ist eine epische Codierung... :o!

Ich hoffe, ich kann eines Tages dieses Niveau der Programmierung halten... (mit ein bisschen mehr Geduld deinerseits - nur ein Scherz :P)


Danke WHRoeder!
 
DomGilberto:
Ah, ich hab's! Danke RaptorUK! Letzte Frage: Wenn Sie sagen, dass Sie die Losgröße validieren, meinen Sie damit, dass Sie sie mit If-Anweisungen vergleichen?

Nein, ich will damit sagen, dass der Code so angepasst werden muss, dass er mit MODE_LOTSTEP und MODE_MINLOT übereinstimmt... dann ist er gültig (validiert), wenn Sie sich den Link ansehen, den ich gepostet habe.

mlots = MathFloor(mlots / lotstep) * lotstep; 

Nehmen wir an, mlots sei 0,15 mlots (MODE_MINLOT) sei 0,1 und lotstep (MODE_LOTSTEP) sei 0,1, dann würde der Code Folgendes tun

mlots = MathFloor(0.15 / 0.1) * 0.1; 
//  MathFloor(0.15 / 0.1) ==  MathFloor( 1.5 )  gives 1

//  mlots = 1 * 0.1;  

mlots würde also von 0,15 auf 0,1 angepasst werden und wäre damit gültig.

 
Genau richtig! Danke für die Aufklärung - hab's verstanden!