HistoryDealGetDouble

거래의 요청된 속성을 반환합니다. 거래 속성은 double 타입이어야 합니다. 이 함수의 변수는 두 가지가 있습니다.

1. 속성 값을 즉시 반환합니다.

double  HistoryDealGetDouble(
   ulong                      ticket_number,     // 티켓
   ENUM_DEAL_PROPERTY_DOUBLE  property_id        // 속성 식별자
   );

2. 함수의 성공 여부에 따라 True 또는 False를 반환합니다. 성공하면 속성 값이 마지막 매개 변수에서 레퍼런스로 전달되는 대상 변수에 배치됩니다.

bool  HistoryDealGetDouble(
   ulong                      ticket_number,     // 티켓
   ENUM_DEAL_PROPERTY_DOUBLE  property_id,       // 속성 식별자
   double&                    double_var         // 여기서 속성 값을 수락합니다
   );

매개 변수

ticket_number

[in]  거래 티켓.

property_id

[in]  딜 속성 식별자. 이 값은 ENUM_DEAL_PROPERTY_DOUBLE 열거값 중 하나일 수 있습니다.

double_var

[out]  요청된 속성 값을 수락하는 double 유형의 변수.

반환값

double 타입의 값.

참고

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

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 거래와 주문 히스토리 요청
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- 계정 히스토리의 거래 목록에 의한 루프
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
      //--- 다음 거래 티켓 가져오기(해당 속성을 가져오기 위해 거래가 자동으로 선택됨)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- 거래의 유형과 방향을 가져오고 선택한 거래의 실제 속성 목록에 대한 헤더를 표시합니다.
      string type=DealTypeDescription((ENUM_DEAL_TYPE)HistoryDealGetInteger(ticketDEAL_TYPE));
      string entry=DealEntryDescription((ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticketDEAL_ENTRY));
      PrintFormat("Double properties of an deal %s entry %s #%I64u:"typeentryticket);
      
      //--- 헤더 아래에 선택한 거래의 실제 속성을 모두 인쇄합니다.
      HistoryDealPropertiesDoublePrint(ticket12);
     }
   /*
   real:
   Double properties of an deal Buy entry In #2785070622:
   Volume:     0.50
   Price:      1.10480
   Commission0.00
   Swap:       0.00
   Profit:     0.00 USD
   Fee:        0.00
   StopLoss:   0.00000
   TakeProfit0.00000
   Double properties of an deal Sell entry Out #2785071538:
   Volume:     0.50
   Price:      1.10491
   Commission0.00
   Swap:       0.00
   Profit:     5.50 USD
   Fee:        0.00
   StopLoss:   0.00000
   TakeProfit0.00000
   */
  }
//+------------------------------------------------------------------+
//| Display real properties of the selected deal in the journal      |
//+------------------------------------------------------------------+
void HistoryDealPropertiesDoublePrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   double value=0;
   
//--- get the deal symbol, profit currency and the number of decimal places for the symbol
   string symbol  = HistoryDealGetString(ticketDEAL_SYMBOL);
   string currencySymbolInfoString(symbolSYMBOL_CURRENCY_PROFIT);
   int    digits  = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- 헤더 텍스트와 헤더 필드의 너비를 정의합니다.
//--- 헤더 너비가 0과 같은 함수에 전달되면 너비는 헤더 줄 크기 + 1이 됩니다.
   header="Volume:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- get and display the deal volume with the specified header width in the journal
   if(!HistoryDealGetDouble(ticketDEAL_VOLUMEvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- display the deal price in the journal
   header="Price:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_PRICEvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
   
//--- display the deal commission in the journal
   header="Commission:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_COMMISSIONvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- display the accumulated swap in the journal when closing
   header="Swap:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_SWAPvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- display the deal financial result in the journal
   header="Profit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_PROFITvalue))
      return;
   PrintFormat("%-*s%-.2f %s"wheadervaluecurrency);
   
//--- display the deal fee in the journal
   header="Fee:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_FEEvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- 저널에 StopLoss 레벨을 표시
   header="StopLoss:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_SLvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- 저널에 TakeProfit 레벨을 표시
   header="TakeProfit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetDouble(ticketDEAL_TPvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
  }
//+------------------------------------------------------------------+
//| 거래 타입 설명을 반환                                               |
//+------------------------------------------------------------------+
string DealTypeDescription(const ENUM_DEAL_TYPE type)
  {
   switch(type)
     {
      case DEAL_TYPE_BUY                     :  return("Buy");
      case DEAL_TYPE_SELL                    :  return("Sell");
      case DEAL_TYPE_BALANCE                 :  return("Balance");
      case DEAL_TYPE_CREDIT                  :  return("Credit");
      case DEAL_TYPE_CHARGE                  :  return("Additional charge");
      case DEAL_TYPE_CORRECTION              :  return("Correction");
      case DEAL_TYPE_BONUS                   :  return("Bonus");
      case DEAL_TYPE_COMMISSION              :  return("Additional commission");
      case DEAL_TYPE_COMMISSION_DAILY        :  return("Daily commission");
      case DEAL_TYPE_COMMISSION_MONTHLY      :  return("Monthly commission");
      case DEAL_TYPE_COMMISSION_AGENT_DAILY  :  return("Daily agent commission");
      case DEAL_TYPE_COMMISSION_AGENT_MONTHLY:  return("Monthly agent commission");
      case DEAL_TYPE_INTEREST                :  return("Interest rate");
      case DEAL_TYPE_BUY_CANCELED            :  return("Canceled buy deal");
      case DEAL_TYPE_SELL_CANCELED           :  return("Canceled sell deal");
      case DEAL_DIVIDEND                     :  return("Dividend operations");
      case DEAL_DIVIDEND_FRANKED             :  return("Franked (non-taxable) dividend operations");
      case DEAL_TAX                          :  return("Tax charges");
      default                                :  return("Unknown deal type: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| 포지션 변경 메서드 반환                                             |
//+------------------------------------------------------------------+
string DealEntryDescription(const ENUM_DEAL_ENTRY entry)
  {
   switch(entry)
     {
      case DEAL_ENTRY_IN      :  return("In");
      case DEAL_ENTRY_OUT     :  return("Out");
      case DEAL_ENTRY_INOUT   :  return("Reverce");
      case DEAL_ENTRY_OUT_BY  :  return("Out by");
      case DEAL_ENTRY_STATE   :  return("Status record");
      default                 :  return("Unknown deal entry: "+(string)entry);
     }
  }

참고 항목

HistorySelect(), HistoryDealsTotal(), HistoryDealGetTicket(), Deal Properties