void OnStart()
{
ulong deal_ticket; // ticket de la transaction
ulong order_ticket; // ticket de l'ordre sur lequel la transaction a été exécutée
datetime transaction_time; // heure d'exécution de la transaction
long deal_type ; // type de l'opération de trading
long position_ID; // identifiant de la position
string deal_description; // description de l'opération
double volume; // volume de l'opération
string symbol; // symbole de la transaction
//--- définit la date de début et de fin pour demander l'historique des transactions
datetime from_date=0; // date de début
datetime to_date=TimeCurrent();// date de fin
//--- demande l'historique des transactions pour la période spécifiée
HistorySelect(from_date,to_date);
//--- nombre total dans la liste des transactions
int deals=HistoryDealsTotal();
//--- traite maintenant chaque trade
for(int i=0;i<deals;i++)
{
deal_ticket= HistoryDealGetTicket(i);
volume= HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
transaction_time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
order_ticket= HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
deal_type= HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
symbol= HistoryDealGetString(deal_ticket,DEAL_SYMBOL);
position_ID= HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
deal_description= GetDealDescription(deal_type,volume,symbol,order_ticket,position_ID);
//--- affiche correctement le numéro de la transaction
string print_index=StringFormat("% 3d",i);
//--- affiche les informations sur la transaction
Print(print_index+" : deal #",deal_ticket," à ",transaction_time,deal_description);
}
}
//+------------------------------------------------------------------+
//| Retourne la description textuelle de l'opération |
//+------------------------------------------------------------------+
string GetDealDescription(long deal_type,double volume,string symbol,long ticket,long pos_ID)
{
string descr;
//---
switch(deal_type)
{
case DEAL_TYPE_BALANCE: return ("solde");
case DEAL_TYPE_CREDIT: return ("crédit");
case DEAL_TYPE_CHARGE: return ("facturé");
case DEAL_TYPE_CORRECTION: return ("correction");
case DEAL_TYPE_BUY: descr="buy"; break;
case DEAL_TYPE_SELL: descr="sell"; break;
case DEAL_TYPE_BONUS: return ("bonus");
case DEAL_TYPE_COMMISSION: return ("commission supplémentaire");
case DEAL_TYPE_COMMISSION_DAILY: return ("commission quotidienne");
case DEAL_TYPE_COMMISSION_MONTHLY: return ("commission mnensuelle");
case DEAL_TYPE_COMMISSION_AGENT_DAILY: return ("commission quotidienne de l'agent");
case DEAL_TYPE_COMMISSION_AGENT_MONTHLY: return ("commission mensuelle de l'agent");
case DEAL_TYPE_INTEREST: return ("taux d'intérêt");
case DEAL_TYPE_BUY_CANCELED: descr="transaction buy annulée"; break;
case DEAL_TYPE_SELL_CANCELED: descr="transaction sell annulée"; break;
}
descr=StringFormat("%s %G %s (ordre #%d, identifiant de la position %d)",
descr, // description en cours
volume, // volume de la transaction
symbol, // symbol de la transaction
ticket, // ticket de l'ordre associé à la transaction
pos_ID // identifiant de la position à laquelle la transaction est associée
);
return(descr);
//---
}
|