MT4跟单系统开发

devtools/2024/10/23 21:37:14/

文章目录

  • 前言
  • 一、managerAPI方式跟单
    • 1、轮训的方式
    • 2、Pumping的方式
  • 二、serverAPI方式跟单
  • 三、逆向抓包模拟客户端方式跟单


前言

如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

本文讲解一下MT4跟单软件的开发的几种方法以及原理。


一、managerAPI方式跟单

此方法比较常用,需要有manager的管理权限。

1、轮训的方式

定期获取主账户的交易信息,并将这些信息应用到跟单账户上。

实现步骤:
1>、获取主账户的订单信息:定期轮询主账户的订单列表,检查是否有新订单或已修改的订单。每隔固定时间(例如每秒或几秒)进行一次检查。

2>、比对订单状态: 将当前轮询到的主账户订单与之前获取的订单列表进行比对,确定新开仓、平仓或修改的订单。

3>、复制订单到跟单账户: 根据主账户订单的变化,在跟单账户中执行相应的交易操作,例如开仓、平仓、修改止损等。

4>、处理订单差异: 需要处理订单量、止损、止盈等方面的差异,确保跟单账户的操作与主账户保持一致。可能需要根据跟单账户的资金情况调整订单的手数比例。

2、Pumping的方式

pumping是一个用于开启或关闭数据推送模式的功能,
当开启 后,会以推送的方式从服务器获取市场数据和账户信息,而不是采用常规的轮询方式。这样可以显著减少服务器与客户端之间的通信负载,,尤其是在高频交易和数据变化频繁的情况下.因为只有当服务器有新数据时才会推送给客户端.

		if (res = CManager::PumpInstance()->PumpingSwitch(PumpingNotify, NULL, 0, 0) != RET_OK)printf("pumping switch error\n");

在pumping方法中可以对以下类型的事件进行处理:

