copy_rates_range

MetaTrader 5 terminalinden belirtilen tarih aralığındaki barları elde eder.

copy_rates_range(
   symbol,       // sembol adı
   timeframe,    // zaman aralığı
   date_from,    // barların talep edileceği aralığın başlangıç tarihi
   date_to       // barların talep edileceği aralığın bitiş tarihi
   )

Parametreler

symbol

[in]  Finansal enstrüman adı, örneğin, "EURUSD". Gerekli adsız parametre.

timeframe

[in]  Barların talep edileceği zaman aralığı. TIMEFRAME sayımından bir değer ayarlanır. Gerekli adsız parametre.

date_from

[in]  Barların 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. Açılış zamanı >= date_from olan barlar geri döndürülür. Gerekli adsız parametre.

date_to

[in]  Barların 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. Açılış zamanı <= date_to olan barlar geri döndürülür. Gerekli adsız parametre.

Geri dönüş değeri

Barlar time, open, high, low, close, tick_volume, spread ve real_volume adlı sütunlara sahip numpy dizisi halinde 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

Daha fazla bilgi için CopyRates() fonksiyonuna bakın.

MetaTrader 5 terminali yalnızca grafiklerde kullanıcıya kullanılabilir olan geçmişteki barları sağlar. Kullanıcılar için kullanılabilir bar sayısı "Maks. bar sayısı" parametresinde ayarlanır.

Python, 'datetime' nesnesini oluştururken yerel zaman dilimini kullanır, MetaTrader 5 ise tik ve bar açılış zamanını UTC zaman diliminde (öteleme olmadan) depolar. Bu nedenle; 'datetime', zamanı kullanan fonksiyonları yürütmek için UTC zamanında oluşturulmalıdır. MetaTrader 5 terminalinden alınan veriler UTC zamanına sahiptir.

Örnek:

from datetime import datetime
import MetaTrader5 as mt5
# MetaTrader 5 paketi ile ilgili verileri görüntüle
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# elde edilen verileri tablo şeklinde görüntülemek için 'pandas' modülünü içe aktar
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
# zaman dilimi ile çalışmak için pytz modülünü içe aktar
import pytz
 
# MetaTrader 5 terminaline bağlantı kur
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# zaman dilimini UTC olarak ayarla
timezone = pytz.timezone("Etc/UTC")
# yerel zaman dilimi ötelemesinin gerçekleşmesini önlemek için UTC zaman diliminde 'datetime' nesneleri oluştur
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, hour = 13, tzinfo=timezone)
# UTC zaman diliminde 2020.01.10 00:00 - 2020.01.11 13:00 aralığında USDJPY M5 barları elde et
rates = mt5.copy_rates_range("USDJPY"mt5.TIMEFRAME_M5utc_from, utc_to)
 
# MetaTrader 5 terminaline olan bağlantıyı kapat
mt5.shutdown()
 
# elde edilen verilerin her bir elemanını yeni bir satırda göster
print("Elde edilen verileri 'olduğu gibi' görüntüle")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)
 
# elde edilen verilerden DataFrame oluştur
rates_frame = pd.DataFrame(rates)
# saniye cinsinden zamanı 'datetime' biçimine dönüştür
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# verileri görüntüle
print("\nVerileri içeren veri çerçevesini görüntüle")
print(rates_frame.head(10))
 
Sonuç:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Elde edilen verileri 'olduğu gibi' görüntüle
(1578614400, 109.513, 109.527, 109.505, 109.521, 43, 2, 0)
(1578614700, 109.521, 109.549, 109.518, 109.543, 215, 8, 0)
(1578615000, 109.543, 109.543, 109.466, 109.505, 98, 10, 0)
(1578615300, 109.504, 109.534, 109.502, 109.517, 155, 8, 0)
(1578615600, 109.517, 109.539, 109.513, 109.527, 71, 4, 0)
(1578615900, 109.526, 109.537, 109.484, 109.52, 106, 9, 0)
(1578616200, 109.52, 109.524, 109.508, 109.51, 205, 7, 0)
(1578616500, 109.51, 109.51, 109.491, 109.496, 44, 8, 0)
(1578616800, 109.496, 109.509, 109.487, 109.5, 85, 5, 0)
(1578617100, 109.5, 109.504, 109.487, 109.489, 82, 7, 0)
 
Verileri içeren veri çerçevesini görüntüle
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-10 00:00:00  109.513  109.527  109.505  109.521           43       2            0
1 2020-01-10 00:05:00  109.521  109.549  109.518  109.543          215       8            0
2 2020-01-10 00:10:00  109.543  109.543  109.466  109.505           98      10            0
3 2020-01-10 00:15:00  109.504  109.534  109.502  109.517          155       8            0
4 2020-01-10 00:20:00  109.517  109.539  109.513  109.527           71       4            0
5 2020-01-10 00:25:00  109.526  109.537  109.484  109.520          106       9            0
6 2020-01-10 00:30:00  109.520  109.524  109.508  109.510          205       7            0
7 2020-01-10 00:35:00  109.510  109.510  109.491  109.496           44       8            0
8 2020-01-10 00:40:00  109.496  109.509  109.487  109.500           85       5            0
9 2020-01-10 00:45:00  109.500  109.504  109.487  109.489           82       7            0

Ayrıca bakınız

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range