MT4/MT5 利用 QQ 发送交易或指标信号提示信息之设计
两年前曾经设计过利用 QQ 窗口来传送交易 发送 和 接收 之远程跟单设计,主要是为了 QQ 群可以同时交流和交易跟单信息之目的,也可以用这样的架构来接收发送个别联络人的跟单。腾讯对于 QQ 和微信的对话窗口都是作特殊保护的,用标准程序都已经不容易发送和读取对话窗口的内容(尤其是对话窗口内的文字读取,腾讯做的保护是更多的),再改用 MT4/MT5 的编程语言来设计,自然是更麻烦,因为MQL4/MQL5 语言不支持指针,对于调用系统底层的接口,虽然可以调用但是转写还是相当麻烦的。
因为交易信号和指标信号提示(或是群组信号发送)是许多团队或交易者的基本需求,所以把之前的 QQ 跟单设计里的 QQ 信息发送,单独抽取出再重新设计到其他需要提示报警功能。这个架构可以移植到指标 和 EA 上,都可以加上这样的QQ信息发送功能。
上图的范例,是前阵子分享在博文的 账号监控提示EA 加上了 QQ 传送信息的设计,也设计了 MT4 和 MT5 两版。
可能许多朋友不知道,MT4 不管是安照在 32 位元或是 64 位元操作系统,就只有 32位元的 MT4 版本,但是 MT5 安装程序会根据系统是 32 位元而自动安装 32 位元版的 MT5,如果是 64 位元系统会安装 64 位元版本的 MT5,在不同位元的 MT5 版本,MT5 指标或是 EA,如果有调用系统底层的函数功能,尤其是与内存相关的函数,是要特别对32或是64位元做判断处理的,不然很容易触发内存存取错误而被 MT5 强制停止,因为所谓的 64 位元操作系统就是电脑安装内存大于 4GB,内存地址超过 32 位元的限制才必须采用的。所以设计 MT5 的指标或是 EA 不是只有订单处理麻烦,如果调用到系统函数,因为 MQL4/MQL5 语言不支持指针,所以连一些很简单的系统函数调用设计也需用到内存复制交换这些系统函数,所以 32/64 位元的差异设计处理自然是必要的。
这个设计没有用到自定义 dll 但是有调用到系统 dll 函数,所以使用前需要勾选 允许 dll 导入:
在参数设置上,尽量与之前版本的几种提示信息模式设计相容,所以只有多了几个参数:
在 ‘QQ联系人名称’ 那里填入 要发送信息的联络人名称,可以多个联络人,用英文逗号区隔,如果是群,输入群的名称。
‘QQ信息标题字’可以自行输入在每段信息的开头字,这个范例只有区别是 MT4 或是 MT5 发出的这样识别字。
使用时,把要发送的那个联络人的对话窗口打开,打开后可以缩小到任务栏都没有关系,只要窗口是开启即可。如果对话窗口没有开启,EA 也会有提示窗口要求使用者开启对话窗口。
如果是缩小在任务栏状态,信息发送后也会保持在缩小状态。发送过程,使用者一样可以用那个对话窗口与联络人书写信息,不会干扰。
当然 MT4/MT5 本身就有 两种远程提示方式,电邮和MT4/MT5手机信息 传送,为何会有需求其他的提示报警方式,毕竟电邮或是MT4/MT5手机信息还是有些速度或是稳定度的弱点(例如安卓手机上的信息推送),而且群组信息提示也是这两个内建远程提示方式无法达成的。