Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 06.01.14
Benutzerbild von fxdaytrader
fxdaytrader fxdaytrader ist offline
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Abfrage bspw. so:
Code:
if ((TimeCurrent() - OrderOpenTime()) >= (3 * 3600))
OrderClose (hier für BUY order):

Code:
OrderClose(OrderTicket(),OrderLots()/2,MarketInfo(OrderSymbol(),MODE_BID),9999,CLR_NONE);
Ich weiß nicht wie hoch die Wahrscheinlichkeit für das Auftreten von Problemen bei der Orderschließung sind, aber es schadet nicht die Lotgröße zu normalisieren, also anstelle von "OrderLots()/2" schreiben
"NormalizeLots(OrderSymbol(),OrderLots()/2)"

funktion:

Code:
//see also the original function by WHRoeder, http://forum.mql4.com/45425#564188, fxdaytrader
double NormalizeLots(string symbol, double lots) {
  if (MathAbs(lots)==0.0) return(0.0); //just in case ... otherwise it may happen that after rounding 0.0 the result is >0 and we have got a problem, fxdaytrader
  double ls = MarketInfo(symbol,MODE_LOTSTEP);
  lots = MathMin(MarketInfo(symbol,MODE_MAXLOT),MathMax(MarketInfo(symbol,MODE_MINLOT),lots)); //check if lots >= min. lots && <= max. lots, fxdaytrader
return(MathRound(lots/ls)*ls);
}
Warum Dein EA direkt wieder zukauft weiß ich nicht, dazu müsstest Du die entsprechenden codezeilen hier posten.

Ob sich eine Position im + oder - befindet kannst Du auch ermitteln durch Abfrage:

Code:
if ((OrderProfit()+OrderSwap()+OrderCommission())>0.0)
, ist es größer 0.0 dann ist die Position im +, ...