//+------------------------------------------------------------------+
//| Trade function |
//+------------------------------------------------------------------+
void OnTrade()
{
//--- haftanın alım-satım geçmişinden, son işlemin fişini al
ulong last_deal=GetLastDealTicket();
if(HistoryDealSelect(last_deal))
{
//--- işlemin 01.01.1970 tarihinden buyana geçen milisaniyeler bazındaki zamanı
long deal_time_msc=HistoryDealGetInteger(last_deal,DEAL_TIME_MSC);
PrintFormat("İşlem #%d DEAL_TIME_MSC=%i64 => %s",
last_deal,deal_time_msc,TimeToString(deal_time_msc/1000));
}
else
PrintFormat("HistoryDealSelect() #%d için başarısız oldu. Hata kodu=%d",
last_deal,GetLastError());
//---
}
//+------------------------------------------------------------------+
//| Geçmişteki son işlemin fişine veya -1 değerine dönüş yapar |
//+------------------------------------------------------------------+
ulong GetLastDealTicket()
{
//--- son 7 günün geçmişini iste
if(!GetTradeHistory(7))
{
//--- başarısız çağrıda uyar ve -1 dönüşü yap
Print(__FUNCTION__," HistorySelect() 'false' dönüşü yaptı");
return -1;
}
//---
ulong first_deal,last_deal,deals=HistoryDealsTotal();
//--- eğer varsa emirlerle çalış
if(deals>0)
{
Print("İşlemler = ",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;
}
//--- işlem bulunamadı, -1 dönüşü yap
return -1;
}
//+-------------------------------------------------------------------------------+
//| Son yedi günün geçmişini ister ve başarısızlık durumunda 'false' dönüşü yapar |
//+-------------------------------------------------------------------------------+
bool GetTradeHistory(int days)
{
//--- alım-satım geçmişini istemek için bir haftalık periyot ayarla
datetime to=TimeCurrent();
datetime from=to-days*PeriodSeconds(PERIOD_D1);
ResetLastError();
//--- istek yap ve sonucu kontrol et
if(!HistorySelect(from,to))
{
Print(__FUNCTION__," HistorySelect=false. Hata kodu=",GetLastError());
return false;
}
//--- geçmiş başarıyla alındı
return true;
}
|