MT5CopyRatesRange

从MetaTrader 5程序端获取指定日期范围内的柱形图。

MT5CopyRatesRange(
   symbol,       // 交易品种名称
   timeframe,    // 时间周期
   date_from,    // 请求柱形图的开始日期
   date_to       // 请求柱形图的结束日期
   )

参数

交易品种

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

timeframe

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

date_from

[in]  请求柱形图的开始日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。包括开盘时间的柱形图 >= 返回date_from。

date_to

[in]  请求柱形图的结束日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。包括开盘时间的柱形图 <= 返回date_to。

返回值

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

注意

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

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

例如:

 datetime 导入 datetime
 MetaTrader5 导入 *
# 导入'pandas'模块,用于以表格形式显示获得的数据
导入 pandas  pd
pd.set_option('display.max_columns', 500# 将要显示的列数
pd.set_option('display.width', 1500)      # 要显示的最大表宽
 
# 建立与MetaTrader 5程序端的连接
MT5Initialize()
# 等待直至MetaTrader 5程序端连接到交易服务器
MT5WaitForTerminal()
 
# 将时区设置为UTC
timezone = pytz.timezone("Etc/UTC")
# 以UTC时区创建'datetime'对象,以避免实现本地时区偏移
utc_from = datetime(201945tzinfo=timezone)
utc_to = datetime(2019, 4, 5, hour = 13, tzinfo=timezone)
# 在UTC时区,获取从01.04.2019开始的10个EURPLN M5柱形图
rates = MT5CopyRatesFrom("EURPLN"MT5_TIMEFRAME_M5utc_from, utc_to)
 
# 断开与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)
 
# 再次显示数据,确保开盘时间已更改
print("\nDisplay the dataframe after adjusting the time")
print(rates_frame)
 
结果:
将获得的数据显示为“保持原来状态”
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 30), open=4.2988, low=4.2993, high=4.2986, close=4.2989, tick_volume=853, spread=540, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 35), open=4.2989, low=4.2989, high=4.2989, close=4.2989, tick_volume=1, spread=630, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 40), open=4.2989, low=4.2991, high=4.2987, close=4.2989, tick_volume=10, spread=560, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 45), open=4.2989, low=4.2989, high=4.2989, close=4.2989, tick_volume=2, spread=600, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 50), open=4.2989, low=4.2989, high=4.2989, close=4.2989, tick_volume=4, spread=640, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 3, 55), open=4.2989, low=4.2989, high=4.2989, close=4.2989, tick_volume=4, spread=640, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 4, 0), open=4.2989, low=4.2995, high=4.29872, close=4.2994, tick_volume=40, spread=500, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 4, 5), open=4.2995, low=4.2998, high=4.299, close=4.2998, tick_volume=38, spread=440, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 4, 10), open=4.2998, low=4.2998, high=4.2991, close=4.2992, tick_volume=35, spread=440, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 1, 4, 15), open=4.2992, low=4.2995, high=4.2989, close=4.2993, tick_volume=379, spread=500, real_volume=0)
 
显示数据框的前10个值
                时间、开盘价、最低价、最高价、收盘价、tick_volume、点差、real_volume
0 2019-04-01 03:30:00  4.2988  4.2993  4.29860  4.2989          853     540            0
1 2019-04-01 03:35:00  4.2989  4.2989  4.29890  4.2989            1     630            0
2 2019-04-01 03:40:00  4.2989  4.2991  4.29870  4.2989           10     560            0
3 2019-04-01 03:45:00  4.2989  4.2989  4.29890  4.2989            2     600            0
4 2019-04-01 03:50:00  4.2989  4.2989  4.29890  4.2989            4     640            0
5 2019-04-01 03:55:00  4.2989  4.2989  4.29890  4.2989            4     640            0
6 2019-04-01 04:00:00  4.2989  4.2995  4.29872  4.2994           40     500            0
7 2019-04-01 04:05:00  4.2995  4.2998  4.29900  4.2998           38     440            0
8 2019-04-01 04:10:00  4.2998  4.2998  4.29910  4.2992           35     440            0
9 2019-04-01 04:15:00  4.2992  4.2995  4.29890  4.2993          379     500            0
 
调整时间后显示数据框的前10个值
                时间、开盘价、最低价、最高价、收盘价、tick_volume、点差、real_volume
0 2019-04-01 00:30:00  4.2988  4.2993  4.29860  4.2989          853     540            0
1 2019-04-01 00:35:00  4.2989  4.2989  4.29890  4.2989            1     630            0
2 2019-04-01 00:40:00  4.2989  4.2991  4.29870  4.2989           10     560            0
3 2019-04-01 00:45:00  4.2989  4.2989  4.29890  4.2989            2     600            0
4 2019-04-01 00:50:00  4.2989  4.2989  4.29890  4.2989            4     640            0
5 2019-04-01 00:55:00  4.2989  4.2989  4.29890  4.2989            4     640            0
6 2019-04-01 01:00:00  4.2989  4.2995  4.29872  4.2994           40     500            0
7 2019-04-01 01:05:00  4.2995  4.2998  4.29900  4.2998           38     440            0
8 2019-04-01 01:10:00  4.2998  4.2998  4.29910  4.2992           35     440            0
9 2019-04-01 01:15:00  4.2992  4.2995  4.29890  4.2993          379     500            0

另见

CopyRatesMT5CopyRatesFromMT5CopyRatesRangeMT5CopyTicksFromMT5CopyTicksRange