HistoryOrderGetDouble

요청된 주문 속성을 반환합니다. 주문 속성은 double 유형이어야 합니다. 이 함수의 변수는 두 가지가 있습니다.

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

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

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

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

매개 변수

ticket_number

[in]  주문 티켓.

property_id

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

double_var

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

반환값

double 타입의 값.

참고

거래 내역의 주문을 "도구 상자" 표시줄의 "거래" 탭에 표시되는 현재 보류 주문과 혼동하지 마십시오. 취소되었거나 거래로 이어진 주문 목록은 클라이언트 터미널의 "도구 상자"에 있는 "내역" 탭에서 볼 수 있습니다.

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 거래와 주문 히스토리 요청
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- 계정의 모든 과거 주문 목록에 의한 루프
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- 루프 인덱스를 통해 리스트에서 주문 티켓 가져오기
      ulong ticket=HistoryOrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- 주문 유형을 가져오고 선택한 주문의 실제 속성 목록에 대한 헤더를 표시합니다.
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("Double properties of an history order %s #%I64u:"typeticket);
      
      //--- 헤더 아래에서 선택한 주문의 모든 실제 속성을 인쇄합니다.
      HistoryOrderPropertiesDoublePrint(ticket16);
     }
   /*
   결과:
   Double properties of an history order Sell #2810847541:
   Volume initial0.50
   Volume current0.00
   Price open:     1.10491
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10491
   StopLimit:      0.00000
   Double properties of an history order Buy Limit #2811003507:
   Volume initial1.00
   Volume current1.00
   Price open:     1.10547
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10591
   StopLimit:      0.00000
   */
  }
//+------------------------------------------------------------------+
//| 저널에서 선택한 주문 히스토리의 실제 속성을 표시                       |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesDoublePrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   double value=0;
   
//--- 주문 심볼과 심볼의 소수 자릿수를 가져옵니다.
   string symbol = HistoryOrderGetString(ticketORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- 헤더 텍스트와 헤더 필드의 너비를 정의합니다.
//--- 헤더 너비가 0과 같은 함수에 전달되면 너비는 헤더 줄 크기 + 1이 됩니다.
   header="Volume initial:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- 저널에서 지정된 너비의 헤더로 주문할 때 초기 볼륨을 가져오고 표시
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_INITIALvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- 미체결 주문량을 저널에 표시
   header="Volume current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- 주문에서 지정한 가격을 저널에 표시
   header="Price open:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_OPENvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
   
//--- 저널에 StopLoss 레벨을 표시
   header="StopLoss:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_SLvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- 저널에 TakeProfit 레벨을 표시
   header="TakeProfit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_TPvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- 저널의 주문 심볼로 현재 가격을 표시
   header="Price current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- StopLimit 주문이 활성화되면 지정가 주문 가격을 저널에 표시
   header="StopLimit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_STOPLIMITvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
  }
//+------------------------------------------------------------------+
//| 주문 유형 설명을 반환                                               |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case ORDER_TYPE_BUY              :  return("Buy");
      case ORDER_TYPE_SELL             :  return("Sell");
      case ORDER_TYPE_BUY_LIMIT        :  return("Buy Limit");
      case ORDER_TYPE_SELL_LIMIT       :  return("Sell Limit");
      case ORDER_TYPE_BUY_STOP         :  return("Buy Stop");
      case ORDER_TYPE_SELL_STOP        :  return("Sell Stop");
      case ORDER_TYPE_BUY_STOP_LIMIT   :  return("Buy Stop Limit");
      case ORDER_TYPE_SELL_STOP_LIMIT  :  return("Sell Stop Limit");
      default                          :  return("Unknown order type");
     }
  }

참고 항목

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Order Properties