提示:如果您对本文有疑问可以在下方留言,博主会每天抽空回复一下
前言
MT4开发官方提供的有managerAPI和serverAPI,本文将介绍一下二者的区别,以及什么情况下是使用mannagerAPI什么情况使用serverAPI,希望对你开发有所帮助,如有疑问可在下方留言
一、managerAPI是什么?
如下图,
MT4的管理软件你应该用过, 我们用managerAPI可以开发出像这种软件的功能。
managerAPI需要服务器的IP:端口 以及manager的用户名密码才能有权限去调用manager接口
使用managerAPI开发需要连接服务器 代码如下:
if((res=manager->Connect("IP:端口"))!=RET_OK || (res=manager->Login(用户ID,"密码"))!=RET_OK)
{
printf("%d (%s)\n",res,manager->ErrorDescription(res));
return ;
}
managerAPI所使用的函数都包含在一个动态库中,所以开发出来的程序会带有一个DLL文件
这种方式开发难度较低,一般我们没有服务器权限,有manager权限的情况下 比如白标 可以通过这种方式去开发相关的功能,比如市面上很多CRM就是通过managerAPI去开发的,基本常用功能都能找得到具体方法可以看我另一篇博文
[https://blog.csdn.net/asplh/article/details/127154191?spm=1001.2014.3001.5501]
需要c++DEMO的话可在下方留言索取
二、serverAPI
serverAPI需要有服务器的权限,因为这种方式开发出来的是一个dll插件,插件需要我们放入到服务器MT4主目录的plugin目录中。这样MT4在重启后就可以加在刚刚我们的插件了。
加在后我们可以再管理软件中看到我们刚刚的插件
MT4serverAPI不需要像managerAPI那样知道管理用户名和密码,而是只要放入服务器中就自动加在调用,serverAPI部分功能是managerAPI也能实现的,不过serverAPI核心功能managerAPI无法做到的。
serverAPI的核心是HOOK。也就是说他可以拦截用户的一些操作比如连接服务器,登录,下单等等功能 这里就不一一列举了,后面会挑一些常用的讲一下。
举例来说:
如果我们在插件中有MtSrvUserLogin,当用户有登录操作的时候,MtSrvUserLogin就会拦截到此操作,
并且获取到用户信息
struct UserInfo
{
//--- common settings
int login; // login
char group[16]; // group
char password[16]; // password
char name[128]; // name
char ip[16]; // IP address
//--- access flags
int enable; // enable
int enable_change_password; // allow to change password
int enable_read_only; // allow to open/positions (TRUE-may not trade)
int flags; // internal data
//--- trade parameters
int leverage; // leverage
int agent_account; // agent account
//--- trade data
double balance; // balance
double credit; // credit
double prevbalance; // previous day balance
ConGroup grp; // client group
};
。
在比如比较火的跟单系统,我们可以拦截MtSrvTradesAdd,当有下单操作的时候服务端会第一时间拦截到此操作。我们可以根据需求编写后续代码
总结
不管使用哪种方式去开发适合自己需求的是最好的,并不是serverAPI一定比managerAPI要好,反之也一样,得根据自己需求去选择。后续会陆续更新一些MT4相关技术,想了解更多可以关注一下,有任何疑问可在下方留言交流