//+------------------------------------------------------------------+
//| Trade function |
//+------------------------------------------------------------------+
void OnTrade()
{
//--- Ticket des letzten Deals aus der Handelsgeschichte für eine Woche erhalten
ulong last_deal=GetLastDealTicket();
if(HistoryDealSelect(last_deal))
{
//--- Zeit des Deals in Millisekunden seit 01.01.1970
long deal_time_msc=HistoryDealGetInteger(last_deal,DEAL_TIME_MSC);
PrintFormat("Deal #%d DEAL_TIME_MSC=%i64 => %s",
last_deal,deal_time_msc,TimeToString(deal_time_msc/1000));
}
else
PrintFormat("HistoryDealSelect() failed for #%d. Eror code=%d",
last_deal,GetLastError());
//---
}
//+------------------------------------------------------------------+
//| Gibt Ticket des letzten Deals in der Geschichte oder -1 zurück |
//+------------------------------------------------------------------+
ulong GetLastDealTicket()
{
//--- Geschichte für die letzte 7 Tagen erfordern
if(!GetTradeHistory(7))
{
//--- Nachricht über fehlgeschlagenen Aufruf und Rückgabe -1
Print(__FUNCTION__," HistorySelect() hat false zurückgegeben");
return -1;
}
//---
ulong first_deal,last_deal,deals=HistoryDealsTotal();
//--- wenn es Ordern gibt, anfangen wir mit ihnen zu arbeiten
if(deals>0)
{
Print("Deals = ",deals);
first_deal=HistoryDealGetTicket(0);
PrintFormat("first_deal = %d",first_deal);
if(deals>1)
{
last_deal=HistoryDealGetTicket((int)deals-1);
PrintFormat("last_deal = %d",last_deal);
return last_deal;
}
return first_deal;
}
//--- keine Deals waren gefunden, Rückgabe -1
return -1;
}
//+------------------------------------------------------------------+
//| Geschichte für letzte Tage erfordert und gibt false beim Fehler zurück |
//+------------------------------------------------------------------+
bool GetTradeHistory(int days)
{
//--- definieren wir Wochenperiode, um eine Geschichte des Handels zu beantragen
datetime to=TimeCurrent();
datetime from=to-days*PeriodSeconds(PERIOD_D1);
ResetLastError();
//--- Machen wir eine Anfrage und überprüfen wir die Ergebnisse
if(!HistorySelect(from,to))
{
Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
return false;
}
//--- Geschichte erfolgreich empfangen
return true;
}
|