MT4行情交易API接口开发手记

article/2025/6/28 6:36:39
  之前开发的外汇量化交易系统,行情和交易接口都是通过在MT4平台下编写EA来实现,具体方法是:

1、用C++编写一个动态库文件,在里面实现行情和交易数据调用接口,将报价数据和K线数据写入数据库中,并从数据库中获取外汇量化系统发出的交易指令。
2、在MT4中编写EA文件,在MT4上不间断运行,从MT4平台实时获取报价和K线数据,并调用动态库写入数据库中,于此同时,不断从数据库中获取交易指令,再调用MT4的交易指令完成交易。
采用此种方法的好处就是兼容性强,只要打开MT4软件运行EA,就可以完成行情和交易接口的获取,也不用管是哪个外汇平台,即使MT4软件升级了也能继续用。缺点就是必须打开一个MT4软件专门获取行情和报价数据,同时每个交易的账户也必须要运行一个MT4软件,比如有10个外汇账户,就必须运行10个MT4软件。交易账户不多的话,运行速度和各方面指标也尚可接受,周末都不用重启或关闭,基本上实现7X24小时不间断运行。
一晃自己的量化系统就运行了几年了,中间也不断进行各种优化,但随着交易账户的不断增加,对软硬件的考验就越来越高了,一台普通的服务器,同时运行10多个账户就感觉有点吃力了,毕竟MT4本身就是一个大型的行情和交易软件,要占用不少软硬件资源,还要加上数据库服务器,现在感觉3、4台服务器都不够用了,网络带宽也开始吃紧,已经到了非改不可的时候了。
对于MT4行情和交易的API接口,自己一直都有耳闻,据说这种API接口,可以直接连接MT4行情和交易服务器,而且可以不用管是哪家外汇平台,只要该平台支持MT4软件即可使用。现在市面上很多跟单系统和跟单平台,就是通过该API接口来实现跟单服务的,但感觉这种API接口应该不是MT4软件开发商推出的,属于第三方软件,甚至有可能就是通过对MT4软件进行逆向分析提取出来的东西,一旦MT4软件升级了,就有可能导致API接口失效。记得以前网上就有通达信的行情和交易接口,可以获取国内A股行情并实现交易,自己当时还付费买了一套回来并使用了一段时间,据说也是逆向分析通达信系统得来的,但用了一段时间后,随着通达信软件和券商后台系统的升级,就无法使用了。
去年初的时候,自己就获取了一套MT4行情和交易接口及相关调用资料,但一直未去深入研究,因为该接口就仅仅是一个DLL文件,需要在Window 的.Net 平台下用C#开发和调用,自己对C#并不熟悉,这种托管DLL用其它的开发语言也不好调用,最主要是当时的重心和精力都放在量化系统和缠论策略的开发和优化上,对这种可有可无非要不可的东西实在无暇兼顾。但想着以后随着账户的不断增加,这种API调用接口肯定要用到,毕竟同时打开几十个MT4软件来实现交易接口太费资源了!自己也曾想到花点钱请别人开发,但想着要和自己的量化系统深度融合在一起,沟通和开发起来也挺麻烦,再加上自己本身就是程序员出身,还是适当的时候自己开发吧!从那时起,闲暇时间自己翻看一下C#的编程书籍,了解一下C#的语言和用法,先为以后的使用打点基础。
上周,将自己几个要完成的开发工作按重要性和紧急性排列出来各种比较后,终于决定将MT4API接口的开发提上日程了,说干就干,在电脑上安装好VS2019后,这个星期就忙着搞开发了。整个接口的需求和流程其实自己已经非常清晰,唯一不足的地方是对VS2019和C#还不熟悉,但开发语言都是相通的,不懂不会的地方就查查书,或者百度及CSDN上搜索一下就好了。
花了两天时间,完成了大致的软件界面,并实现了行情和交易接口的简单调用,成功返回了想要的各项数据,开发工作挺顺利,各项功能正慢慢实现。自己是用真实的交易账户来测试的,想着这样频繁的测试,不断登录和退出,途中还会有不少出错和非法调用,会不会引起外汇平台的警觉,如果把自己的账户封禁掉,那可就麻烦大了,因此马上申请了个模拟账户来测试,结果悲剧了,接口竟然无法登录了,返回Old Version,看来平台的模拟账户后台服务器已经升级了,不再支持这个接口,而真实账户的后台服务器,可能考虑到兼容性的缘故,还没有进行更新,或者还兼容这个接口版本,因此还能使用。记得去年底有一段时间,听说很多跟单系统或跟单平台都无法使用了,就因为MT4软件商强制升级了一次,有的MT4后台服务器已经不再支持这个接口了。想着这样下去也不是办法,因此又开始想办法去找这个接口的最新版本,皇天不负有心人,仅半天时间就找到了一个新的API接口版本,不过这个接口有一点点限制。在这里不得不鄙视一下C#,像C#,JAVA这种开发语言开发出来的托管代码,真的很容易被反编译,简直就和真正的源码看起来没有什么差别,因此很快就被我把限制解除了。
正好这两个星期新冠疫情吃紧,有的小区还被封了,羽毛球馆也不让打球了,因此整个星期几乎没有出门过,就窝在家里辛辛苦苦搞开发了,老骥伏枥,像我这种老程序员了,想不到开发效率还挺高,到了今天周五,就把整套接口完成了。现在回想过来,难点上除了本身对C#进行各种熟悉外,怎么优化速度和算法也花了不少时间,这里就通过缓冲区来实现数据的存储和传递,还有各种多线程的运行来实现了。首先建立一个行情获取后台线程,通过API接口实时读取行情数据不断放入行情缓冲区中,再建立一个行情写库后台线程,读取行情缓冲区数据并写入数据库中。每个交易账户也通过建立专门的后台线程来实现登录和交易,1个交易账户占用一个单独的后台线程,10个账户就建立10个单独的后台线程,在接收指令也进行了优化,每个交易线程并不直接从数据库中读取自己的交易指令,这样会非常占用数据库资源,而是建立一个专门的交易指令读取线程,从数据库中读取指令后,再转发到各个交易线程上。MT4软件在断线断网后,会自动进行重连,这个非常重要,自己也专门创建了一个守护线程监测各个交易账户,如果有账户断线了就自动重连。创建了两个模拟账户进行测试,效果真的非常好,速度非常快,毫秒级开单和平仓,比原来通过MT4的EA来实现开单和平仓要快得多了。高兴之余,下周再优化和测试一下,下个月应该就可以实际部署和运行了,而且这套接口和原来的EA调用接口是兼容的,两套接口可以随时进行切换,相当于双重保险了。废话不多说,附上软件截图。

