|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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()); } } } } } 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 |
|
|||
Code:
for (int i = OrdersTotal()-1; i >= 0; i--) { int candle_marketorder; bool res; if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUY) { candle_marketorder = iBarShift(NULL, 0, OrderOpenTime()); for (int j = OrdersTotal()-1; j >= 0; j--) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_SELLSTOP) { if (candle_marketorder == iBarShift(NULL, 0, OrderOpenTime())) { res = OrderDelete(OrderTicket()); break; } } } } } continue; } if (OrderType() == OP_SELL) { candle_marketorder = iBarShift(NULL, 0, OrderOpenTime()); for (int j = OrdersTotal()-1; j >= 0; j--) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUYSTOP) { if (candle_marketorder == iBarShift(NULL, 0, OrderOpenTime())) { res = OrderDelete(OrderTicket()); break; } } } } } } } } } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
funktion, mql4, oco, oco funktion, oco order, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|