以 delta 指标为例开发股票交易量控制指标(基础篇)
用 delta 拆解成交量控制的起点
在 MT5 里做股票类的成交量控制,delta 指标是个很直接的切入点:它把每根 K 线的主动买入量与主动卖出量做差,让你看见资金净流向。 原文示例发布于 2018 年 9 月 26 日,在 MetaTrader 5 板块获得 6364 次浏览、129 条互动,说明这类底层成交量工具长期有真实需求。 对外汇与贵金属交易者而言,成交量数据来自交易所或流动性聚合,和股票逐笔成交不同,用 delta 做控制前要先确认品种成交量口径,这类品种杠杆高、滑点风险大,结论只作概率参考。
◍ 内容
概述 目标读者 准备。 选择服务器 获取逐笔报价的方法。 MqlTick 格式 首次启动。 历史计算 按所形成的柱线计算历史的函数 计算当前烛条的函数 实时计算 策略测试器的工作特点 结束语 文章中使用的文件
「MT5 里的两类成交量与真实量本质」
MT5 向用户广播两类交易量:tick 交易量统计的是单根柱线形成过程中逐笔报价(报价数据变动)被接收的次数;real 交易量统计的是该柱线期间实际发生的交易笔数。终端里直接标为“交易量”的,就是后者,也是本文要深挖的对象。 由于终端历史数据带有时间戳与买卖方向,real 交易量可以被拆成股票式指标,让我们看到柱线背后的构成:成交笔数、交易频率,以及某段时间内买卖两边的相关性。把成交量拆成组件后,交易预判的精度有可能比只看传统量柱更高,但这类指标的编写和常规脚本相比明显更费事。 需要注意,真实交易量只存在于集中式交易所市场。外汇属于场外交易(OTC),拿不到真实成交笔数,因此这套思路不能直接套在外汇上,贵金属若走场外报价也同样受限、风险高。下文以莫斯科交易所衍生品市场(FRTS)的真实量为例展开,不熟悉 FORTS 的读者应先补一下交易所定价机制再动手验证。
谁该看这套逐笔报价玩法
逐笔报价(tick)数据在 MT5 里的接口是近几版才稳定下来的,论坛里相关提问明显变密,说明实盘圈开始认真拿它做微观结构分析了。 这套内容不是给零基础看的:你得先能写通一个普通指标,才谈得上把逐笔流接进自己的 EA 或脚本。 如果你做股票或贵金属,又想碰 delta 指标、成交量分布那一类的订单流工具,这篇里拆的写法能直接省掉你踩坑的时间。外汇和贵金属杠杆高、滑点跳空频繁,拿 tick 级信号下单前务必先在策略测试器里跑历史校验。
◍ 先挑一台会喘气的服务器
做股票类指标的第一道坎不在代码,而在数据源。券商服务器是否持续刷新逐笔成交,直接决定后续 delta(买卖量差)能不能算准。问题是券商从不公布服务器版本,你没法一眼看出它有没有在认真播数据。 打开市场深度(点品种名旁表格图标,或按 Alt+B;若没图标,去“查看”里勾上“显示快速交易按钮”F8)后,点“显示时间和买卖”。注意别右键设最小交易量过滤,否则会屏蔽成交让判断失真。 老服务器最爱播“不确定方向”成交,市场深度里标 N/A。每笔成交本该有明确发起方(买或卖),一旦出现 N/A,delta 构造精度就被扯拐。图例里左侧刷新正常的深度和右侧陈旧的对一眼能分。 规则很简单:先查服务器更没更新,再挑延迟低的。MetaTrader 5 广播精度到毫秒级,ping 越小,你抓到并处理成交就越快——右下角就能看当前服务器延迟,图例里那台是 30.58 毫秒。 另外终端构建要在 1881 以上,这个版本修掉了逐笔报价已知的全部错误。外汇和贵金属杠杆高、滑点凶,服务器延迟和脏数据会放大你的误判风险,接入前务必手动验一遍。
「用 MqlTick 把逐笔成交拆进蜡烛」
拿到一台能给出正确逐笔历史的服务器后,真正取数靠两个 MQL5 函数:CopyTicks() 从某个时间点向后取指定量的报价,CopyTicksRange() 在起止区间内取。做成交 delta 指标这两个都得用,因为要按 MqlTick 结构把数据拉进来。 MqlTick 里对我们最有用的三个字段:volume 是最后一笔成交的成交量,在逐笔维度会被复用,所以比单笔价格更有意义;time_msc 是毫秒级更新时间,用来判定这笔报价归到哪根蜡烛,并推算下一次请求起点;flags 标出哪些数据变了,我们用 TICK_FLAG_BUY / TICK_FLAG_SELL 把买卖方向摘出来。 历史类型由标志控制,COPY_TICKS_INFO 只取买卖价变动,COPY_TICKS_TRADE 取成交价和量变动,COPY_TICKS_ALL 全收。做盘口资金流只需 COPY_TICKS_TRADE。 指标逻辑不复杂:每根蜡烛内累加买量卖量,差值 delta 画直方图,买方占优柱线偏蓝、卖方占优偏红。开 MT5 挂一段 EURUSD 的 tick 历史跑一下,能看到蓝红柱在消息秒数附近突变,印证毫秒字段抓方向的灵敏度。外汇与贵金属杠杆高,tick 重放结果仅反映历史概率,不等于后续必然重演。