MetaTrader 中的数据包重传是什么?
数据包重传,是指网络数据包因为第一次发送时丢失或迟迟没有得到确认,不得不再发一次的比例,用百分比表示。连接正常时,它是零。它衡量的是 MetaTrader 终端与外界之间的线路是否可靠。这和线路快不快是两个问题,而且更有参考价值。
工作原理
终端和交易服务器之间的所有通信都走 TCP 协议,TCP 靠重新发送来保证送达:发送方发出数据包后等待确认,超时还没收到,就再发一次。
重传 % = 重新发送的数据包 / 已发送的数据包 × 100
MetaTrader 把这个值作为终端属性提供,EA(智能交易系统)把它连同其他环境数据一起转发,ShowMyTrades 再格式化为两位小数,所以低于 0.005% 的值都会显示为 0.00%。
看这个数时要注意两点。第一,它来自机器自身的网络协议栈,不是单独探测某一条连接,所以同一台 VPS 或同一条家庭线路上的其他软件也会影响它。第二,它是比率,不是事件次数:只要不是零,就说明丢包在持续发生,不是偶尔一次。
为什么重要
Ping 是平均值,而平均值反映的是情况好的时候。一条连接的平均往返时间可以很漂亮,却照样丢包,因为丢包藏在尾部,被平均值抹平了。重传直接测量的,就是这条尾部。
一次重传的代价不止多一次往返。发送方得先等到超时,才能确定数据包丢了,而这段等待通常是正常往返时间的好几倍。所以 1% 的重传率,不是让所有消息都慢 1%,而是让 1% 的消息慢得多,其余 99% 却看起来毫无问题。不管怎么算平均值,结果都让人放心。
TCP 还要求按顺序交付,所以丢失的数据包补回来之前,后面的数据都得排队等。常见的症状就是这样:报价突然停住,然后一下子全涌进来。
所以,重传率上升的后果很具体。即时执行下会出现重新报价,因为请求到达时,终端依据的价格已经过时。市价执行下,实际滑点会扩大。EA 的操作会执行得晚,甚至根本没执行。如果继续攀升,会话就会中断,终端彻底不再发送数据。
两个信号中,它也来得更早。Ping 在路由变化时变差;重传在线路本身出问题时变差,通常远在断线之前。
数据显示了什么
以下数字只描述在 ShowMyTrades 上发布的账户,不代表交易者整体。只有通过我们的 EA 连接的 MetaTrader 账户才会发送终端读数,而 1 万+ 个已连接账户中,绝大多数是 MetaTrader 账户。cTrader 和 TradeLocker 账户通过经纪商的 API 接入,没有终端,自然也没有自己的网络读数。
这一点在这里之所以重要,是因为自动化。自动交易占比的中位数为 99%,53.9% 的账户自动化程度超过 90%。这些终端无人值守,往往跑在一台租来的服务器上,主人好几周都没登录过。主观交易者几分钟内就会发现连接卡顿,因为屏幕就在眼前。而凌晨三点,一台状况越来越差的 VPS 上跑着的 EA 什么也察觉不到,别人也一样,直到结果出了错。
这些账户连接着 703 个不同的经纪商服务器,通往每个服务器的路径都不一样。
在 ShowMyTrades 上的位置
重传是终端面板(MT5 上叫终端与已打开的图表,MT4 上就叫终端)六个卡片中的第二个,紧跟在 Ping 之后,后面依次是终端版本号、内存、自动交易和 DLL 导入。卡片显示两位小数的百分比,提示框直接说明了怎么看:接近 0% 表示连接稳定;持续偏高,说明网络不可靠,或者交易服务器距离较远。
看这个数要结合面板标题:标题上有状态徽章(已连接、未连接交易服务器或离线),还有最近一次读数是多久以前;账户 11 分钟没有动静,就会标为离线。重传不断攀升,时间戳又越落越远,这正是终端即将停止发送数据前的典型过程。
这个面板只有所有者能看到,位于账户的控制台页面:终端数据,包括已打开图表上运行的 EA,从不发布到公开页面或小组件上。cTrader 和 TradeLocker 账户没有终端,也就没有这个面板。
常见误解
- “0.00% 就代表连接完美。”它只说明最近一次同步时,数值低于两位小数的显示精度。这只是一张快照,一次干净的读数代表不了整晚的情况。
- “这是经纪商的问题。”它反映的是网络路径,以及路径靠您这一端的那台机器。一台繁忙的 VPS,完全不关经纪商的事,也能把它推高。
- “只要 ping 低,重传就无所谓。”恰恰是这种组合最值得担心:漂亮的平均值背后,藏着一条肥尾。
- “它只影响行情数据,不影响我的订单。”报价和订单走的是同一条 TCP 连接,一个卡住,另一个也会卡住。
终端读数由您连接账户时安装的同一个 EA 发送。详见如何验证您的账户。
相关术语