跳到主要内容 MetaTrader5 Python 库数据获取与交易接口详解 | 极客日志
目录
MetaTrader5 Python 库数据获取与交易接口详解 1. 简介与安装 1.1 什么是 MetaTrader5 Python 库? 1.2 环境准备与安装 1.3 MT5 终端设置 2. 连接与初始化 2.1 导入库 设置 Pandas 显示选项(可选) 2.2 初始化连接 (initialize) 尝试初始化连接到 MetaTrader 5 终端 如果 MT5 安装在非标准路径,可能需要指定 path 参数 如果需要登录特定账户,可以传入 login, password, server 参数,但通常 MT5 已登录即可 2.3 检查连接状态 2.4 关闭连接 (shutdown) 在脚本结束时或不再需要连接时调用 mt5.shutdown() print("MetaTrader 5 connection closed.") 3. 获取账户信息 3.1 account_info() 获取账户信息 也可以将账户信息转换为字典方便查看 3.2 账户信息属性解析 4. 获取交易品种 (Symbol) 信息 4.1 什么是交易品种? 4.2 symbol_select() - 选择品种(重要) 尝试将品种添加到 MarketWatch 并使其数据可用 第二个参数 True 表示选中 4.3 symbol_info() - 获取单个品种的详细规格 4.4 symbols_get() - 获取多个品种的信息 获取 MarketWatch 中所有可见品种的信息 按组获取 (组名取决于你的 Broker 设置) forexsymbolsinfo = mt5.symbolsget("groupname") # 例如 "Forex", "Indices" if forexsymbolsinfo: print(f"\nForex symbols found: {len(forexsymbolsinfo)}") 4.5 品种信息属性解析 5. 获取实时报价 (Ticks) 5.1 symbolinfotick() - 获取最新 Tick 5.2 Tick 数据属性解析 5.3 copyticksfrom() / copyticksrange() - 获取历史 Tick 数据 6. 获取历史 K 线数据 (Bars/Candlesticks) 6.1 K 线数据的重要性 6.2 时间周期 (Timeframe) 常量 6.3 copyratesfrom(symbol, timeframe, start_date, count) - 从指定日期获取 确保选中 6.4 copyratesfrompos(symbol, timeframe, startpos, count) - 从指定位置获取 确保选中 6.5 copyratesrange(symbol, timeframe, datefrom, dateto) - 按日期范围获取 (常用) 确保选中 6.6 返回数据格式 (NumPy Array) 6.7 转换为 Pandas DataFrame (推荐) 6.8 K 线数据字段解析 7. 获取订单、持仓与交易历史 7.1 获取挂单 (Pending Orders) 获取挂单总数 7.2 获取当前持仓 (Open Positions) 获取持仓总数 7.3 获取历史成交记录 (History Deals) 定义要获取历史记录的时间范围 获取指定时间范围内的所有成交记录 可以按 group (包含/排除的品种掩码) 或 position (特定头寸的 ticket) 过滤 7.4 数据结构解析与转换为 DataFrame 8. 错误处理与最佳实践 8.1 检查函数返回值 8.2 使用 mt5.last_error() 8.3 symbol_select 的重要性 8.4 使用 try...except 结构 8.5 注意数据获取的限制 9. 综合示例 --- 1. 初始化连接 --- --- 2. 获取账户信息 --- --- 3. 获取 EURUSD 数据 --- 确保选中 获取最新 Tick 获取最近的 K 线 --- 4. 关闭连接 --- 10. 总结
Python 算法
MetaTrader5 Python 库数据获取与交易接口详解 如何使用 MetaTrader5 Python 库连接 MT5 终端并获取金融数据。内容包括环境安装、初始化连接、账户信息查询、交易品种规格获取、实时报价(Ticks)和历史 K 线数据(Bars)的获取方法。此外还涵盖了订单、持仓及历史成交记录的查询,以及错误处理和最佳实践。通过 Pandas 转换数据便于分析,适合量化交易初学者参考。
极光 发布于 2026/3/30 更新于 2026/4/13 1 浏览MetaTrader5 Python 库数据获取与交易接口详解
MetaTrader5 Python 库是 MetaQuotes 公司官方提供的接口,允许 Python 程序与 MetaTrader 5 交易终端进行交互。本教程将深入探讨如何使用该库连接到 MT5 终端并获取各种类型的金融数据。
1. 简介与安装
1.1 什么是 MetaTrader5 Python 库?
这是一个允许 Python 脚本直接与本地运行的 MetaTrader 5 交易终端进行通信的库。你可以用它来获取市场数据、账户信息、执行交易操作等。
1.2 环境准备与安装
Python: 确保你安装了 Python(建议 3.6 或更高版本)。
MetaTrader 5 终端: 你必须在你的电脑上安装 MetaTrader 5 交易终端。pip install MetaTrader5 --upgrade
1.3 MT5 终端设置 为了让 Python 库能够连接并执行操作,你需要在 MT5 终端进行设置:
打开 MT5 终端。
点击菜单栏'工具 (Tools)' -> '选项 (Options)'。
切换到'EA 交易 (Expert Advisors)'选项卡。
勾选'允许 Algo Trading' (Allow automated trading / Allow DLL imports - 不同版本名称可能略有差异)。
点击'确定'。
确保 MT5 终端已经登录到你的交易账户并且正在运行。
2. 连接与初始化
2.1 导入库 import MetaTrader5 as mt5
from datetime import datetime
import pandas as pd
import time
pd.set_option('display.max_columns' , 500 )
pd.set_option('display.width' , 1500 )
2.2 初始化连接 (initialize)
if not mt5.initialize():
print ("initialize() failed, error code =" , mt5.last_error())
quit()
print ("MetaTrader 5 initialized successfully!" )
print (f"MetaTrader 5 version: {mt5.version()} " )
2.3 检查连接状态 initialize() 的返回值 (True/False) 表明了连接是否成功。
2.4 关闭连接 (shutdown) 注意: 在后续示例中,mt5.shutdown() 会放在脚本的最后。
3. 获取账户信息
3.1 account_info() 此函数返回一个包含当前连接账户详细信息的对象 (如果成功) 或 None (如果失败)。
account_info = mt5.account_info()
if account_info is not None :
print ("Account info retrieved successfully:" )
print (f" Login: {account_info.login} " )
print (f" Name: {account_info.name} " )
print (f" Server: {account_info.server} " )
print (f" Currency: {account_info.currency} " )
print (f" Balance: {account_info.balance} " )
print (f" Equity: {account_info.equity} " )
print (f" Profit: {account_info.profit} " )
print (f" Margin: {account_info.margin} " )
print (f" Margin Free: {account_info.margin_free} " )
print (f" Margin Level: {account_info.margin_level} %" )
else :
print ("Failed to get account info, error code =" , mt5.last_error())
account_info_dict = account_info._asdict()
print ("\nAccount info as dictionary:" )
print (account_info_dict)
3.2 账户信息属性解析
login: 账户号
name: 账户持有人姓名
server: 交易服务器名称
currency: 账户基础货币
balance: 账户余额 (不含未平仓订单盈亏)
equity: 账户净值 (余额 + 未平仓订单盈亏)
profit: 当前未平仓订单的总盈亏
margin: 已用保证金
margin_free: 可用保证金
margin_level: 保证金水平 (%) = (净值 / 已用保证金) * 100%
还有其他属性如 trade_mode, limit_orders 等。
4. 获取交易品种 (Symbol) 信息
4.1 什么是交易品种? 交易品种指的是可以在 MT5 交易的金融工具,例如 "EURUSD" (欧元/美元), "GBPUSD" (英镑/美元), "XAUUSD" (黄金/美元), "AAPL.US" (苹果股票) 等。
4.2 symbol_select() - 选择品种(重要 ) 在使用 symbol_info_tick, copy_rates_*, copy_ticks_* 等函数获取特定品种的数据之前,必须确保该品种已经在 MT5 终端的'市场报价 (Market Watch)'窗口中可见,或者通过 symbol_select() 将其添加到 Market Watch 中。
symbol = "EURUSD"
selected = mt5.symbol_select(symbol, True )
if not selected:
print (f"Failed to select {symbol} , maybe it's not available on the server?" )
else :
print (f"{symbol} selected and data available in MarketWatch." )
4.3 symbol_info() - 获取单个品种的详细规格 symbol_to_check = "GBPUSD"
if not mt5.symbol_select(symbol_to_check, True ):
print (f"Failed to select {symbol_to_check} " )
else :
info = mt5.symbol_info(symbol_to_check)
if info is not None :
print (f"\nInformation for {symbol_to_check} :" )
print (f" Digits (小数点位数): {info.digits} " )
print (f" Point (点值): {info.point} " )
print (f" Spread (当前点差): {info.spread} " )
print (f" Contract Size (合约大小): {info.trade_contract_size} " )
print (f" Tick Value (每点价值): {info.tick_value} " )
print (f" Tick Size (最小变动单位): {info.tick_size} " )
print (f" Trade Mode (交易模式): {info.trade_mode} " )
print (f" Description (描述): {info.description} " )
else :
print (f"Failed to get info for {symbol_to_check} , error code =" , mt5.last_error())
4.4 symbols_get() - 获取多个品种的信息 可以按组(例如'forex','metals')或不指定组(获取 Market Watch 中所有可见的)来获取多个品种的信息。
all_symbols_info = mt5.symbols_get()
print (f"\nTotal symbols in MarketWatch: {len (all_symbols_info)} " )
if len (all_symbols_info) > 0 :
print ("First few symbols:" )
for i, sym_info in enumerate (all_symbols_info[:5 ]):
print (f" {i+1 } . {sym_info.name} - {sym_info.description} " )
4.5 品种信息属性解析 SymbolInfo 对象包含大量属性,常用的有:
name: 品种名称 (e.g., 'EURUSD')
description: 品种描述
digits: 价格的小数位数
point: 最小价格变动单位 (点)
spread: 当前点差 (整数点数)
trade_contract_size: 一手交易的合约大小
tick_value: 价格变动一个 tick (最小变动单位) 时,对于一手头寸的价值 (账户货币)
tick_size: 一个 tick 的价格变动量
trade_mode: 交易模式 (允许交易/只允许平仓/不允许交易)
bid, ask: 当前买卖价 (注意:这不是实时更新的,不如 symbol_info_tick 及时)
还有交易时间、保证金要求、隔夜利息等很多细节。
5. 获取实时报价 (Ticks)
5.1 symbol_info_tick() - 获取最新 Tick 获取指定品种的最新报价信息 (买价、卖价、最后价等)。
symbol_tick = "USDJPY"
if not mt5.symbol_select(symbol_tick, True ):
print (f"Failed to select {symbol_tick} " )
else :
last_tick = mt5.symbol_info_tick(symbol_tick)
if last_tick:
print (f"\nLatest tick for {symbol_tick} :" )
tick_time_dt = datetime.fromtimestamp(last_tick.time)
print (f" Time: {tick_time_dt.strftime('%Y-%m-%d %H:%M:%S' )} " )
print (f" Bid: {last_tick.bid} " )
print (f" Ask: {last_tick.ask} " )
print (f" Last Price: {last_tick.last} " )
print (f" Volume: {last_tick.volume} " )
print (f" Flags: {last_tick.flags} " )
else :
print (f"Failed to get tick for {symbol_tick} , error code =" , mt5.last_error())
5.2 Tick 数据属性解析
time: Tick 发生的时间 (POSIX 时间戳)
bid: 当前买价
ask: 当前卖价
last: 最后成交价 (主要用于交易所品种)
volume: 最后成交量 (主要用于交易所品种)
flags: 描述 Tick 类型的标志位 (例如,是买价变动、卖价变动还是两者都变动)。
5.3 copy_ticks_from() / copy_ticks_range() - 获取历史 Tick 数据 可以获取指定时间范围或从某个时间点开始的历史 Tick 数据。注意:Tick 数据量非常大,获取长时间范围的 Tick 数据可能消耗大量内存和时间,并可能受到 Broker 服务器的限制。
symbol_hist_ticks = "EURUSD"
if not mt5.symbol_select(symbol_hist_ticks, True ):
print (f"Failed to select {symbol_hist_ticks} " )
else :
time_to = datetime.now()
time_from = time_to - pd.Timedelta(hours=1 )
try :
ticks = mt5.copy_ticks_range(symbol_hist_ticks, time_from, time_to, mt5.COPY_TICKS_ALL)
if ticks is not None :
print (f"\nRetrieved {len (ticks)} ticks for {symbol_hist_ticks} in the last hour." )
ticks_df = pd.DataFrame(ticks)
ticks_df['time' ] = pd.to_datetime(ticks_df['time' ], unit='s' )
ticks_df = ticks_df.set_index('time' )
print ("Last 5 ticks:" )
print (ticks_df.tail())
elif mt5.last_error() == mt5.RES_E_INTERNAL_ERROR:
print (f"Could not retrieve ticks for {symbol_hist_ticks} . No data or server restriction? Error: {mt5.last_error()} " )
else :
print (f"Failed to retrieve ticks for {symbol_hist_ticks} , error code =" , mt5.last_error())
except Exception as e:
print (f"An exception occurred while fetching ticks: {e} " )
6. 获取历史 K 线数据 (Bars/Candlesticks)
6.1 K 线数据的重要性 K 线(蜡烛图)包含了每个时间周期内的开盘价 (Open)、最高价 (High)、最低价 (Low)、收盘价 (Close) 和成交量 (Volume),是市场行为的核心表示。
6.2 时间周期 (Timeframe) 常量 MetaTrader5 库定义了标准的时间周期常量:
mt5.TIMEFRAME_M1: 1 分钟
mt5.TIMEFRAME_M5: 5 分钟
mt5.TIMEFRAME_M15: 15 分钟
mt5.TIMEFRAME_M30: 30 分钟
mt5.TIMEFRAME_H1: 1 小时
mt5.TIMEFRAME_H4: 4 小时
mt5.TIMEFRAME_D1: 日线
mt5.TIMEFRAME_W1: 周线
mt5.TIMEFRAME_MN1: 月线
6.3 copy_rates_from(symbol, timeframe, start_date, count) - 从指定日期获取 从 start_date (datetime 对象) 开始向前获取 count 根 K 线。
symbol_rates = "EURUSD"
timeframe = mt5.TIMEFRAME_H1
count = 100
start_date = datetime(2024 , 1 , 1 )
if not mt5.symbol_select(symbol_rates, True ):
print (f"Failed to select {symbol_rates} " )
else :
rates_from = mt5.copy_rates_from(symbol_rates, timeframe, start_date, count)
if rates_from is not None and len (rates_from) > 0 :
print (f"\nRetrieved {len (rates_from)} H1 bars for {symbol_rates} starting before {start_date} " )
else :
print (f"Failed to get rates using copy_rates_from, error code =" , mt5.last_error())
6.4 copy_rates_from_pos(symbol, timeframe, start_pos, count) - 从指定位置获取 从当前时间开始倒数第 start_pos 根 K 线开始,获取 count 根。start_pos=0 表示最新的那根未完成的 K 线。
start_pos = 0
count_pos = 50
if not mt5.symbol_select(symbol_rates, True ):
print (f"Failed to select {symbol_rates} " )
else :
rates_pos = mt5.copy_rates_from_pos(symbol_rates, timeframe, start_pos, count_pos)
if rates_pos is not None and len (rates_pos) > 0 :
print (f"\nRetrieved {len (rates_pos)} H1 bars for {symbol_rates} starting from position {start_pos} " )
else :
print (f"Failed to get rates using copy_rates_from_pos, error code =" , mt5.last_error())
6.5 copy_rates_range(symbol, timeframe, date_from, date_to) - 按日期范围获取 (常用 ) 获取从 date_from (包含) 到 date_to (不包含) 之间的 K 线数据。这是最常用的方式。date_from 和 date_to 应该是 datetime 对象。
symbol_rates = "XAUUSD"
timeframe_range = mt5.TIMEFRAME_D1
date_from = datetime(2023 , 1 , 1 )
date_to = datetime(2024 , 1 , 1 )
if not mt5.symbol_select(symbol_rates, True ):
print (f"Failed to select {symbol_rates} " )
else :
rates_range = mt5.copy_rates_range(symbol_rates, timeframe_range, date_from, date_to)
if rates_range is not None and len (rates_range) > 0 :
print (f"\nRetrieved {len (rates_range)} D1 bars for {symbol_rates} from {date_from} to {date_to} " )
else :
print (f"Failed to get rates using copy_rates_range, error code =" , mt5.last_error())
6.6 返回数据格式 (NumPy Array) 所有 copy_rates_* 函数都返回一个 NumPy 结构化数组 (structured array),或者在失败时返回 None。
6.7 转换为 Pandas DataFrame (推荐) NumPy 数组不方便进行时间序列分析,通常会将其转换为 Pandas DataFrame。
if rates_range is not None and len (rates_range) > 0 :
rates_df = pd.DataFrame(rates_range)
rates_df['time' ] = pd.to_datetime(rates_df['time' ], unit='s' )
rates_df = rates_df.set_index('time' )
print ("\nRates data as Pandas DataFrame (last 5 rows):" )
print (rates_df.tail())
print ("\nDataFrame Info:" )
rates_df.info()
else :
print ("No rates data to convert to DataFrame." )
6.8 K 线数据字段解析
time: K 线开始时间 (datetime 对象)
open: 开盘价
high: 最高价
low: 最低价
close: 收盘价
tick_volume: Tick 成交量 (价格变化的次数)
spread: K 线结束时的点差 (整数点)
real_volume: 真实成交量 (如果 Broker 提供)
7. 获取订单、持仓与交易历史
7.1 获取挂单 (Pending Orders)
orders_count = mt5.orders_total()
print (f"\nTotal pending orders: {orders_count} " )
if orders_count > 0 :
orders = mt5.orders_get()
if orders is not None :
print ("Details of pending orders:" )
orders_list = []
for order in orders:
orders_list.append(order._asdict())
orders_df = pd.DataFrame(orders_list)
time_cols_order = ['time_setup' , 'time_expiration' , 'time_done' ]
for col in time_cols_order:
if col in orders_df.columns:
orders_df[col] = pd.to_datetime(orders_df[col], unit='s' )
print (orders_df[['ticket' , 'symbol' , 'type' , 'volume_initial' , 'price_open' , 'sl' , 'tp' , 'time_setup' ]].head())
else :
print ("Failed to get pending orders details, error code =" , mt5.last_error())
OrderInfo 对象包含订单号 (ticket)、品种 (symbol)、类型 (type - 如 ORDER_TYPE_BUY_LIMIT)、开仓价 (price_open)、止损 (sl)、止盈 (tp)、手数 (volume_initial)、设置时间 (time_setup) 等。
7.2 获取当前持仓 (Open Positions)
positions_count = mt5.positions_total()
print (f"\nTotal open positions: {positions_count} " )
if positions_count > 0 :
positions = mt5.positions_get()
if positions is not None :
print ("Details of open positions:" )
positions_list = []
for position in positions:
positions_list.append(position._asdict())
positions_df = pd.DataFrame(positions_list)
time_cols_pos = ['time' , 'time_update' ]
for col in time_cols_pos:
if col in positions_df.columns:
positions_df[col] = pd.to_datetime(positions_df[col], unit='s' )
print (positions_df[['ticket' , 'symbol' , 'type' , 'volume' , 'price_open' , 'sl' , 'tp' , 'profit' , 'time' ]].head())
else :
print ("Failed to get open positions details, error code =" , mt5.last_error())
PositionInfo 对象包含头寸号 (ticket)、品种 (symbol)、类型 (type - POSITION_TYPE_BUY 或 POSITION_TYPE_SELL)、开仓价 (price_open)、手数 (volume)、止损 (sl)、止盈 (tp)、当前盈亏 (profit)、开仓时间 (time) 等。
7.3 获取历史成交记录 (History Deals) 成交记录 (Deals) 是实际发生的买入或卖出操作的记录。一个订单或头寸可能对应多个成交记录 (例如部分成交)。
hist_date_from = datetime(2024 , 1 , 1 )
hist_date_to = datetime.now()
history_deals = mt5.history_deals_get(hist_date_from, hist_date_to)
if history_deals is not None :
print (f"\nTotal deals found from {hist_date_from} to {hist_date_to} : {len (history_deals)} " )
if len (history_deals) > 0 :
deals_list = []
for deal in history_deals:
deals_list.append(deal._asdict())
deals_df = pd.DataFrame(deals_list)
deals_df['time' ] = pd.to_datetime(deals_df['time' ], unit='s' )
deals_df = deals_df.sort_values(by='time' )
print ("Last 5 history deals:" )
print (deals_df[['ticket' , 'order' , 'symbol' , 'type' , 'entry' , 'volume' , 'price' , 'profit' , 'commission' , 'fee' , 'time' ]].tail())
else :
print ("No deals found in the specified period." )
else :
print ("Failed to get history deals, error code =" , mt5.last_error())
TradeDeal 对象包含成交号 (ticket)、关联的订单号 (order)、关联的头寸号 (position_id)、品种 (symbol)、类型 (type - DEAL_TYPE_BUY 或 DEAL_TYPE_SELL)、方向 (entry - DEAL_ENTRY_IN, DEAL_ENTRY_OUT, DEAL_ENTRY_INOUT)、成交价 (price)、手数 (volume)、盈亏 (profit)、手续费 (commission)、库存费 (fee)、成交时间 (time) 等。
7.4 数据结构解析与转换为 DataFrame 如上所示,获取到的订单、持仓、历史成交都是元组 (tuple) of named tuples。将它们转换为 Pandas DataFrame 通常更便于分析和处理。
8. 错误处理与最佳实践
8.1 检查函数返回值 MetaTrader5 库的大多数函数在成功时返回所需的数据(对象、列表、数组等),在失败时返回 None 或 False。每次调用后检查返回值是必须的。
8.2 使用 mt5.last_error() 当函数调用失败时,使用 mt5.last_error() 获取具体的错误代码和描述,这对于调试至关重要。错误代码的含义可以在 MQL5 文档中查找。
8.3 symbol_select 的重要性 再次强调,在获取特定品种的 Tick 或 K 线数据前,必须使用 mt5.symbol_select(symbol, True) 确保该品种在 MarketWatch 中是激活状态。
8.4 使用 try...except 结构 对于可能发生网络问题或预期外错误的操作(尤其是历史数据获取),使用 try...except 可以增加脚本的健壮性。
8.5 注意数据获取的限制
历史数据深度: Broker 可能只提供有限深度的历史数据(尤其是 Tick 数据和分钟级别数据)。
请求频率: 过于频繁地请求大量数据可能会被 Broker 服务器限制。在循环中获取数据时,适当加入 time.sleep()。
Tick 数据量: 获取长时间的 Tick 数据非常耗资源。
9. 综合示例 下面是一个简单的脚本,演示了连接、获取账户信息、获取 EURUSD 的最新 Tick 和最近 10 条 H1 K 线数据,并转换为 DataFrame 的完整流程。
import MetaTrader5 as mt5
from datetime import datetime
import pandas as pd
import time
if not mt5.initialize():
print ("initialize() failed, error code =" , mt5.last_error())
quit()
print ("MT5 Initialized" )
account_info = mt5.account_info()
if account_info:
print (f"Account login: {account_info.login} , Balance: {account_info.balance} {account_info.currency} " )
else :
print ("Failed to get account info" )
symbol = "EURUSD"
timeframe = mt5.TIMEFRAME_H1
bars_to_get = 10
if not mt5.symbol_select(symbol, True ):
print (f"Failed to select {symbol} , error code =" , mt5.last_error())
mt5.shutdown()
quit()
print (f"{symbol} selected." )
time.sleep(0.5 )
tick = mt5.symbol_info_tick(symbol)
if tick:
tick_time = datetime.fromtimestamp(tick.time).strftime('%Y-%m-%d %H:%M:%S' )
print (f"\nLatest {symbol} Tick ({tick_time} ): Bid={tick.bid} , Ask={tick.ask} " )
else :
print (f"Failed to get {symbol} tick, error code =" , mt5.last_error())
rates = mt5.copy_rates_from_pos(symbol, timeframe, 0 , bars_to_get)
if rates is not None and len (rates) > 0 :
rates_df = pd.DataFrame(rates)
rates_df['time' ] = pd.to_datetime(rates_df['time' ], unit='s' )
rates_df = rates_df.set_index('time' )
print (f"\nLast {len (rates_df)} H1 bars for {symbol} :" )
print (rates_df[['open' , 'high' , 'low' , 'close' , 'tick_volume' ]])
else :
print (f"Failed to get {symbol} rates, error code =" , mt5.last_error())
mt5.shutdown()
print ("\nMT5 Connection closed." )
10. 总结 本教程详细介绍了如何使用 MetaTrader5 Python 库连接到 MT5 终端,并重点演示了获取各种关键金融数据的方法:
账户信息 (account_info)
交易品种规格 (symbol_info, symbols_get)
实时报价 Ticks (symbol_info_tick, copy_ticks_*)
历史 K 线数据 (copy_rates_*),并强调了转换为 Pandas DataFrame 的方法
挂单 (orders_get)、持仓 (positions_get) 和历史成交 (history_deals_get)
掌握这些数据获取方法是利用 Python 进行量化交易分析、策略开发和执行交易的基础。务必注意错误处理和 MT5 终端的正确设置。要了解交易执行相关的功能,请查阅官方文档或其他教程。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown 转 HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
HTML 转 Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online