copy_rates_from

从指定日期开始从MetaTrader 5程序端获取柱形图。

copy_rates_from(

   symbol,       // 交易品种名称

   timeframe,    // 时间周期

   date_from,    // 初始柱形图开盘日期

   count         // 柱形图数

   )

参数

symbol

[in]  交易品种名称,例如"EURUSD"。所需的未命名参数。

timeframe

[in]  请求柱形图的时间周期。根据TIMEFRAME枚举的值设置。所需的未命名参数。

date_from

[in]  请求样本中的第一个柱形图的开盘日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。所需的未命名参数。

count

[in]  将要接收的柱形图数。所需的未命名参数。

返回值

返回numpy数据柱形图(包含以下指定列:时间、开盘价、最高价、最低价、收盘价、tick_volume、点差和real_volume)。错误情况下返回None。可使用last_error()获取错误信息。

注意

参见CopyRates()函数获取更多信息。

只有日期小于(早于)或等于指定日期的数据。这意味着,任何柱的开盘时间始终少于或等于指定的值。

MetaTrader 5程序端仅在用户可用的图表历史记录中提供柱形图。可供用户使用的柱形图数量设置在“图表中最大数量(Max.)柱形图”参数中。

当创建'datetime'对象时,Python使用本地时区,而MetaTrader 5以UTC时区保存报价和柱形图开盘时间(没有时移)。 因此,'datetime'应在UTC时间内创建,用于执行使用时间的函数。从MetaTrader 5程序端接收到的数据使用UTC时间。  

TIMEFRAME 是一个包含可能图表周期值的枚举

ID 描述
TIMEFRAME_M1 1分钟
TIMEFRAME_M2 2 分钟
TIMEFRAME_M3 3 分钟
TIMEFRAME_M4 4 分钟
TIMEFRAME_M5 5 分钟
TIMEFRAME_M6 6 分钟
TIMEFRAME_M10 10 分钟
TIMEFRAME_M12 12 分钟
TIMEFRAME_M12 15 分钟
TIMEFRAME_M20 20 分钟
TIMEFRAME_M30 30 分钟
TIMEFRAME_H1 1 小时
TIMEFRAME_H2 2 小时
TIMEFRAME_H3 3 小时
TIMEFRAME_H4 4 小时
TIMEFRAME_H6 6 小时
TIMEFRAME_H8 8 小时
TIMEFRAME_H12 12 小时
TIMEFRAME_D1 1 天
TIMEFRAME_W1 1 周
TIMEFRAME_MN1 1 个月

例如:

from datetime import datetime

import MetaTrader5 as mt5

# 显示有关MetaTrader 5程序包的数据

print("MetaTrader5 package author: ",mt5.__author__)

print("MetaTrader5 package version: ",mt5.__version__)



# 导入'pandas'模块,用于以表格形式显示获得的数据

import pandas as pd

pd.set_option('display.max_columns', 500) # number of columns to be displayed

pd.set_option('display.width', 1500)      # max table width to display

# 导入用于处理时区的pytz模块

import pytz



# 建立与MetaTrader 5程序端的连接

if not mt5.initialize():

    print("initialize() failed, error code =",mt5.last_error())

    quit()



# 将时区设置为UTC

timezone = pytz.timezone("Etc/UTC")

# 以UTC时区创建'datetime'对象,以避免实现本地时区偏移

utc_from = datetime(2020, 1, 10, tzinfo=timezone)

# 在UTC时区,获取01.10.2020开始的10个EURUSD H4柱形图

rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)



# 断开与MetaTrader 5程序端的连接

mt5.shutdown()

# 在新行显示所获得数据的每个元素

print("Display obtained data 'as is'")

for rate in rates:

    print(rate)



# 从所获得的数据创建DataFrame

rates_frame = pd.DataFrame(rates)

# 将时间(以秒为单位)转换为日期时间格式

rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')



# 显示数据

print("\nDisplay dataframe with data")

print(rates_frame)





结果:

MetaTrader5程序包作者:MetaQuotes Software Corp.

MetaTrader5程序包版本:5.0.29



将获得的数据显示为“保持原来状态”

(1578484800, 1.11382, 1.11385, 1.1111, 1.11199, 9354, 1, 0)

(1578499200, 1.11199, 1.11308, 1.11086, 1.11179, 10641, 1, 0)

(1578513600, 1.11178, 1.11178, 1.11016, 1.11053, 4806, 1, 0)

(1578528000, 1.11053, 1.11193, 1.11033, 1.11173, 3480, 1, 0)

(1578542400, 1.11173, 1.11189, 1.11126, 1.11182, 2236, 1, 0)

(1578556800, 1.11181, 1.11203, 1.10983, 1.10993, 7984, 1, 0)

(1578571200, 1.10994, 1.11173, 1.10965, 1.11148, 7406, 1, 0)

(1578585600, 1.11149, 1.11149, 1.10923, 1.11046, 7468, 1, 0)

(1578600000, 1.11046, 1.11097, 1.11033, 1.11051, 3450, 1, 0)

(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)



显示带有数据的数据框

                 time     open     high      low    close  tick_volume  spread  real_volume

0 2020-01-08 12:00:00  1.11382  1.11385  1.11110  1.11199         9354       1            0

1 2020-01-08 16:00:00  1.11199  1.11308  1.11086  1.11179        10641       1            0

2 2020-01-08 20:00:00  1.11178  1.11178  1.11016  1.11053         4806       1            0

3 2020-01-09 00:00:00  1.11053  1.11193  1.11033  1.11173         3480       1            0

4 2020-01-09 04:00:00  1.11173  1.11189  1.11126  1.11182         2236       1            0

5 2020-01-09 08:00:00  1.11181  1.11203  1.10983  1.10993         7984       1            0

6 2020-01-09 12:00:00  1.10994  1.11173  1.10965  1.11148         7406       1            0

7 2020-01-09 16:00:00  1.11149  1.11149  1.10923  1.11046         7468       1            0

8 2020-01-09 20:00:00  1.11046  1.11097  1.11033  1.11051         3450       1            0

9 2020-01-10 00:00:00  1.11051  1.11093  1.11017  1.11041         2448       1            0

另见

CopyRatescopy_rates_from_poscopy_rates_rangecopy_ticks_fromcopy_ticks_range