本文章只说技术
本文章为原创文章,禁止转载。该文章只是技术交流,由此带来的任何问题与文章作者无关,如有疑问联系QQ3400262870。
思路:
MT4是由迈达克研发的一款交易软件,该软件可以对接很多种交易数据,也可以写自动交易化程序EA。今天探讨的问题是如何实现二元交易,改变软件本身的交易规则。该软件支持第三方插件,可以根据自己的需求创建一个DLL文件。插件本身的规则其实是HOOK了原有的交易流程,通过HOOK相关函数来达到流程的修改。贴一张官方针对HOOK插件说明的截图。
由此我们就能知道我们需要在服务器端安装一个插件,再写一个客户端来实现需求。
服务端:
服务器端可以由两种方式实现:
1.通过Socket来实现,建立一个SocketServer,客户端通过Socket连接到服务器进行数据传输,有弊端,如果是直连服务器没有问题,如果是通过DC就不行了。MT4默认是端口是443,如果建立SocketServer就需要在指定一个端口,自己新建立的端口是无法通过DC传输。当然自己可以写一个DC,DC的作用其实就是数据中转。保证主服务器不受到攻击。
2.通过官方提供的一个服务 MtSrvTelnet ,这个服务的作用是接收外部也可以说是第三方客户端发来的数据命令。当MT4服务器收到这个端口数据后就会中转到 MtSrvTelnet 这个Api来处理,MT4本身将不再处理这个数据。所以我们在这个Api下实现我们的逻辑即可。
int APIENTRY MtSrvTelnet(
const ULONG ip, // IP address
char* buf, // Request/response
const int maxlen // Maximum size
){
//写业务逻辑即可
}
客户端:
1.对应服务端,写一个SocketClient连接到服务器即可。
2.写一个Telnet连接服务器进行数据传输即可。
结束语:
下一篇文章我们将探讨一下,如何将数据商提供的报价数据接入MT4服务器。