Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 18.01.18
Lampe Lampe ist offline
Auf eigenen Wunsch deaktiviert
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Du machst dir die Arbeit den Code zu strukturieren, und lässt dann trotzdem, nicht mal den kleinsten Hinweis für den Hilfesuchenden da?

Ich werde mal versuchen dir zu helfen Forward, möchte aber darauf Hinweisen das ich selber Anfänger bin und daher nicht versprechen kann, das meine Aussagen auch richtig sind.

Wenn ich mir deinen Code anschaue würde ich sagen der Fehler liegt darin, das du keine for Schleife benutzt um die Orders durchzuzählen. Ich glaube das dies aber nötig ist, weil das Programm dann jede Order nacheinander durchgeht und abgleicht ob deine Orderbedingungen stimmen.

Ich lasse dir nun ein BeispielsCode da den du, wenn du ihn verstanden hast, auf deinen eigenen Code anpassen kannst:

Code:
//Short Signale umsetzen
if (ShortSignal == true)  // eventuelle Long Order schließen
   {
    for(int i=OrdersTotal()-1; i>=0; i--)  //1.
        {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))  //2.
          {
           if(OrderComment()==Orderkommentar) //3.
             {
              if(OrderType()==BUY_LIMIT) //4.
                {
                 bool LongOrderGeclosed=OrderDelete(OrderTicket(),clrNONE) //5.
                }
             }
          }
        }
   }
zu 1.
das ist die for Schleife die jede einzelne Order, auf die danach von dir per if befehl definierten, Bedingungen prüft.

zu 2.
SELECT_BY_POS,MODE_TRADES
Das bedeutet du suchst mit der for Schleife alle Positionen durch die aktuell vorhanden sind.

zu 3.
jetzt musst du per if Befehl deine Orders Filtern. Ich habe in diesem Beispiel OrderComment genommen. Für mich ist das ein entspannter Weg. Du kannst aber auch die Orders über die vorher zugewiesene MagicNumber filtern.

zu 4.
hiermit prüfst du den Status der Order, also ist es eine Buy_Limit, eine Sell_Limit Order oder eine Buy Order und und und. Jenachdem was du suchst. Wenn du F1 drückst bei OrderType bekommst du eine Auflistung der Ordertypen.
Im obigen Beispiel suchen wir eine BUY_LIMIT Order.

zu 5.
wenn entsprechend die obigen Bedingungen stimmen, solltest du die von dir gesuchte Order gefunden haben, und kannst nun mit OrderDelete() die entsprechende Order löschen.

Du musst soweit ich weiß IMMER wenn du mit einer Order arbeiten willst, vorher die For Schleife verwenden. Auch wenn du Orders schließen, Modifizieren oder PendingOrders löschen möchtest.

Ich hoffe das meine Ausführungen stimmen und dir weiter helfen.

Sollte ich Fehler eingebaut haben dürfen sich gerne die erfahrenen Progger eingeladen fühlen mich zu berichtigen.

MfG
Lampe