folgendes sollte dir helfen:
mit der funktion kannst du im String Format die Uhrzeit übergeben z.B. "21:00:00" liefert dir true zurück wenn es Freitag ist und die Uhrzeit erreicht
bool CheckFridayCloseTime(string sCloseTime)
{
bool bBack=false;
datetime TC=TimeCurrent();
datetime tClose=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE )+" "+sCloseTime);
if(DayOfWeek()==5 && TC>tClose)
{
bBack=true;
} else {
bBack=false;
}
return(bBack);
}
danach kannst du klassisch alle orders schliessen, wenn es mehrere sind gerne refreshrates nutzen, damit du einen neuen kurz bekommst, anbei ein Beispiel für BUY Trades, kann natürlich auf alle angewendet werden.
bool CloseAllBuyV2(int MagicNumber,int Slippage)
{
bool ticket;
for(int i=0; i<OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) //SELECT_BY_POS
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
{
ticket=OrderClose(OrderTicket(),OrderLots(),OrderC losePrice(),Slippage,Black);
if(ticket==false)
{
Print("Error on Orderexecution CloseAllBuy: "+IntegerToString(GetLastError()));
while(RefreshRates()==false) Sleep(1);
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Sl ippage,Black);
if(ticket==false)
{
Print("Error on Orderexecution CloseAllBuy Try2: "+IntegerToString(GetLastError()));
while(RefreshRates()==false) Sleep(1);
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Sl ippage+1,Black);
if(ticket==false)
{
Print("Error on Orderexecution CloseAllBuy Try3: "+IntegerToString(GetLastError()));
while(RefreshRates()==false) Sleep(1);
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Sl ippage+2,Black);
}
}
}
}
return true;
}
hoffe das hilft dir weiter...
Beste Grüße
Christian
|