Đọc lịch sử tick
API Python bao gồm hai hàm để đọc lịch sử tick thực tế: copy_ticks_from
với chỉ định số lượng tick bắt đầu từ ngày được chỉ định, và copy_ticks_range
cho tất cả các tick trong khoảng thời gian được chỉ định.
Cả hai hàm đều có bốn tham số không tên bắt buộc, tham số đầu tiên chỉ định ký hiệu. Tham số thứ hai chỉ định thời gian ban đầu của các tick được yêu cầu. Tham số thứ ba chỉ ra hoặc số lượng tick cần thiết được truyền vào (trong hàm copy_ticks_from
) hoặc thời gian kết thúc của các tick (trong hàm copy_ticks_range
).
Tham số cuối cùng xác định loại tick nào sẽ được trả về. Nó có thể chứa một trong các cờ sau (COPY_TICKS):
Định danh | Mô tả |
---|---|
COPY_TICKS_ALL | Tất cả các tick |
COPY_TICKS_INFO | Các tick chứa thay đổi giá Bid và/hoặc Ask |
COPY_TICKS_TRADE | Các tick chứa thay đổi giá Last và/hoặc khối lượng (Volume) |
Cả hai hàm đều trả về các tick dưới dạng mảng numpy.ndarray
(từ gói numpy
) với các cột có tên time
, bid
, ask
, last
, và flags
. Giá trị của trường flags
là sự kết hợp của các cờ bit từ liệt kê TICK_FLAG: mỗi bit biểu thị sự thay đổi trong trường tương ứng với thuộc tính tick.
Định danh | Thuộc tính tick thay đổi |
---|---|
TICK_FLAG_BID | Giá Bid |
TICK_FLAG_ASK | Giá Ask |
TICK_FLAG_LAST | Giá Last |
TICK_FLAG_VOLUME | Khối lượng |
TICK_FLAG_BUY | Giá mua Last |
TICK_FLAG_SELL | Giá bán Last |
numpy.ndarray copy_ticks_from(symbol, date_from, count, flags)
Hàm copy_ticks_from
yêu cầu các tick bắt đầu từ thời gian được chỉ định (date_from
) với số lượng đã cho (count
).
Hàm này là tương tự của CopyTicks
.
numpy.array copy_ticks_range(symbol, date_from, date_to, flags)
Hàm copy_ticks_range
cho phép lấy các tick trong khoảng thời gian được chỉ định.
Hàm này là tương tự của CopyTicksRange
.
Trong ví dụ sau (MQL5/Scripts/MQL5Book/Python/copyticks.py
), chúng ta tạo một trang web tương tác với biểu đồ tick (lưu ý: gói plotly
được sử dụng ở đây; để cài đặt nó trong Python, chạy lệnh pip install plotly
).
import MetaTrader5 as mt5
import pandas as pd
import pytz
from datetime import datetime
# kết nối với terminal
if not mt5.initialize():
print("initialize() failed, error code =", mt5.last_error())
quit()
# đặt tên tệp để lưu vào sandbox
path = mt5.terminal_info().data_path + r'\MQL5\Files\MQL5Book\copyticks.html'
# sao chép 1000 tick EURUSD từ một thời điểm cụ thể trong lịch sử
utc = pytz.timezone("Etc/UTC")
rates = mt5.copy_ticks_from("EURUSD", \
datetime(2022, 5, 25, 1, 15, 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')
# chấm dứt kết nối với terminal
mt5.shutdown()
# kết nối gói đồ họa và vẽ 2 hàng giá ask và bid trên trang web
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)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Đây là kết quả có thể trông như thế nào.
Biểu đồ với các tick nhận được trong kịch bản Python
Trang web copyticks.html
được tạo trong thư mục con MQL5/Files/MQL5Book
.