MT5CopyRatesFrom

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

MT5CopyRatesFrom(
   symbol,       // 交易品种名称
   timeframe,    // 时间周期
   from,         // 初始柱形图开盘日期
   count         // 柱形图数
   )

参数

交易品种

[in]  交易品种名称,例如"EURUSD"。

timeframe

[in]  请求柱形图的时间周期。通过MT5_TIMEFRAME枚举的值设置。

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

count

[in]  将要接收的柱形图数。

返回值

返回元组柱形图(时间、开盘价、最高价、最低价、收盘价、tick_volume、点差、real_volume)。

注意

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

当创建'datetime'对象时,Python使用本地时区,而MetaTrader 5以UTC时区保存报价和柱形图开盘时间(没有时移)。 因此,'datetime'应在UTC时间内创建,用于执行使用时间的函数。从MetaTrader 5获得的数据有UTC时间,但Python在尝试打印时再次应用本地时移。 因此,所获得的数据也应进行校正,以便直观表示。  

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

ID

描述

MT5_TIMEFRAME_M1

1分钟

MT5_TIMEFRAME_M2

2 分钟

MT5_TIMEFRAME_M3

3 分钟

MT5_TIMEFRAME_M4

4 分钟

MT5_TIMEFRAME_M5

5 分钟

MT5_TIMEFRAME_M6

6 分钟

MT5_TIMEFRAME_M10

10 分钟

MT5_TIMEFRAME_M12

12 分钟

MT5_TIMEFRAME_M12

15 分钟

MT5_TIMEFRAME_M20

20 分钟

MT5_TIMEFRAME_M30

30 分钟

MT5_TIMEFRAME_H1

1 小时

MT5_TIMEFRAME_H2

2 小时

MT5_TIMEFRAME_H3

3 小时

MT5_TIMEFRAME_H4

4 小时

MT5_TIMEFRAME_H6

6 小时

MT5_TIMEFRAME_H8

8 小时

MT5_TIMEFRAME_H12

12 小时

MT5_TIMEFRAME_D1

1 天

MT5_TIMEFRAME_W1

1 周

MT5_TIMEFRAME_MON1

1 个月

 

例如:

 datetime 导入 datetime
 MetaTrader5 导入 *
# 导入'pandas'模块,用于以表格形式显示获得的数据
导入 pandas  pd
pd.set_option('display.max_columns', 500# 将要显示的列数
pd.set_option('display.width', 1500)      # 要显示的最大表宽
# 导入用于处理时区的pytz模块
导入 pytz
 
# 建立与MetaTrader 5程序端的连接
MT5Initialize()
# 等待直至MetaTrader 5程序端连接到交易服务器
MT5WaitForTerminal()
 
# 将时区设置为UTC
timezone = pytz.timezone("Etc/UTC")
# 以UTC时区创建'datetime'对象,以避免实现本地时区偏移
utc_from = datetime(201945tzinfo=timezone)
# 在UTC时区,获取从01.04.2019开始的10个EURUSD H4柱形图
rates = MT5CopyRatesFrom("EURUSD"MT5_TIMEFRAME_H4utc_from10)
 
# 断开与MetaTrader 5程序端的连接
MT5Shutdown()
# 在新行显示所获得数据的每个元素
print("Display obtained data 'as is'")
for rate in rates:
    print(rate)
 
# 从所获得的数据创建DataFrame
rates_frame = pd.DataFrame(list(rates),
                           columns=['time', 'open', 'low', 'high', 'close', 'tick_volume', 'spread', 'real_volume'])
# 显示数据
print("\nDisplay dataframe with data")
print(rates_frame)  # 我们可以看到Python在本地时区中使用一个偏移提供了柱形图开盘时间
 
# 获取本地电脑从UTC时间的偏移
UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
 
# 创建一个简单的函数来纠正偏移
def local_to_utc(dt):
    return dt + UTC_OFFSET_TIMEDELTA
 
# 在rates_frame数据框中为'time'列应用偏移
rates_frame['time'] = rates_frame.apply(lambda ratelocal_to_utc(rate['time']), axis=1)
 
# 再次显示数据,确保H4蜡烛图开盘时间现在是4的倍数
print("\nDisplay the dataframe after adjusting the time")
print(rates_frame)
 
结果:
将获得的数据显示为“保持原来状态”
MT5Rate(time=datetime.datetime(2019, 4, 3, 15, 0), open=1.12431, low=1.12543, high=1.12335, close=1.12341, tick_volume=11735, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 19, 0), open=1.12339, low=1.12487, high=1.12247, close=1.12439, tick_volume=15241, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 23, 0), open=1.12439, low=1.12478, high=1.12311, close=1.12312, tick_volume=4973, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 3, 0), open=1.12324, low=1.12472, high=1.12318, close=1.1244, tick_volume=3099, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 7, 0), open=1.1244, low=1.12451, high=1.12364, close=1.12406, tick_volume=3304, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 11, 0), open=1.12406, low=1.12472, high=1.12302, close=1.12313, tick_volume=10119, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 15, 0), open=1.12313, low=1.12359, high=1.12122, close=1.12171, tick_volume=15098, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 19, 0), open=1.12171, low=1.12246, high=1.12056, close=1.12188, tick_volume=15369, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 23, 0), open=1.12187, low=1.12265, high=1.1213, close=1.12191, tick_volume=5156, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 5, 3, 0), open=1.12199, low=1.12286, high=1.1217, close=1.1222, tick_volume=3903, spread=4, real_volume=0)
 
