history_orders_get

티켓 또는 포지션으로 필터링할 수 있는 함수로, 거래 내역에서 주문을 가져옵니다. 호출 옵션은 세 가지가 있습니다.

시간 간격을 지정하여 호출합니다. 지정된 간격 내에 해당하는 모든 주문을 반환합니다.

history_orders_get(
   date_from,                // 주문 요청 시작일
   date_to,                  // 주문 요청 만료일
   group="GROUP"        // 심볼별 주문 선택을 위한 필터
   )

주문 티켓을 지정하는 호출. 지정된 티켓으로 주문을 반환합니다.

history_orders_get(
   ticket=TICKET        // 주문 티켓
)

포지션 티켓을 지정해 호출합니다. ORDER_POSITION_ID 속성에 지정된 포지션 티켓으로 모든 주문을 반환합니다.

history_orders_get(
   position=POSITION    // 포지션 티켓
)

Parameters

date_from

[in]  주문 요청 시작일. 'datetime' 개체에 의해 또는 1970.01.01 이후 경과된 시간(초)으로 설정됨. 이름이 지정되지 않은 필수 매개 변수가 먼저 지정됩니다.

date_to

[in]  주문 요청 만료일 'datetime' 개체에 의해 또는 1970.01.01 이후 경과된 시간(초)으로 설정됨. 이름이 지정되지 않은 필수 매개 변수가 초 단위로 지정됩니다.

group="GROUP"

[in]  필요한 심볼 그룹을 배열하기 위한 필터. 선택적 지명 파라미터. 그룹이 지정된 경우 함수는 심볼 이름에 대해 지정된 조건을 충족하는 주문만 반환합니다.

ticket=TICKET

[in]  받아야 할 주문 티켓. 선택적 파라미터. 지정하지 않으면 필터가 적용되지 않습니다.

position=POSITION

[in]  주문은 모든 포지션(ORDER_POSITION_ID에 저장됨)의 티켓을 수령해야 함. 선택적 파라미터. 지정하지 않으면 필터가 적용되지 않습니다.

반환 값

명명된 튜플 구조(이름 지정된 튜플)의 형식으로 정보를 반환합니다. 오류가 발생하면 None을 반환합니다. 오류에 대한 정보는 last_error()를 사용하여 얻을 수 있습니다.

참고

이 함수를 사용하면 HistoryOrdersTotalHistoryOrderSelect 탠덤과 유사한 단일 요청에서 지정된 기간 내에 모든 주문 내역을 받을 수 있습니다.

그룹 매개 변수는 쉼표로 구분된 여러 조건을 포함할 수 있습니다. 조건은 '*'를 사용하여 마스크로 설정할 수 있습니다. 논리적 부정 심볼 '!'을(를) 제외에 사용할 수 있습니다. 모든 조건은 순차적으로 적용되며, 이는 그룹에 포함되는 조건 다음에 배제 조건이 먼저 지정되어야 함을 의미합니다. 예를 들면, group="*, !EUR"은 모든 심볼에 대한 거래를 먼저 선택하고 심볼 이름에 "EUR"이 포함된 거래는 나중에 제외해야 함을 의미합니다.

예:

from datetime import datetime
import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# 표시될 칼럼 수
pd.set_option('display.width', 1500)      # 표시될 최대 표 너비
# MetaTrader 5 패키지에 데이터 표시
print("MetaTrader5 패키지 작성자: ",mt5.__author__)
print("MetaTrader5 패키지 버전: ",mt5.__version__)
print()
# MetaTrader 5 터미널과의 연결 설정
if not mt5.initialize():
    print("initialize() 실패, 오류 코드 =",mt5.last_error())
    quit()
 
# 내역에서 주문 수를 가져옵니다
from_date=datetime(2020,1,1)
to_date=datetime.now()
history_orders=mt5.history_orders_get(from_date, to_date, group="*GBP*")
if history_orders==None:
    print("No history orders with group=\"*GBP*\", error code={}".format(mt5.last_error()))
elif len(history_orders)>0:
    print("history_orders_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(history_orders)))
print()
 
# 모든 내역상 주문을 포지션별로 표시
position_id=530218319
position_history_orders=mt5.history_orders_get(position=position_id)
if position_history_orders==None:
    print("No orders with position #{}".format(position_id))
    print("error code =",mt5.last_error())
elif len(position_history_orders)>0:
    print("Total history orders on position #{}: {}".format(position_id,len(position_history_orders)))
   # 지정된 포지션을 가지고 있는 모든 과거 주문을 표시
    for position_order in position_history_orders:        
        print(position_order)
    print()
    # pandas를 이용해 이 주문들을 표로 표시.DataFrame
    df=pd.DataFrame(list(position_history_orders),columns=position_history_orders[0]._asdict().keys())
    df.drop(['time_expiration','type_time','state','position_by_id','reason','volume_current','price_stoplimit','sl','tp'], axis=1, inplace=True)
    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
    df['time_done'] = pd.to_datetime(df['time_done'], unit='s')
    print(df)
 
# MetaTrader 5 터미널 연결 종료
mt5.shutdown()
 
결과:
MetaTrader5 패키지 작성자:  MetaQuotes Software Corp.
MetaTrader5 패키지 버전:  5.0.29
 
history_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14
 
포지션 #530218319의 총 주문 내역: 2
TradeOrder(ticket=530218319, time_setup=1582282114, time_setup_msc=1582282114681, time_done=1582303777, time_done_msc=1582303777582, time_expiration=0, ...
TradeOrder(ticket=535548147, time_setup=1583176242, time_setup_msc=1583176242265, time_done=1583176242, time_done_msc=1583176242265, time_expiration=0, ...
 
      ticket          time_setup  time_setup_msc           time_done  time_done_msc  type  type_filling  magic  position_id  volume_initial  price_open  price_current  symbol comment external_id
0  530218319 2020-02-21 10:48:34   1582282114681 2020-02-21 16:49:37  1582303777582     2             2      0    530218319            0.01     0.97898        0.97863  USDCHF                    
1  535548147 2020-03-02 19:10:42   1583176242265 2020-03-02 19:10:42  1583176242265     1             0      0    530218319            0.01     0.95758        0.95758  USDCHF   

더 보기

history_deals_total, history_deals_get