copy_ticks_from

从指定日期开始从MetaTrader 5程序端获取报价。

copy_ticks_from(
   symbol,       // 交易品种名称
   date_from,    // 请求报价的日期
   count,        // 请求的报价数
   flags         // 定义请求报价类型的标识组合
   )

参数

symbol

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

date_from

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

count

[in]  将要接收的报价数。所需的未命名参数。

flags

[in]  确定请求报价类型的标记。COPY_TICKS_INFO – 卖价和/或买价变化的报价, COPY_TICKS_TRADE – 最后价和交易量变化的报价, COPY_TICKS_ALL – 全部报价。标识值在COPY_TICKS枚举中描述。所需的未命名参数。

返回值

返回numpy数据报价(包含以下指定列:时间、卖价、买价、最后价、标识)。'flags'值可以是TICK_FLAG枚举中的标识组合。错误情况下返回None。可使用last_error()获取错误信息。

注意

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

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

COPY_TICKS定义了可以使用copy_ticks_from()copy_ticks_range()函数请求的报价类型。

ID

描述

COPY_TICKS_ALL

所有报价

COPY_TICKS_INFO

包含卖价(Bid)和/或买价(Ask)价格变化的报价

COPY_TICKS_TRADE

包含最后价(Last)和/或交易量(Volume)价格变化的报价

TICK_FLAG 定义可能的报价标识。这些标识用于描述通过copy_ticks_from()copy_ticks_range()函数获得的报价。

ID

描述

TICK_FLAG_BID

卖价(Bid)已更改

TICK_FLAG_ASK

买价(Ask)已更改

TICK_FLAG_LAST

最后价(Last)已更改

TICK_FLAG_VOLUME

交易量已更改

TICK_FLAG_BUY

最近“买入”价格已更改

TICK_FLAG_SELL

最近“卖出”价格已更改

 

例如:

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()
 
# set time zone to UTC
timezone = pytz.timezone("Etc/UTC")
# create 'datetime' object in UTC time zone to avoid the implementation of a local time zone offset
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# request 100 000 EURUSD ticks starting from 10.01.2019 in UTC time zone
ticks = mt5.copy_ticks_from("EURUSD"utc_from100000, mt5.COPY_TICKS_ALL)
print("Ticks received:",len(ticks))
 
# shut down connection to the MetaTrader 5 terminal
mt5.shutdown()
 
# display data on each tick on a new line
print("Display obtained ticks 'as is'")
count = 0
for tick in ticks:
    count+=1
    print(tick)
    if count >= 10:
        break
 
# create DataFrame out of the obtained data
ticks_frame = pd.DataFrame(ticks)
# 将时间(以秒为单位)转换为日期时间格式
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
 
# display data
print("\nDisplay dataframe with ticks")
print(ticks_frame.head(10))  
 
结果:
MetaTrader5程序包作者:MetaQuotes Software Corp.
MetaTrader5程序包版本:5.0.29
 
已接收报价:100000
将获得的报价显示为“保持原来状态”
(1578614400, 1.11051, 1.11069, 0., 0, 1578614400987, 134, 0.)
(1578614402, 1.11049, 1.11067, 0., 0, 1578614402025, 134, 0.)
(1578614404, 1.1105, 1.11066, 0., 0, 1578614404057, 134, 0.)
(1578614404, 1.11049, 1.11067, 0., 0, 1578614404344, 134, 0.)
(1578614412, 1.11052, 1.11064, 0., 0, 1578614412106, 134, 0.)
(1578614418, 1.11039, 1.11051, 0., 0, 1578614418265, 134, 0.)
(1578614418, 1.1104, 1.1105, 0., 0, 1578614418905, 134, 0.)
(1578614419, 1.11039, 1.11051, 0., 0, 1578614419519, 134, 0.)
(1578614456, 1.11037, 1.11065, 0., 0, 1578614456011, 134, 0.)
(1578614456, 1.11039, 1.11051, 0., 0, 1578614456015, 134, 0.)
 
显示带有报价的数据框
                 time      bid      ask  last  volume       time_msc  flags  volume_real
0 2020-01-10 00:00:00  1.11051  1.11069   0.0       0  1578614400987    134          0.0
1 2020-01-10 00:00:02  1.11049  1.11067   0.0       0  1578614402025    134          0.0
2 2020-01-10 00:00:04  1.11050  1.11066   0.0       0  1578614404057    134          0.0
3 2020-01-10 00:00:04  1.11049  1.11067   0.0       0  1578614404344    134          0.0
4 2020-01-10 00:00:12  1.11052  1.11064   0.0       0  1578614412106    134          0.0
5 2020-01-10 00:00:18  1.11039  1.11051   0.0       0  1578614418265    134          0.0
6 2020-01-10 00:00:18  1.11040  1.11050   0.0       0  1578614418905    134          0.0
7 2020-01-10 00:00:19  1.11039  1.11051   0.0       0  1578614419519    134          0.0
8 2020-01-10 00:00:56  1.11037  1.11065   0.0       0  1578614456011    134          0.0
9 2020-01-10 00:00:56  1.11039  1.11051   0.0       0  1578614456015    134          0.0

另见

CopyRatescopy_rates_from_poscopy_rates_rangecopy_ticks_fromcopy_ticks_range