Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 16.07.17
exergon exergon ist offline
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 21
exergon befindet sich auf einem aufstrebenden Ast
Standard Funktion für löschen von Aufträgen im Orderbuch

Hallo zusammen,

als Anfänger habe ich eine Funktion für das identifizeren von speziellen Währungen im Orderbuch geschrieben. Sinn: Sollten im Orderbuch noch Aufträge zur aktuellen Währung sein - egal ob aktiv oder Pending - dann sollen diese um 20 Uhr (ist ja echt 19 Uhr) geschlossen werden.

Die Funktion geht aber es werden nicht alle Aufträge gelöscht. Immer nur ein paar....die Closefunktion scheint mir hier von mir vielleicht nicht richtig angewendet zu sein. Habe die Funktion dann zweimal hinterienander reingesetzt - bringt aber nix.

Hat jemand eine Idee wo der Fehler liegen könnte?

Anbei Code - wie kann man den Code hier einfügen dass die Tabs usw. gezeigt werden? Sieht so ja nicht toll aus...Danke an alle!

//Start Durchsuchen Orderbuch nach möglichen Ordern dieser Währung sofern es nach 19 Uhr ist!!!
if((Hour() >= 20) && (OrdersTotal()>0) && (VerriegelungClose == 0))
{
//VerriegelungClose wieder schließen da nur einmal laufen lassen bis nächster Trade eröffnet wird
VerriegelungClose = 1;


//Orderbuch durchsuchen nach Orders dieser Währung
for(int a=0;a<odzahlALL;a++)
{
if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==true)
{
//Ordersymbol, Ticketnummer und Zusatnd - ob Pending oder Aktivorder spreichern
BHilfsstring = OrderSymbol();
BHilfsticketnummer = OrderTicket();
BHilfslots = OrderLots();
BHilfstype = OrderType();

//Prüfen ob Währung passt
if(BHilfsstring == Basiswert)
{
//Prüfen ob gefundene Order eine aktive Order OP_BUY ist - dann kommt OrderClose zum Einsatz
if((BHilfstype == 0))
{
bool Bax1 = false;
while(Bax1 != true)
{
//Order löschen
Bax1=OrderClose(BHilfsticketnummer,BHilfslots,Bid, 5,Red);
}
Print("Orderbuch löschen weil nach 19/20 Uhr: Aktive Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert);
}

//Prüfen ob gefundene Order eine aktive Order OP_SELL ist - dann kommt OrderClose zum Einsatz
if((BHilfstype == 1))
{
bool Bax2 = false;
while(Bax2 != true)
{
//Order löschen
Bax2=OrderClose(BHilfsticketnummer,BHilfslots,Ask, 5,Red);
}
Print("Orderbuch löschen weil nach 19/20 Uhr: Aktive Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert);
}

//Prüfen ob gefundene Order eine Pending Order ist - dann kommt OrderDelete zum Einsatz
if((BHilfstype == 2) || (BHilfstype == 3) || (BHilfstype == 4) || (BHilfstype == 5) )
{
bool Bax3 = false;
while(Bax3 != true)
{
//Order löschen
Bax3=OrderDelete(BHilfsticketnummer);
}
Print("Orderbuch löschen weil nach 19/20 Uhr: Pending Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert);
}
}
}
}
}