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,当有下单操作的时候服务端会第一时间拦截到此操作。我们可以根据需求编写后续代码


总结

经验分享 程序员 微信小程序 职场和发展