MT5CopyTicksRange

从MetaTrader 5程序端获取指定日期范围内的报价。

MT5CopyTicksRange(
   symbol,       // 交易品种名称
   from,         // 请求报价的日期
   to,           // 请求报价的结束日期
   flags         // 定义请求报价类型的标识组合
   )

参数

交易品种

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

[in]  请求报价的开始日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。

[in]  请求报价的结束日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。

标识

[in]  确定请求报价类型的标记。MT5_COPY_TICKS_INFO – 卖价和/或买价变化的报价,MT5_COPY_TICKS_TRADE – 最后价和交易量变化的报价,MT5_COPY_TICKS_ALL – 全部报价。标识值在MT5_COPY_TICKS枚举中描述。

返回值

以元组形式返回报价(时间、卖价、买价、最后价、标识)。在元组中,标识变量可以是MT5_TICK_FLAG枚举的标识组合。

注意

参见CopyTicks函数获取更多信息。

当创建'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)      # 要显示的最大表宽
# 导入用于处理时区的pytz模块
导入 pytz
 
# 建立与MetaTrader 5程序端的连接
MT5Initialize()
# 等待直至MetaTrader 5 程序端连接到交易服务器
MT5WaitForTerminal()
 
# 将时区设置为UTC
timezone = pytz.timezone("Etc/UTC")
# 以UTC时区创建'datetime'对象,以避免实现本地时区偏移
utc_from = datetime(2019, 4, 1, tzinfo=timezone)
utc_to = datetime(2019, 4, 5, tzinfo=timezone)
#请求01.04.2019 - 05.04.2019间的AUDUSD报价
ticks = MT5CopyTicksFrom("EURUSD"utc_from, utc_to, MT5_COPY_TICKS_ALL)
print("Ticks received:",len(ticks))
 
# 断开与MetaTrader 5的连接
MT5Shutdown()
# 在新行显示每个报价的数据
print("Display obtained ticks 'as is'")
count = 0
for tick in ticks:
    print(tick)
    if(count >= 10):
        break
 
# 从所获得的数据创建DataFrame
ticks_frame = pd.DataFrame(list(ticks),
                           columns=['time', 'bid', 'ask', 'last', 'volume', 'flags'])
# 显示数据
print("\nDisplay dataframe with ticks")
print(ticks_frame.head(10))  # 我们可以看到Python在本地时区中使用一个偏移提供了报价时间
 
# 获取本地电脑从UTC时间的偏移
UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
 
# 创建一个简单的函数来纠正偏移
def local_to_utc(dt):
    return dt + UTC_OFFSET_TIMEDELTA
 
# 在ticks_frame数据框中为'time'列应用偏移
ticks_frame['time'] = ticks_frame.apply(lambda ticklocal_to_utc(tick['time']), axis=1)
 
# 再次显示数据,确保报价时间已更改
print("\nDisplay the dataframe after adjusting the time")
print(ticks_frame.head(10))
 
结果:
已接收报价:243374
将获得的报价显示为“保持原来状态”
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 2, 759000), bid=0.71155, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 7, 824000), bid=0.71154, ask=0.71222, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 27, 818000), bid=0.71155, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 43, 794000), bid=0.71159, ask=0.71204, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 67000), bid=0.71145, ask=0.71209, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 140000), bid=0.71157, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 432000), bid=0.71157, ask=0.71225, last=0.0, volume=0.0, flags=4)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 872000), bid=0.71159, ask=0.71204, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 45, 164000), bid=0.71148, ask=0.7121, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 45, 244000), bid=0.71158, ask=0.71223, last=0.0, volume=0.0, flags=134)
 
显示带有报价的数据框
                    时间、卖价、买价、最后价、交易量、标识
0 2019-04-01 03:02:02.759  0.71155  0.71223   0.0     0.0    134
1 2019-04-01 03:02:07.824  0.71154  0.71222   0.0     0.0    134
2 2019-04-01 03:02:27.818  0.71155  0.71223   0.0     0.0    134
3 2019-04-01 03:02:43.794  0.71159  0.71204   0.0     0.0    134
4 2019-04-01 03:02:44.067  0.71145  0.71209   0.0     0.0    134
5 2019-04-01 03:02:44.140  0.71157  0.71223   0.0     0.0    134
6 2019-04-01 03:02:44.432  0.71157  0.71225   0.0     0.0      4
7 2019-04-01 03:02:44.872  0.71159  0.71204   0.0     0.0    134
8 2019-04-01 03:02:45.164  0.71148  0.71210   0.0     0.0    134
9 2019-04-01 03:02:45.244  0.71158  0.71223   0.0     0.0    134
 
调整时间后显示带有报价的数据框
                    时间、卖价、买价、最后价、交易量、标识
0 2019-04-01 00:02:02.759  0.71155  0.71223   0.0     0.0    134
1 2019-04-01 00:02:07.824  0.71154  0.71222   0.0     0.0    134
2 2019-04-01 00:02:27.818  0.71155  0.71223   0.0     0.0    134
3 2019-04-01 00:02:43.794  0.71159  0.71204   0.0     0.0    134
4 2019-04-01 00:02:44.067  0.71145  0.71209   0.0     0.0    134
5 2019-04-01 00:02:44.140  0.71157  0.71223   0.0     0.0    134
6 2019-04-01 00:02:44.432  0.71157  0.71225   0.0     0.0      4
7 2019-04-01 00:02:44.872  0.71159  0.71204   0.0     0.0    134
8 2019-04-01 00:02:45.164  0.71148  0.71210   0.0     0.0    134
9 2019-04-01 00:02:45.244  0.71158  0.71223   0.0     0.0    134

另见

CopyRatesMT5CopyRatesFromPosMT5CopyRatesRangeMT5CopyTicksFromMT5CopyTicksRange