MT4行情交易API接口开发手记之前斥地的外汇量化营业体系,行情和营业接口都是通过正在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 的平台下用C#斥地和移用,本人对C#并不熟练,这种托管DLL用其它的斥地说话也欠好移用,最重要是当时的重心和精神都放正在量化体系和缠论计谋的斥地和优化上,对这种无足轻重非要不成的东西实正在无暇两全。但念着今后跟着账户的继续扩充,这种API移用接口确信要用到,到底同时翻开几十个MT4软件来完毕营业接口太费资源了!本人也曾念到花点钱请别人斥地,但念着要和本人的量化体系深度调解正在沿途,疏通和斥地起来也挺烦杂,再加上本人自身即是步调员身世,仍然相宜的时间本人斥地吧!从那时起,闲暇期间本人翻看一下C#的编程册本,相识一下C#的说话和用法,先为今后的应用打点根基。
上周,将本人几个要已毕的斥地职责按要紧性和急切性分列出来各样比力后,究竟?断定将MT4API接口的斥地提上日程了,说干就干,正在电脑上装配好VS2019后,这个礼拜就忙着搞斥地了。一切接口的需乞降流程原本本人仍旧很是清爽,独一亏空的地方是对VS2019和C#还不熟练,但斥地说话都是相通的,不懂不会的地方就查查书,或者百度及CSDN上搜罗一下就好了。
花了两天期间,已毕了大致的软件界面,并完毕了行情和营业接口的简略移用,获胜返回了念要的各项数据,斥地职责挺胜利,各项性能正冉冉完毕。本人是用的确的营业账户来测试的,念着如此一再的测试,继续登录和退出,途中还会有不少堕落和犯科移用,会不会惹起外汇平台的警醒,倘使把本人的账户封禁掉,那可就烦杂大了,因而立刻申请了个模仿账户来测试,结果悲剧了,接口公然无法登录了,返回Old Version,看来平台的模仿账户后台任事器仍旧升级了,不再声援这个接口,而的确账户的后台任事器,或许酌量到兼容性的原因,还没有举办更新,或者还兼容这个接口版本,因而还能应用。记得昨年底有一段期间,传闻许众跟单体系或跟单平台都无法应用了,就由于MT4软件商强制升级了一次,有的MT4后台任事器仍旧不再声援这个接口了。念着如此下去也不是步骤,因而又动手念步骤去找这个接口的最新版本,皇天不负有心人,仅半天期间就找到了一个新的API接口版本,然而这个接口有一点点范围。正在这里不得不敌视一下C#,像C#,JAVA这种斥地说话斥地出来的托管代码,真的很容易被反编译,几乎就和真正的源码看起来没有什么分别,因而很速就被我把范围破除了。
正好这两个礼拜新冠疫情危急,有的小区还被封了,羽毛球馆也不让打球了,因而一切礼拜险些没有出门过,就窝正在家里辛劳顿苦搞斥地了,老骥伏枥,像我这种老步调员了,念不到斥地效劳还挺高,到了即日周五,就把整套接口已毕了。现正在回念过来,难点上除了自身对C#举办各样熟练外,何如优化速率和算法也花了不少期间,这里就通过缓冲区来完毕数据的存储和传达,又有各样众线程的运转来完毕了。开始修设一个行情获取后台线程,通过API接口及时读取行情数据继续放入行情缓冲区中,再修设一个行情写库后台线程,读取行情缓冲区数据并写入数据库中。每个营业账户也通过修设特意的后台线程来完毕登录和营业,1个营业账户占用一个稀少的后台线个稀少的后台线程,正在接纳指令也举办了优化,每个营业线程并不直接从数据库中读取本人的营业指令,如此会很是占用数据库资源,而是修设一个特意的营业指令读取线程,从数据库中读取指令后,再转发到各个营业线软件正在断线断网后,会自愿举办重连,这个很是要紧,本人也特意创修了一个保卫线程监测各个营业账户,倘使有账户断线了就自愿重连。创修了两个模仿账户举办测试,恶果真的很是好,速率很是速,毫秒级开单宁静仓,比本来通过MT4的EA来完毕开单宁静仓要速得众了。欢乐之余,下周再优化和测试一下,下个月该当就能够本质布置和运转了,况且这套接口和本来的EA移用接口是兼容的,两套接口能够随时举办切换,相当于双重保障了。空话不众说,附上软件截图。
原本新版本接口和旧版本接口正在移用手段上仍旧更改了不少,还好能够从这个网站里获取最新材料助助。
转载请注明出处。