OrderGetInteger

OrderGetTicket 또는 OrderSelect를 사용하여 미리 선택된 요청된 주문 속성을 반환합니다.. 주문 속성은 datetime, int 유형이어야 합니다. 이 함수엔 2가지 변수가 있습니다

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

long  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id        // 속성 식별자
   );

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

bool  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // 속성 식별자
   long&                        long_var           // 여기서 속성 값을 수락합니다
   );

매개 변수

property_id

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

long_var

[out]  요청된 속성 값을 수락하는 long 타입의 변수.

반환값

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

참고

현재 보류 주문을 클라이언트 터미널의 "도구 상자"의 "거래" 탭에도 표시되는 포지션과 혼동하지 마십시오.

포지션 (ACCOUNT_MARGIN_MODE_RETAIL_NETTINGACCOUNT_MARGIN_MODE_EXCHANGE)의 "netting" 해석의 경우, 언제든지 하나의 포지션이 하나의 심볼에 대해 존재할 수 있습니다. 이 포지션은 하나 이상의 거래의 결과입니다. Toolbox 창의 Trading 탭에도 표시되는 유효한 보류 주문과 포지션을 혼동하지 마십시오

개별 포지션이 허용되는 경우 (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), 하나의 심볼로 여러 포지션을 오픈할 수 있습니다.

주문에 대한 새로운 데이터를 수신하려면, 해당 데이터를 참조하기 전에 OrderSelect()를 요청하는 것이 좋습니다.

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 모든 계정 주문 목록에 의한 루프
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- 루프 인덱스를 통해 리스트에서 주문 티켓 가져오기
      ulong ticket=OrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- 주문 유형을 가져오고 선택한 주문의 실제 속성 목록에 대한 헤더를 표시합니다.
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("Integer properties of an active pending order %s #%I64u:"typeticket);
      
      //--- 헤더 아래에서 선택한 주문의 모든 정수 속성을 인쇄
      OrderPropertiesIntegerPrint(17);
     }
   /*
   결과:
   Integer properties of an active pending order Buy Limit #2812945317:
   Ticket:          2812945317
   Time setup:      2024.09.04 19:17:16
   Type:            Buy Limit
   State:           Placed
   Time expiration0
   Time done:       0
   Time setup msc:  2024.09.04 19:17:16.686
   Time done msc:   0
   Type filling:    Return
   Type time:       Time GTC
   Magic:           0
   Reason:          Client
   Position ID:     0
   Position By ID:  0
   */
  }
//+------------------------------------------------------------------+
//| 저널에서 선택한 주문의 정수 속성 표시                                 |
//+------------------------------------------------------------------+
void OrderPropertiesIntegerPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   long   value=0;
   
//--- 주문 티켓을 저널에 표시
   OrderPropertyPrint("Ticket:"header_widthORDER_TICKET);
   
//--- 주문 시간을 저널에 표시
   OrderPropertyPrint("Time setup:"header_widthORDER_TIME_SETUP);
   
//--- 주문 유형을 저널에 표시
   OrderPropertyPrint("Type:"header_widthORDER_TYPE);
   
//--- 주문 상태를 저널에 표시
   OrderPropertyPrint("State:"header_widthORDER_STATE);
   
//--- 주문 유효 기간을 저널에 표시
   OrderPropertyPrint("Time expiration:"header_widthORDER_TIME_EXPIRATION);
   
//--- 주문 실행/만료 시간을 저널에 표시
   OrderPropertyPrint("Time done:"header_widthORDER_TIME_DONE);
   
//--- 1970년 1월 1일 이후 실행 명령을 내린 시간을 밀리초 단위로 저널에 표시
   OrderPropertyPrint("Time setup msc:"header_widthORDER_TIME_SETUP_MSC);
   
//--- 1970년 1월 1일 이후 주문 실행/만료 시간을 밀리초 단위로 저널에 표시합니다.
   OrderPropertyPrint("Time done msc:"header_widthORDER_TIME_DONE_MSC);
   
//--- 실행 유형을 저널의 잔여로 표시합니다.
   OrderPropertyPrint("Type filling:"header_widthORDER_TYPE_FILLING);
   
//--- 주문 수명을 저널에 표시
   OrderPropertyPrint("Type time:"header_widthORDER_TYPE_TIME);
   
//--- 주문을 수행한 EA의 ID를 저널에 표시
   OrderPropertyPrint("Magic:"header_widthORDER_MAGIC);
   
//--- 주문 이유 또는 출처를 저널에 표시
   OrderPropertyPrint("Reason:"header_widthORDER_REASON);
   
//--- 실행 중 주문에 설정된 포지션 ID를 저널에 표시
   OrderPropertyPrint("Position ID:"header_widthORDER_POSITION_ID);
   
//--- 저널에 ORDER_TYPE_CLOSE_BY 유형 주문에 대한 반대 포지션 ID를 표시
   OrderPropertyPrint("Position By ID:"header_widthORDER_POSITION_BY_ID);
  }