enum{PUMP_START_PUMPING=0,      // pumping startedPUMP_UPDATE_SYMBOLS,       // update symbolsPUMP_UPDATE_GROUPS,        // update groupsPUMP_UPDATE_USERS,         // update usersPUMP_UPDATE_ONLINE,        // update online usersPUMP_UPDATE_BIDASK,        // update bid/askPUMP_UPDATE_NEWS,          // update newsPUMP_UPDATE_NEWS_BODY,     // update news bodyPUMP_UPDATE_MAIL,          // update newsPUMP_UPDATE_TRADES,        // update tradesPUMP_UPDATE_REQUESTS,      // update trade requestsPUMP_UPDATE_PLUGINS,       // update server pluginsPUMP_UPDATE_ACTIVATION,    // new order for activation (sl/sp/stopout)PUMP_UPDATE_MARGINCALL,    // new margin callsPUMP_STOP_PUMPING,         // pumping stoppedPUMP_PING,                 // pingPUMP_UPDATE_NEWS_NEW,      // update news in new format (NewsTopicNew structure)};

说明:
PUMP_START_PUMPING (0)
描述:表示启动了数据推送功能。当客户端与服务器建立连接,并开始接收推送数据时,会触发此事件。是推送的起始状态。

PUMP_UPDATE_SYMBOLS
描述:更新符号(交易品种)信息。服务器会推送市场中的交易符号列表,或者交易品种的变化(例如增加或删除品种,或符号参数变化)。

PUMP_UPDATE_GROUPS
描述:更新用户组信息。服务器向客户端推送与用户组(账户组别)相关的更改信息,如修改某个组的权限或规则。

PUMP_UPDATE_USERS
描述:更新用户信息。表示某个用户(账户)的信息发生变化,例如账户的状态或资金变化。

PUMP_UPDATE_ONLINE
描述:更新在线用户信息。服务器推送当前在线的用户信息,或者用户的上线/下线状态发生变化。

PUMP_UPDATE_BIDASK
描述:更新买卖报价(Bid/Ask)。服务器推送某些交易符号的最新买价和卖价信息,供客户端更新市场报价。

PUMP_UPDATE_NEWS
描述:更新新闻。表示服务器推送新的金融市场新闻头条,通常是简要信息或新闻列表。

PUMP_UPDATE_NEWS_BODY
描述:更新新闻正文。服务器推送特定新闻的详细内容,供用户查看新闻的详细信息。

PUMP_UPDATE_MAIL
描述:更新邮件。服务器推送与账户相关的系统邮件,如平台发给交易者的通知或公告。

PUMP_UPDATE_TRADES
描述:更新交易信息。服务器推送账户的交易订单变化(如开仓、平仓、订单修改等),用于更新客户端的交易订单状态。

PUMP_UPDATE_REQUESTS
描述:更新交易请求。服务器推送新的交易请求信息,例如某些订单的处理状态或某些操作请求的结果。

PUMP_UPDATE_PLUGINS
描述:更新服务器插件。表示服务器推送有关安装或卸载某些插件的信息更新,可能涉及服务器功能的扩展。

PUMP_UPDATE_ACTIVATION
描述:推送新订单的激活。与订单的激活(例如挂单的触发、止损止盈的执行、强平等)相关的更新。

PUMP_UPDATE_MARGINCALL
描述:推送新的保证金警告。服务器推送某个账户发生了新的保证金警告(Margin Call)信息,提醒用户注意资金风险。

PUMP_STOP_PUMPING
描述:表示数据推送结束。当客户端与服务器断开连接,或停止接收推送数据时,会触发此事件。是推送的终止状态。

PUMP_PING
描述:心跳包(ping)。服务器定期发送的轻量级数据包,用于维持客户端与服务器的连接并检测延迟,确保连接保持活跃。

PUMP_UPDATE_NEWS_NEW
描述:更新新格式的新闻。服务器推送新格式的新闻(NewsTopicNew 结构),表示新闻内容的数据格式发生变化,通常用于改进后的新闻推送系统。

这些枚举值表示 MT4 服务器在数据推送模式下,向客户端发送的各种类型的数据更新。根据推送的不同类型,客户端可以接收市场报价、用户信息、交易订单等的实时更新,从而对数据变化做出相应的处理。这些事件对开发需要实时数据同步的插件或应用非常重

二、serverAPI方式跟单

这种方式需要有服务器权限。
关于serverAPI的原理前面也有讲过,是通过HOOK的方式拦截用户的所有请求,包括下单 平仓 修改订单等。

可以在MtSrvTradesAdd中拦截用户开仓请求,当用户开仓我们就可以根据跟单规则去调用OrdersOpen开仓。当用户平仓或者修改订单我们可以在MtSrvTradesUpdate中拦截用户请求去做相应的操作。

三、逆向抓包模拟客户端方式跟单

这种方式不需要有manager权限也不需要有服务器权限。只需要有交易的账户就行。
这里不做具体逆向分析 ,后面如果有时间可以专门去讲一下。这里只是将一下实现跟单的方式。
逆向的方式是这几种方式最麻烦的,原理就是抓包解密分析出来MT4客户端的下单平仓修改订单等操作的网络数据,然后我们用软件模拟这些操作。(待续)


http://www.ppmy.cn/devtools/128256.html

相关文章

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行 引言 在现代应用开发中,随着业务需求的增长,数据库表结构和数据往往需要进行迁移和更新。迁移(Migration)是指对数据库表的结构、数据类型、索引、约束等进行修改或更新…

知识付费小程序:轻松实现一站式运营,开启知识变现之旅

在当今数字化时代,知识付费已成为一种趋势,为内容创作者和知识提供者提供了广阔的商业机会。而知识付费小程序的出现,更是为实现一站式运营和开启知识变现之旅提供了便捷高效的解决方案。 一、便捷的内容创作与管理 知识付费小程序为创作者…

MYSQL基础快速入门

1. SQL类型 1.1 DDL DDL:data definition language(操作数据库或表时需加database或table)用来定义数据库对象:数据库,表,列等,例如创建、删除、修改:数据库、表结构等 规范: 1.不要使用关键字命名一个表…

[PHP]重复的Notice错误信息

<?php $a []; var_dump($a[name]);执行结果&#xff1a; 原因&#xff1a; display_errors和error_reporting都打开了Notice错误信息

Centos7 安装部署Zookeeper

官网地址&#xff1a;https://zookeeper.apache.org/ 1. Zookeeper 介绍 Apache ZooKeeper是一个开源的分布式协调服务&#xff0c;它用于维护配置信息、命名、提供分布式同步以及提供组服务等。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#x…

无法获得下列许可 SOLIDWORKS Standard. 客户机的 FLEXlm 版本比服务器的还新。(-83.147.0)

无法获得下列许可 SOLIDWORKS Standard. 客户机的 FLEXlm 版本比服务器的还新。(-83.147.0) 错误如图 打开xxclean 扩展功能 无法获得下列许可 选择版本点确定

听泉鉴宝在三个月前已布局商标注册!

近日“听泉鉴宝”以幽默的风格和节目效果迅速涨粉至2500多万&#xff0c;连线出现“馆藏文物”和“盗墓现场”等内容&#xff0c;听泉鉴宝早在几个月前已布局商标注册。 据普推知产商标老杨在商标局网站检索发现&#xff0c;“听泉鉴宝”的主人丁某所持股的江苏灵匠申请了三十…

minio设置直接通过访问链接在浏览器中打开

1&#xff1a;方法一&#xff1a;进入bucket的配置页面,直接将 Access Policy设置为Custom 1-1&#xff1a;接着点击set 1-2&#xff1a;自动会在Anonymous创建一个Prefix / 1-3&#xff1a;这时候可以直接通过网址为&#xff1a;ip:address/bucket的名字/文件的名字&#xff…