读取分时报价历史

Python API 包括两个用于读取分时报价历史的函数:copy_ticks_from 表示从指定日期开始的分时报价数,copy_ticks_range 表示指定时间段内的分时报价数。

这两个函数都有四个必需的未命名参数,第一个参数指定交易品种。第二个参数指定所请求的分时报价的初始时间。第三个参数(在 copy_ticks_from 函数中)表示传递的分时报价数或(在 copy_ticks_range 函数中)表示分时报价的结束时间。

最后一个参数确定将返回哪种分时报价。它可以包含以下标志之一 (COPY_TICKS):

标识符

说明

COPY_TICKS_ALL

所有分时报价

COPY_TICKS_INFO

包含买价和/或卖价变化的分时报价

COPY_TICKS_TRADE

包含最后价格和/或交易量变化的分时报价

这两个函数都(从 numpy 包)将分时报价作为 numpy.ndarray 数组返回,该数组包含命名列 timebidasklastflagsflags 字段的值是 TICK_FLAG 枚举的位标志的组合:每一位表示分时报价特性对应字段的一次变化。

标识符

已更改分时报价特性

TICK_FLAG_BID

买价

TICK_FLAG_ASK

卖价

TICK_FLAG_LAST

最后价格

TICK_FLAG_VOLUME

交易量

TICK_FLAG_BUY

最后买入价格

TICK_FLAG_SELL

最后卖出价格

numpy.ndarray copy_ticks_from(symbol, date_from, count, flags)

copy_ticks_from 函数请求从指定时间 (date_from) 开始的给定数量的 (count) 分时报价。

该函数类似于 CopyTicks

numpy.array copy_ticks_range(symbol, date_from, date_to, flags)

copy_ticks_range 函数允许你获取指定时间范围的分时报价。

该函数类似于 CopyTicksRange

在下面的例子中 (MQL5/Scripts/MQL5Book/Python/copyticks.py),我们生成了一个带有分时报价图表的交互式网页(注意:这里使用了 plotly 软件包;要在 Python 中安装该软件包,请运行命令 pip install plotly)。

import MetaTrader5 as mt5
import pandas as pd
import pytz
from datetime import datetime
   
# connect to terminal
if not mt5.initialize():
   print("initialize() failed, error code =", mt5.last_error())
   quit()
   
# set the name of the file to save to the sandbox
path = mt5.terminal_info().data_path + r'\MQL5\Files\MQL5Book\copyticks.html'
   
# copy 1000 EURUSD ticks from a specific moment in history
utc = pytz.timezone("Etc/UTC"
rates = mt5.copy_ticks_from("EURUSD", \
datetime(2022525115, tzinfo = utc), 1000, mt5.COPY_TICKS_ALL)
bid = [x['bid'for x in rates]
ask = [x['ask'for x in rates]
time = [x['time'for x in rates]
time = pd.to_datetime(time, unit = 's')
   
# terminate the connection to the terminal
mt5.shutdown()
   
# connect the graphics package and draw 2 rows of ask and bid prices on the web page
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
data = [go.Scatter(x = time, y = bid), go.Scatter(x = time, y = ask)]
plot(data, filename = path)

结果可能像这样。

Python 脚本中接收到包含分时报价的图表

Python 脚本中接收到包含分时报价的图表

MQL5/Files/MQL5Book 子目录中生成 copyticks.html Web 页。