Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 08.12.17
Bucardo Bucardo ist offline
Mitglied
 
Registriert seit: Nov 2014
Beiträge: 31
Bucardo befindet sich auf einem aufstrebenden Ast
Standard OCO-Funktion trotz bereits laufender Orders

Moin,

ich arbeite zur Zeit an einem EA der stündlich eine neue BUYSTOP-/ und eine SELLSTOP-Order platziert. Daüfr möchte ich eine OCO-Funktion nutzen. Bisher nutze ich hierzu folgenden Code:

Code:
   for( int h = 0 ; h < OrdersTotal() ; h++ )
   {
    x=OrderSelect( h, SELECT_BY_POS, MODE_TRADES );
    if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
    {
     for( int i = 0 ; i < OrdersTotal() ; i++ )
     {
      x=OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
      if(OrderSymbol() == Symbol() && OrderType() == OP_SELLSTOP)
      {
       x=OrderDelete(OrderTicket());
      }
     }
    if(OrderSymbol() == Symbol() && OrderType() == OP_SELL)
    {
     for( int j = 0 ; j < OrdersTotal() ; j++ )
     {
      x=OrderSelect( j, SELECT_BY_POS, MODE_TRADES );
      if(OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP)
      {
       x=OrderDelete(OrderTicket());
      }
     }
    }
   }
  }
Solange immer nur eine Order pro Chart offen ist, (andere Orders von anderen EAs mit eigener MagicNumber mal außen vorgelassen) funktioniert das auch zuverlässig.

Jetzt habe ich allerdings das Problem, dass die letzte aktivierte Order durchaus noch offen sein kann (z.B. aus der Kerzeneröffnung von 9 Uhr) ich aber zur nächsten Kerze wieder die beiden Pending-Orders mit OCO-Funktion platzieren will (z.B. dann um 10 Uhr während der letzte Trade von 9 Uhr noch läuft.) Meine jetzige OCO-FUnktion erkennt dann um um 10 Uhr den noch laufenden Trade und schließt automatisch die entgegen gesetzte PendingOrder obwohl noch keine von beiden gefilled wurde.

Hoffe mich nicht zu kompliziert ausgedrückt zu haben.

Danke für eure Hilfe!

Gruß Bucardo