在这里插入图片描述
在这里插入图片描述
另外再附上MT4API接口资料,官网:http://www.mtapi.online
在这里插入图片描述
一套接口要3000美金呢,带源码的接口要6000美金哦。
其实新版本接口和旧版本接口在调用方法上已经更改了不少,还好可以从这个网站里获取最新资料帮助。


http://chatgpt.dhexx.cn/article/d0mHPf0m.shtml

相关文章

中期国际:MT4数据挖掘与分析方法:以数据为导向,制定有效的交易策略

在金融市场中,制定有效的交易策略是成功交易的关键。而要制定一份可靠的交易策略,数据挖掘与分析方法是不可或缺的工具。本文将介绍如何以数据为导向,利用MT4进行数据挖掘与分析,从而制定有效的交易策略。 首先,我们需…

双线macd指标参数最佳设置_手机mt4平台怎么使用macd双线指标

macd双线指标在外汇操作中具有重要作用,它既可用于电脑版的mt4,亦可用于手机mt4。那么,您对手机mt4macd双线指标了解多少?您知道它该如何添加、怎么使用吗?下文将为大家进行详细介绍。 手机mt4macd双线指标添加 手机mt…

MT4 API 跟单交易接口更新

1、MT4 API交易接口是什么? Api接口是跨平台多账号交易接口,是将MT4交易通道以API的方式聚合在一起,帮助开发商在各经纪商不提供manager后台账号、无须EA插件的情况下,也能轻松接入不同的MT4交易平台,完成登录、交易和…

MT4跟单软件更新至v4.23.0——HOOKSWORK多帐户跨平台

2022年12月7日更新内容: 1、新增“软件启动开始跟单” 当重启电脑或软件时,软件启动时,软件可自动启动开始按钮。 1)重启服务器后自动登录系统命令:开始-运行- control userpasswords2 regedit>计算机\HKEY_LOCAL…

外汇交易MT4是什么软件?MT4与MT5有何区别?下载MT4要注意什么?

MT4是什么? MT4的全称是MetaTrader 4;是俄罗斯的迈达克公司发布的专门用于外汇交易的交易平台。MT4的特点是功能强大图表清晰使用简单;几乎可以加载市面上所有可用的金融市场技术分析指标;且自带mql语言功能;投资者甚至…

Hookswork多帐户跨平台MT4跟单软件的十二大优势:

Hookswork多帐户跨平台MT4跟单软件的十二大优势: 1、毫秒级跟单延迟 2、支持全球所有经纪商的 MT4 交易软件 3、不需要经纪商开放任何权限,不需要 EA 插件 4、不需要打开 MT4 终端 5、无绑定喊单及跟单账号数量限制 6、喊单账号也可以是观摩账号&#x…

中期国际:MT4交易平台介绍:功能、优势与适用范围

在外汇市场中,MetaTrader 4(简称MT4)被广泛认可为最受欢迎的交易平台之一。它具备丰富的功能和独特的优势,不仅适用于个人零售交易者,也广泛应用于金融机构和专业交易员。本文将介绍MT4交易平台的关键功能、独有优势以及适用范围。 首先&…

