history_orders_get

Pozisyon veya etikete göre filtreleme özelliğiyle işlem geçmişinden emirleri elde eder. Üç çağrı seçeneği vardır.

Zaman aralığını belirten çağrı. Belirtilen aralıktaki tüm emirleri geri döndürür.

history_orders_get(
   date_from,                // emirlerin talep edileceği aralığın başlangıç tarihi
   date_to,                  // emirlerin talep edileceği aralığın bitiş tarihi
   group="GROUP"        // emirleri sembollere göre seçmek için filtre
   )

Emir etiketini belirten çağrı. Belirtilen etikete sahip emri geri döndürür.

history_orders_get(
   ticket=TICKET        // emir etiketi
)

Pozisyon etiketini belirten çağrı. ORDER_POSITION_ID özelliğinde belirtilen pozisyon etiketine sahip tüm emirleri geri döndürür.

history_orders_get(
   position=POSITION    // pozisyon etiketi
)

Parametreler

date_from

[in]  İşlemlerin talep edileceği aralığın başlangıç tarihi. 'datetime' nesnesi tarafından veya 1970.01.01'den beri geçen saniye sayısı olarak ayarlanır. İlk olarak belirtilen gerekli adsız parametre.

date_to

[in]  İşlemlerin talep edileceği aralığın bitiş tarihi. 'datetime' nesnesi tarafından veya 1970.01.01'den beri geçen saniye sayısı olarak ayarlanır. İkinci olarak belirtilen gerekli adsız parametre.

group="GROUP"

[in]  Gerekli sembollerden oluşan bir grup düzenlemek için filtre. Opsiyonel adlandırılmış parametre. Bir grup belirtilirse, fonksiyon yalnızca sembol adı için belirtilen ölçütleri karşılayan emirleri geri döndürür.

ticket=TICKET

[in]  Elde edilecek emir etiketi. Opsiyonel parametre. Belirtilmezse, filtre uygulanmaz.

position=POSITION

[in]  Pozisyon etiketi (ORDER_POSITION_ID'de saklanır). Bu pozisyon etiketine sahip tüm emirler elde edilir. Opsiyonel parametre. Belirtilmezse, filtre uygulanmaz.

Geri dönüş değeri

Bilgiler adlandırılmış bir veri grubu yapısı (namedtuple) biçiminde geri döndürülür. Bir hata durumunda None geri döndürülür. Hata ile ilgili bilgiler last_error() kullanılarak elde edilebilir.

Not

Fonksiyon, HistoryOrdersTotal ve HistoryOrderSelect ikilisine benzer şekilde tek bir çağrıda belirli bir aralıktaki tüm geçmiş emirlerin elde edilmesine olanak sağlar.

group parametresi, virgülle ayrılmış birkaç koşul içerebilir. Bir koşul '*' kullanılarak maske olarak ayarlanabilir. Hariç tutma için '!' mantıksal olumsuzlama sembolü kullanılabilir. Tüm koşullar sırayla uygulanır, yani önce gruba dahil etme koşullarını ve ardından dışlama koşulunu belirtmelisiniz. Örneğin, group="*, !EUR", önce tüm semboller için işlemlerin seçilmesi ve daha sonra sembol adlarında "EUR" içerenlerin hariç tutulması gerektiği anlamına gelir.

Örnek:

from datetime import datetime
import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# görüntülenecek sütun sayısı
pd.set_option('display.width', 1500)      # görüntülenecek maksimum tablo genişliği
# MetaTrader 5 paketi ile ilgili verileri görüntüle
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# MetaTrader 5 terminaline bağlantı kur
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# geçmişteki emir sayısını elde et
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()
 
# tüm geçmiş emirleri pozisyon etiketine göre göster
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)))
   # belirtilen pozisyon etiketine sahip tüm geçmiş emirleri göster
    for position_order in position_history_orders:        
        print(position_order)
    print()
    # bu emirleri pandas.DataFrame kullanarak bir tablo halinde göster
    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 terminaline olan bağlantıyı kapat
mt5.shutdown()
 
Sonuç:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
history_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14
 
Total history orders on position #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   

Ayrıca bakınız

history_deals_total, history_deals_get