显示带有数据的数据框
                 time     open      low     high    close  tick_volume  spread  real_volume
0 2019-04-03 15:00:00  1.12431  1.12543  1.12335  1.12341        11735       8            0
1 2019-04-03 19:00:00  1.12339  1.12487  1.12247  1.12439        15241       8            0
2 2019-04-03 23:00:00  1.12439  1.12478  1.12311  1.12312         4973       8            0
3 2019-04-04 03:00:00  1.12324  1.12472  1.12318  1.12440         3099       4            0
4 2019-04-04 07:00:00  1.12440  1.12451  1.12364  1.12406         3304       4            0
5 2019-04-04 11:00:00  1.12406  1.12472  1.12302  1.12313        10119       8            0
6 2019-04-04 15:00:00  1.12313  1.12359  1.12122  1.12171        15098       8            0
7 2019-04-04 19:00:00  1.12171  1.12246  1.12056  1.12188        15369       8            0
8 2019-04-04 23:00:00  1.12187  1.12265  1.12130  1.12191         5156       8            0
9 2019-04-05 03:00:00  1.12200  1.12286  1.12170  1.12220         3903       4            0
 
调整蜡烛图开盘时间后显示数据框
                 time     open      low     high    close  tick_volume  spread  real_volume
0 2019-04-03 12:00:00  1.12431  1.12543  1.12335  1.12341        11735       8            0
1 2019-04-03 16:00:00  1.12339  1.12487  1.12247  1.12439        15241       8            0
2 2019-04-03 20:00:00  1.12439  1.12478  1.12311  1.12312         4973       8            0
3 2019-04-04 00:00:00  1.12324  1.12472  1.12318  1.12440         3099       4            0
4 2019-04-04 04:00:00  1.12440  1.12451  1.12364  1.12406         3304       4            0
5 2019-04-04 08:00:00  1.12406  1.12472  1.12302  1.12313        10119       8            0
6 2019-04-04 12:00:00  1.12313  1.12359  1.12122  1.12171        15098       8            0
7 2019-04-04 16:00:00  1.12171  1.12246  1.12056  1.12188        15369       8            0
8 2019-04-04 20:00:00  1.12187  1.12265  1.12130  1.12191         5156       8            0
9 2019-04-05 00:00:00  1.12200  1.12286  1.12170  1.12220         3903       4            0

另见

CopyRatesMT5CopyRatesFromPosMT5CopyRatesRangeMT5CopyTicksFromMT5CopyTicksRange