mt4系统平台的服务器,mt4平台服务器地址

mt4平台服务器地址 内容精选 换一换 Linux操作系统XEN实例变更为KVM实例前,必须已完成必要的驱动安装和配置。当您需要变更的Linux操作系统的XEN实例比较多时候,推荐您使用本节的批量自动配置的方法安装驱动,通过自动化脚本的方式批量为Linux…

vue项目中使用阿里icon库

从阿里字体图标库新建一个项目(当然也可选择其他icon库) 注意:Font class前缀不要和elment-ui中的图标前缀一样 2.选择需要的图标添加至项目,并生成Font class,下载至本地。 3.选择解压后的文件中的iconfont.css , iconfont.eot , iconfont.…

网站的icon图标与阿里云图标库的使用

文章目录 一、网站icon图标1.使用icon图标2.制作icon图标3.注意 二、图标库的引入1.进入阿里云图标库主页2.选择一种登录方式并登录2.搜索图标并加入购物车添加至项目下载素材 三、压缩图片 提示:以下是本篇文章正文内容,下面案例可供参考 一、网站icon…

阿里巴巴图标库的使用

阿里巴巴图标库两种使用方式 阿里巴巴图标库网站:http://www.iconfont.cn/ 【一 】、下载到本地引入使用 【二】、http形式使用 一、 下载到本地引入使用 1、进入网站搜索需要的图标 2、找到自己需要的图标加入购物车 3、点击购物车图标,添加到项目&am…

【解决】阿里巴巴icon图标无法修改颜色

解决方式很简单,把彩色图标的勾去掉就可以了,如下 只要这个彩色图标不选就要可以,如果一定要选建议css文件分开存放就可以实现既有彩色又有可以修改颜色的字体图标的效果。

Vant组件库 引入 阿里矢量图 添加自己喜欢的 ICON

📃目录跳转 一.矢量图下载💨使用CDN方式🎉下载本地(推荐) 二.Vant引入Icon🗺️🎃 使用方式🚀 运行效果: 一.矢量图下载 💨使用CDN方式 当然你也可以使用官方…

关于阿里云图标的使用 iconfont

iconfont 关于阿里云图标库使用的介绍 对于添加到网页中的iconfont可使用以下几种方式: 首先需要进入阿里云图标库官网进行对应的下载iconfont-阿里巴巴矢量图标库 将需要的图标加入到购物车 再添加至项目通过项目中进行下载 打开所下载的压缩包会有如下目录 全…

uni-app:阿里巴巴图标库icon的使用步骤

这里真的是踩了很多坑啊~~ 记录一下在uni-app中使用阿里巴巴图标库icon的详细步骤 阿里巴巴图标库:iconfont-阿里巴巴矢量图标库 一、将图标加入购物车,下载代码至本地 如果之后官网版本更新导致页面不一样了,找到对应位置进行该操作即可。…

微信小程序如何引用阿里icon字体

**登陆阿里icon http://www.iconfont.cn/ 下载项目到本地** 将css文件改为wxss 在app.wxss中引入外部wxss 在需要引用的页面添加代码 <icon class"aliiconfont icon-zuyu"></icon>

vue 中引入阿里图标库,封装iconPicker组件

一.引入阿里图标库 1.vue项目引入阿里图标库 二.封装iconPicker组件 1.子组件 <template><el-popoverplacement"bottom"title""width"200"trigger"manual"v-model"visible"mouseleave"mouseleave">…

阿里巴巴矢量库icon font的使用

矢量库地址&#xff1a;https://www.iconfont.cn/?spma313x.7781069.1998910419.d4d0a486a 矢量库的线上使用方式 第一步&#xff1a;将所需要的图标添加到购物车中 第二步&#xff1a;打开购物车 第三步&#xff1a;添加至项目&#xff0c;没有的话新建一个 第四步&#xff1…

vue 引入 icon(阿里图标库)

项目中&#xff0c;需要引入一些SVG图标&#xff0c;我一般都是用阿里图标库&#xff08;https://www.iconfont.cn/&#xff09;&#xff0c;网上有三种步骤&#xff0c;我的也是其中一种&#xff0c;接下来记录一下&#xff0c;我自己用的步骤&#xff1a; 第一步&#xff1a;…

uni-app使用阿里巴巴图标库icon详细步骤--避免踩坑

踩了很多坑~~ 最终终于找到可以使用阿里图标库的方法 简单方便 阿里巴巴图标库&#xff1a;https://www.iconfont.cn/home/index?spma313x.7781069.1998910419.2 近期阿里图标库更新了 没有之前的在线链接直接使用(如下图) 不要慌 绝绝子来教你啊 怎么创建项目 加入图标 …