MT4插件开发简介(开发思路)
提示:如果您对本文有疑问可以在下方留言,博主会每天抽空回复一下
前言
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) ",res,manager->ErrorDescription(res)); return ; }
managerAPI所使用的函数都包含在一个动态库中,所以开发出来的程序会带有一个DLL文件 这种方式开发难度较低,一般我们没有服务器权限,有manager权限的情况下 比如白标 可以通过这种方式去开发相关的功能,比如市面上很多CRM就是通过managerAPI去开发的,基本常用功能都能找得到具体方法可以看我另一篇博文 [https://blog..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,当有下单操作的时候服务端会第一时间拦截到此操作。我们可以根据需求编写后续代码