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 +, ...