copy_rates_from_pos

Получает бары из терминала MetaTrader 5, начиная с указанного индекса.

copy_rates_from_pos(
   symbol,       // имя символа
   timeframe,    // таймфрейм
   start_pos,    // номер начального бара
   count         // количество баров
   )

Параметры

symbol

[in]  Имя финансового инструмента, например, "EURUSD". Обязательный неименованный параметр.

timeframe

[in]  Таймфрейм, для которого запрашиваются бары. Задается значением из перечисления TIMEFRAME. Обязательный неименованный параметр.

start_pos

[in]  Начальный номер бара, с которого запрашиваются данные. Нумерация баров идет от настоящего к прошлому, то есть нулевой бар означает текущий. Обязательный неименованный параметр.

count

[in]  Количество баров, которое необходимо получить. Обязательный неименованный параметр.

Возвращаемое значение

Возвращает бары в виде массива numpy с именованными столбцами time, open, high, low, close, tick_volume, spread и real_volume.В случае ошибки возвращает None, информацию об ошибке можно получить с помощью last_error().

Примечание

Для дополнительной информации смотрите функцию CopyRates().

Терминал MetaTrader 5 отдает бары только в пределах истории, доступной пользователю на графиках. Количество баров, которые доступны пользователю, задается в настройках параметром "Макс. баров в окне".

Пример:

from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500# сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
 
# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# запросим 10 баров на GBPUSD D1 c текущего дня
rates = mt5.copy_rates_from_pos("GBPUSD"mt5.TIMEFRAME_D1010)
 
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
 
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
    print(rate)
 
# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)
# сконвертируем время в виде секунд в формат datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame
 
Результат:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Выведем полученные данные как есть
(1581552000, 1.29568, 1.30692, 1.29441, 1.30412, 68228, 0, 0)
(1581638400, 1.30385, 1.30631, 1.3001, 1.30471, 56498, 0, 0)
(1581897600, 1.30324, 1.30536, 1.29975, 1.30039, 49400, 0, 0)
(1581984000, 1.30039, 1.30486, 1.29705, 1.29952, 62288, 0, 0)
(1582070400, 1.29952, 1.3023, 1.29075, 1.29187, 57909, 0, 0)
(1582156800, 1.29186, 1.29281, 1.28489, 1.28792, 61033, 0, 0)
(1582243200, 1.28802, 1.29805, 1.28746, 1.29566, 66386, 0, 0)
(1582502400, 1.29426, 1.29547, 1.28865, 1.29283, 66933, 0, 0)
(1582588800, 1.2929, 1.30178, 1.29142, 1.30037, 80121, 0, 0)
(1582675200, 1.30036, 1.30078, 1.29136, 1.29374, 49286, 0, 0)
 
Выведем датафрейм с данными
        time     open     high      low    close  tick_volume  spread  real_volume
0 2020-02-13  1.29568  1.30692  1.29441  1.30412        68228       0            0
1 2020-02-14  1.30385  1.30631  1.30010  1.30471        56498       0            0
2 2020-02-17  1.30324  1.30536  1.29975  1.30039        49400       0            0
3 2020-02-18  1.30039  1.30486  1.29705  1.29952        62288       0            0
4 2020-02-19  1.29952  1.30230  1.29075  1.29187        57909       0            0
5 2020-02-20  1.29186  1.29281  1.28489  1.28792        61033       0            0
6 2020-02-21  1.28802  1.29805  1.28746  1.29566        66386       0            0
7 2020-02-24  1.29426  1.29547  1.28865  1.29283        66933       0            0
8 2020-02-25  1.29290  1.30178  1.29142  1.30037        80121       0            0
9 2020-02-26  1.30036  1.30078  1.29136  1.29374        49286       0            0

Смотри также

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range