HistoryDealGetTicket

이 함수는 추가적 처리를 위해 거래를 선택하고 거래 티켓을 내역에 반환합니다. HistoryDealGetTicket() 요청 이전에, 먼저 HistorySelect() 또는 HistorySelectByPosition() 함수를 사용하여 거래 및 주문 내역을 수신해야 합니다.

ulong  HistoryDealGetTicket(
   int  index      // 티켓 딜
   );

Parameter

index

[in]  거래 리스트의 거래 수

반환값

ulong 타입의 값. 이 함수가 실패하면 0이 반환됩니다.

참고

주문, 포지션을 혼동하지 마십시오. 각 거래는 주문 실행의 결과이고 각 포지션은 하나 이상의 거래의 요약 결과입니다.

예:

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_MONTHLYreturn ("월별 에이전트 수수료");
      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);
//---
  }

 

참고 항목

HistorySelect(), HistoryDealsTotal(), HistoryDealSelect(), Deal Properties