Jump to content
Tom Next - Daytrading Community

Das Zusammenspiel von OrderSelect() und OrderModify()


sill3000

Recommended Posts

Ganz sicher habe ich nichts Böses gewollt.

Hab ich auch nicht so verstanden, will nur helfen den Fehler zu finden ;)

 

Zu OrderSelect:

The function selects an order for further processing. [...]

The pool parameter is ignored if the order is selected by the ticket number. The ticket number is a unique order identifier. To find out from what list the order has been selected, its close time must be analyzed. If the order close time equals to 0, the order is open or pending and taken from the terminal open positions list. [...] If the order close time does not equal to 0, the order is a closed order or a deleted pending order and was selected from the terminal history.

[...]

 

Übersetzt heißt das folgendes:

 

Die Funktion wählt eine Order für die weitere Bearbeitung aus. [...] Wenn die Order über das Ticket ausgewählt wird, wird der Poolparameter ignoriert. Das Orderticket ist eine Zahl zur eindeutigen Identifizierung einer Order. Um Herauszufinden aus welcher Liste die Order ausgewählt wurde, muss die Zeit der Orderschließung analysiert werden. Wenn die Schließungszeit 0 ist, ist die Order offen oder wartend (pending) und wurde aus der Liste der offenen Positionen im Terminal ausgewählt. [...] Wenn die Schließungszeit nicht 0 ist ist die Order geschlossen oder gelöscht und wurde aus der History des Terminals ausgewählt.

 

Zu gut deutsch: Wenn du SELECT_BY_POS machst hättest du Recht. Dann musst du entscheiden welchen Pool du dir anschaust (offene oder History). Hat den Sinn das man meist alle offenen Orders untersuchen will und es da keinen Sinn macht das man die (möglicherweise) Unmengen an geschlossenen Orders mit durchläuft.

Wenn du aber per Ticket wählst, wählst du genau eine Order aus und es ist egal wo sie gerade liegt, wenn die Order mit diesem Ticket von dir ist, wird sie ausgewählt.

 

Was du natürlich aufpassen musst: Wenn du so überprüfst ob es die Order gibt, ist jetzt diese Order ausgewählt. Wenn du danach wieder die Order von zuvor verwenden willst, musst du diese neue auswählen.

 

hth

  • Upvote 1
Link to comment
Share on other sites

//+------------------------------------------------------------------------------------------------+
//|                                      Ernten_C_P_H_4_O.mqh                                      |
//|                           The code should be used for Ernten only                              |
//+------------------------------------------------------------------------------------------------+
//                                                                                                 |
//                                                                                                 |
//+------------------------------------------------------------------------------------------------+
//|   function  :  überprüft ob Buy platziert werden muss, da Short geöffnet oder Buy TP erreicht  |
//+------------------------------------------------------------------------------------------------+
void CheckPendingHedge4Open()                    //                                                |
{                                                //                                                |
 string ip_cSymbol = Markt ;                    //                                                |
 for( int iCnt = OrdersTotal()-1; iCnt >= 0; iCnt-- )     //                                      |
 {                                              //                                                |
   OrderSelect(iCnt, SELECT_BY_POS, MODE_TRADES)         ;//                                      |
   if( OrderSymbol() != ip_cSymbol )            //                                                |
     continue;                                  //                                                |
                                                //                                                |
   if( OrderSymbol() == ip_cSymbol )            //                                                |
       if( OrderType() == OP_SELL )             //  nur aktive Short bekommen einen Hedge         |
       switch( OrderMagicNumber() )             //                                                |
       {                                        //                                                |
         case ER_MAGIC_S21:                     //                                                |
              if(OrderSelect(B21, SELECT_BY_TICKET)==true)//                                      |
              {                                 //                                                |
                   if(OrderCloseTime() > 0)     //                                                |
                        {                       //                                                |
                        Print("C_P_H_4_O :B21 Order war geschlossen und wird nun neu geöffnet");//|
                        Pair1_B21((dAsk + Gap));//                                                |
                        Print("C_P_H_4_O : S21= ",S21,"life => nun Entry B21= ",B21)   ;//        |
                        }                       //                                                |
                   else                         //                                                |
                     Sleep(10); //Print("B21 order ist pending oder aktiv")  ;//                  |
              }                                 //                                                |
              else                              //                                                |
              {                                 //                                                |
                   if (B21 == 0)                //                                                |
                        {                       //                                                |
                        Print("B21 Order ist das 1.mal im Markt")  ;//                            |
                        Pair1_B21((dAsk + Gap));//                                                |
                        Print("C_P_H_4_O : S21= ",S21,"life => nun Entry B21= ",B21)   ;//        |
                        }                       //                                                |
              }                                 //                                                |
           break;                               //                                                |
/*        case ER_MAGIC_S22:                     //                                                |
           break;                               //                                                |
         case ER_MAGIC_S23:                     //                                                |
           break;                               //                                                |
         case ER_MAGIC_S24:                     //                                                |
           break;                               //                                                |
         case ER_MAGIC_S25:                     //                                                |
           break;                               //                                                |*/
         default:                               //                                                |
           Print("alles ruhig hier, S21= ",S21," B21= ",B21)       ;//                            |
           break;                               //                                                |
       }                                        //                                                |
 }                                              //                                                |
 return                                        ;//                                                |
}                                                //                                                |
                                                //                                                |
//+------------------------------------------------------------------------------------------------+

 

Mythos, noch einmal vielen Dank für die investierte Zeit !

 

 

Kleinerbroker

 

PS.: Der Befehl Sleep(10) ist reiner Platzhalter, weil ich Else später noch brauche . Der Code ist eine in sich vollständige #Include

PPS.: Es haben sich weitere Varianten ergeben, nämlich der Magicnummer oder dem Comment einen Zähler bei zufügen und danach

dann die History zu durchsuchen . Wer diese Alternativen kennenlernen möchte, der möge mir bitte eine PN schicken .

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...