void OnStart()
{
ulong deal_ticket; // 딜 티켓
ulong order_ticket; // 딜이 실행된 주문의 티켓
datetime transaction_time; // 딜이 실행된 시간
long deal_type ; // 트레이드 작업의 종류
long position_ID; // 포지션 ID
string deal_description; // 작업 설명
double volume; // 작업량
string symbol; // 딜의 심볼
//--- 거래 내역을 요청할 시작 및 종료 날짜를 설정합니다
datetime from_date=0; // 최초부터
datetime to_date=TimeCurrent();// 현재까지
//--- 지정된 기간의 딜 내역을 요청
HistorySelect(from_date,to_date);
//--- 거래 리스트의 총수
int deals=HistoryDealsTotal();
//--- 여기에서 각 거래를 처리
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);
//--- 딜 번호 형식을 잘 갖춥니다
string print_index=StringFormat("% 3d",i);
//--- 딜의 정보 보이기
Print(print_index+": deal #",deal_ticket," at ",transaction_time,deal_description);
}
}
//+------------------------------------------------------------------+
//| 작업에 대한 문자열 설명을 반환 |
//+------------------------------------------------------------------+
string GetDealDescription(long deal_type,double volume,string symbol,long ticket,long pos_ID)
{
string descr;
//---
switch(deal_type)
{
case DEAL_TYPE_BALANCE: return ("잔고");
case DEAL_TYPE_CREDIT: return ("credit");
case DEAL_TYPE_CHARGE: return ("charge");
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 ("보너스");
case DEAL_TYPE_COMMISSION: return ("추가 수수료");
case DEAL_TYPE_COMMISSION_DAILY: return ("일별 수수료");
case DEAL_TYPE_COMMISSION_MONTHLY: return ("월별 수수료");
case DEAL_TYPE_COMMISSION_AGENT_DAILY: return ("일별 에이전트 수수료");
case DEAL_TYPE_COMMISSION_AGENT_MONTHLY: return ("월별 에이전트 수수료");
case DEAL_TYPE_INTEREST: return ("이자율");
case DEAL_TYPE_BUY_CANCELED: descr="취소된 매입 거래"; break;
case DEAL_TYPE_SELL_CANCELED: descr="취소된 매수 거래"; break;
}
descr=StringFormat("%s %G %s (order #%d, position ID %d)",
descr, // 현재 설명
volume, // 거래량
symbol, // 거래 심볼
ticket, // 거래를 야기한 주문의 티켓
pos_ID // 거래가 포함된 위치의 ID
);
return(descr);
//---
}
|