跳至内容
Mt45ApiNet

Mt45ApiNet

简介

Mt45ApiNet 提供了与 MetaTrader4/5 Terminal 连接的桥梁,通过它你可以在 .NET 应用中获取 MetaTrader 4/5 Terminal 信息,或调用内置的绝大多数 MQL 命令。这样你可以在保留 Mql 内置方法使用经验的同时,使用 .Net 更强大的特性以及生态。

对比 MtApi 的改进和优化

本项目基于 MtApi 的基础上开发,并进行了优化。

  • ✅ 大量使用了 async/await,提高了异步操作的效率和响应速度
  • ✅ 取消了第三方库的 Dll 依赖,现在只依赖于操作系统内置的 dll 库,更简单的构建和更稳定的运行,告别了 c++ 的环境依赖安装和莫名其妙的内存错误问题
  • ✅ 重写了 socket 通讯库,减少了文本传输过程中的一些问题
  • ✅ 对 Mql 命令进行了分组和命名的修改,现在的 Mql 命令作为各种 Enum 进行分类,理解和使用都更加容易
  • ✅ 新增了 MetaTrader 4 的事件触发,在交易、报价等事件发生时,也可以像在 MetaTrader 5 中一样触发事件
  • ✅ 新增了 MetaTrader 5 的 Include/Trade 扩展库命令
  • ✅ 新增了 Custom Commands 类型,用于添加 MQL 以外的方法,更容易地实现一些复杂功能
  • ✅ 重写了日志库,提供了内置日志组件和日志类接口,方便开发人员自定义日志输出

测试使用

加载 EA 到 MetaTrader 4/5 Terminal

  1. /MqlExpert/Mt4api.ex4Mt5api.ex5 在 MetaTrader 4/5 Terminal 中加载,确保可以正常启动
  2. 编译并运行 Mt45ApiNet.Demo 项目,设置相同端口后,点击"连接"按钮
  3. 测试各命令是否正常工作

开发使用

  1. 在开发项目中引用 Mt45ApiNet 源码或 Dll 文件
  2. 创建 MT4Client、MT5Client 实例,并连接到 MetaTrader 4/5 Terminal EA
  3. 像在 MetaEditor 中调用 MQL 命令一样,调用 Mt45ApiNet 的方法

示例代码

MT4 客户端示例

MT4 = new MT4Client(host, intport);
MT4.OnOrderOpen += MT4_OnOrderOpen;
MT4.OnOrderClose += MT4_OnOrderClose;
MT4.OnOrderModify += MT4_OnOrderModify;
MT4.OnOrderDelete += MT4_OnOrderDelete;
MT4.QuoteUpdate += MT4_QuoteUpdate;
MT4.Loger.IsLog(true);
MT4.Loger.LogLevel(MTLoglevel.Debug);
MT4.SocketClient.Loger.IsLog(true);
MT4.SocketClient.Loger.LogLevel(MTLoglevel.Debug);

await MT4.Connect();

var price = await MT4.MarketInfo("EURUSD", MarketInfoModeType.MODE_ASK);

MT5 客户端示例

MT5 = new MT5Client(host, intport);
MT5.OnOrderOpen += MT5_OnOrderOpen;
MT5.OnPendingOrderOpen += MT5_OnPendingOrderOpen;
MT5.OnPendingOrderFill += MT5_OnPendingOrderFill;
MT5.OnOrderClose += MT5_OnOrderClose;
MT5.OnOrderModify += MT5_OnOrderModify;
MT5.OnOrderDelete += MT5_OnOrderDelete;
MT5.OnNewBar += MT5_OnNewBar;
MT5.QuoteUpdate += MT5_QuoteUpdate;
MT5.Loger.IsLog(true);
MT5.Loger.LogLevel(MTLoglevel.Debug);
MT5.SocketClient.Loger.IsLog(true);
MT5.SocketClient.Loger.LogLevel(MTLoglevel.Debug);

await MT5.Connect();

var account = await MT5.AccountInfoInteger(ENUM_ACCOUNT_INFO_INTEGER.ACCOUNT_LOGIN);

许可证

MIT License

联系方式

商务合作:zhao0876@163.com

最后更新于