//+------------------------------------------------------------------+
//| 저널에 주문 정수 속성 값을 표시                                      |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_INTEGER property)
  {
   string svalue="";
   long   lvalue=0;
   if(!OrderGetInteger(propertylvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      switch(property)
        {
         case ORDER_TICKET          :
         case ORDER_MAGIC           :
         case ORDER_POSITION_ID     :
         case ORDER_POSITION_BY_ID  :
           svalue=(string)lvalue;
           break;
           
         case ORDER_TIME_SETUP      :
         case ORDER_TIME_EXPIRATION :
         case ORDER_TIME_DONE       :
           svalue=(lvalue!=0 ? TimeToString((datetime)lvalueTIME_DATE|TIME_MINUTES|TIME_SECONDS) : "0");
           break;
           
         case ORDER_TIME_SETUP_MSC  :
         case ORDER_TIME_DONE_MSC   :
           svalue=(lvalue!=0 ? TimeMscToString(lvalue) : "0");
           break;
           
         case ORDER_TYPE            :
           svalue=OrderTypeDescription((ENUM_ORDER_TYPE)lvalue);
           break;
         case ORDER_STATE           :
           svalue=OrderStateDescription((ENUM_ORDER_STATE)lvalue);
           break;
         case ORDER_TYPE_FILLING    :
           svalue=OrderTypeFillingDescription((ENUM_ORDER_TYPE_FILLING)lvalue);
           break;
         case ORDER_TYPE_TIME       :
           svalue=OrderTypeTimeDescription((ENUM_ORDER_TYPE_TIME)lvalue);
           break;
         case ORDER_REASON          :
           svalue=OrderReasonDescription((ENUM_ORDER_REASON)lvalue);
           break;
         
         default                    :
           svalue="Unknown property";
           break;
        }
      
      //--- 헤더 너비가 0과 같은 함수에 전달되면 너비는 헤더 줄 크기 + 1
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-s"wheadersvalue);
     }
  }
//+------------------------------------------------------------------+
//| 주문 유형 설명을 반환                                               |
//+------------------------------------------------------------------+
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: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| 주문 상태 설명 반환                                                 |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
  {
   switch(state)
     {
      case ORDER_STATE_STARTED         :  return("Started");
      case ORDER_STATE_PLACED          :  return("Placed");
      case ORDER_STATE_CANCELED        :  return("Canceled");
      case ORDER_STATE_PARTIAL         :  return("Partial");
      case ORDER_STATE_FILLED          :  return("Filled");
      case ORDER_STATE_REJECTED        :  return("Rejected");
      case ORDER_STATE_EXPIRED         :  return("Expired");
      case ORDER_STATE_REQUEST_ADD     :  return("Request Add");
      case ORDER_STATE_REQUEST_MODIFY  :  return("Request Modify");
      case ORDER_STATE_REQUEST_CANCEL  :  return("Request Cancel");
      default                          :  return("Unknown state: "+(string)state);
     }
  }
//+------------------------------------------------------------------+
//| 주문 볼륨 채우기 정책 설명 반환                                      |
//+------------------------------------------------------------------+
string OrderTypeFillingDescription(const ENUM_ORDER_TYPE_FILLING type)
  {
   switch(type)
     {
      case ORDER_FILLING_FOK     :  return("Fill or Kill");
      case ORDER_FILLING_IOC     :  return("Immediate or Cancel");
      case ORDER_FILLING_BOC     :  return("Book or Cancel");
      case ORDER_FILLING_RETURN  :  return("Return");
      default                    :  return("Unknown type filling: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| 주문 만료일 설명 반환                                               |
//+------------------------------------------------------------------+
string OrderTypeTimeDescription(const ENUM_ORDER_TYPE_TIME type)
  {
   switch(type)
     {
      case ORDER_TIME_GTC           :   return("Time GTC");
      case ORDER_TIME_DAY           :   return("Time Day");
      case ORDER_TIME_SPECIFIED     :   return("Time Specified");
      case ORDER_TIME_SPECIFIED_DAY :   return("Time Specified Day");
      default                       :  return("Unknown type time: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| 주문 접수 이유 설명 반환                                            |
//+------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
  {
   switch(reason)
     {
      case ORDER_REASON_CLIENT   :  return("Client");
      case ORDER_REASON_MOBILE   :  return("Mobile");
      case ORDER_REASON_WEB      :  return("Web");
      case ORDER_REASON_EXPERT   :  return("Expert");
      case ORDER_REASON_SL       :  return("Stop Loss");
      case ORDER_REASON_TP       :  return("Take Profit");
      case ORDER_REASON_SO       :  return("Stop Out");
      default                    :  return("Unknown reason: "+(string)reason);
     }
  }
//+------------------------------------------------------------------+
//| 말리세컨드로 시간을 반환                                             |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

참고 항목

OrdersTotal(), OrderGetTicket(), Order Properties