Appearance
账户信息类方法
类与对象
账户类定义在MT5CTP命名空间,需要显性调用,定义账户类的操作对象:
MQL5
// 类可理解为自定义类型,使用自定义类型定义了一个变量(对象) this_account
// 类初始化的时候,默认Select序号为0的登录账户,所以单账户状态无需重复调用Select
MT5CTP::CAccountInfo this_account;MQL支持动态指针,但需要自己管理指针的生命周期,如果不是必须,不建议使用:
MQL5
// 类可理解为自定义类型,使用自定义类型定义了一个变量(对象) this_symbol
MT5CTP::CAccountInfo *this_account= new MT5CTP::CAccountInfo();
if(CheckPointer(this_account)==POINTER_DYNAMIC) {
// do...
// 销毁动态指针
delete(this_account);
}扩展类功能
如果类的方法无法满足应用场景,可以使用继承的方式扩展类功能,在新的类中定义新方法,实现新功能(注意继承中使用的命名空间)。
MQL5
// 定义名为'NewAccount'的新类,继承自 MT5CTP::CAccountInfo
class NewAccount:public MT5CTP::CAccountInfo {
// do...
}完整的例子
三步走完成输出账户数据到日志的脚本代码:
MQL5
#property copyright "Copyright 2026, MT5CTP项目组"
#property link "mt5ctp@qq.com"
#property version "1.00"
#property description "MT5CTP功能Demo|仅用于量化投资爱好者测试、研究"
#property description "基于MT5CTP类库[API 2.00 build 0030]"
//+------------------------------------------------------------------+
//| Include & Define |
//+------------------------------------------------------------------+
// 第一步:导入MT5CTP类库
#include <mt5ctp\AccountInfo.mqh>
// 第二步:定义账户对象 _self_account,注意调用命名空间 MT5CTP
MT5CTP::CAccountInfo _self_account;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart() {
// 第三步:账户对象选择,单账户下无需重复调用
if(!_self_symbol.Select(0))
return;
// 使用账户对象提取账户数据,输出信息到客户端[工具箱]-[专家]日志
Print("登录账户ID:", _self_account.Login());
Print("登录账户Ticket:", _self_account.Ticket());
Print("登录状态:", _self_account.AccountExists());
Print("经纪商ID:", _self_account.BrokerID());
Print("交易日:", _self_account.TradingDay());
Print("登陆时间:", _self_account.LoginTime());
Print("交易系统名称:", _self_account.SystemName());
Print("服务器版本信息:", _self_account.SysVersion());
Print("昨结算权益:", _self_account.PreBalance());
Print("动态权益:", _self_account.Balance());
Print("含权动态权益:", _self_account.BalanceAddOption());
Print("可用资金:", _self_account.Available());
Print("保证金占用:", _self_account.Margin());
Print("手续费:", _self_account.Commission());
Print("入金:", _self_account.Deposit());
Print("出金:", _self_account.Withdraw());
Print("平仓盈亏:", _self_account.CloseProfit());
Print("持仓盈亏:", _self_account.PositionProfit());
Print("账户类型:", _self_account.AccountTypeDescription());
}
//+------------------------------------------------------------------+