
🎯
价格离散性:为什么限价单总差一点不触发
Tick 跳跃、点差与滑点,如何让你的「精确触发」永远差一步
#价格离散性#Tick#限价单#点差#滑点
你有没有过这种经历:挂了一笔限价单,价格明明「到了」,订单却没成交,刷新一下又「没到」?你以为是平台卡顿,其实是你和「离散的价格」打了个照面。本文把这件事讲透,并给你一个不会再落空的触发写法。
⚠ 一句话点破
价格不会为了让你成交而「恰好」踩中某个点。把触发写成区间,而不是赌一个精确值。
一、价格是怎么「跳」的
每个品种的最小变动单位叫 Tick Size(点值)。EURUSD 常见的最小变动是 0.00001(0.1 点)。报价只会出现在「基准价 ± N×Tick」的离散网格上,永远不会出现 1.085012 这种「介于两点之间」的价格。经纪商的买价与卖价之间还存在点差,两者并不重合。
✦ 记住
报价只落在「基准价 ± N×Tick」的离散网格上,不存在 1.085012 这种「中间价」。先接受这个事实,触发写法才改得对。
二、为什么精确价触发条件会失灵
你写「价格达到 1.08500 就开买」。但真实 Tick 序列可能是 …1.08498 → 1.08503…,价格直接从下方跳到上方,从未「恰好等于」1.08500。于是那个精确触发条件,永远等不到命中。
⚠ 精确点触发 = 赌 Tick 恰好命中
把触发写成「价格 == 精确值」,等于赌行情刚好踩中那个唯一的离散网格点。概率极低,且对滑点和点差毫无容差。
三、正确写法:用「区间」触发
- 把「价格达到 1.08500」改成「价格进入 [1.08500-3点, 1.08500+3点] 区间」
- 叠加时间过滤:进入区间后 N 根K线内未反向突破才确认
- 用「触价」(价格碰触即挂单) 而非死等精确成交价
✦ 实操建议
目标位、止损位都用「±2~3 点」的区间表达,比用精确点可靠得多;下单类型上,突破策略用 Stop 单、回调策略用 Limit 单,别让精确成交价卡住你。
四、点差与滑点会再「吃掉」一点
图表上的「最后价」通常是买价或卖价的某个,而你实际成交的是对手价:做多成交在卖价(更高),做空成交在买价(更低)。点差本身就是 1~3 个点甚至更多。再加上流动性不足时的滑点,真实入场往往比图表价再偏移一点。计划必须把这些算进去。
五、断线容差:价格可能漂到任意距离
与券商服务器的连接可能随时中断。断线期间价格自由漂移,恢复后可能直接跳过你的区间。实盘计划要包含断线处理:例如只允许在交易时段挂单、设置最大滑点、用服务器端的挂单而非本地脚本监测。
小结
- 价格是离散 Tick 跳跃,不会「恰好等于」精确值
- 精确点触发 ≈ 赌 Tick 命中,基本不可靠
- 改用「目标 ±2~3 点区间」+ 时间过滤
- 计划要算进点差与滑点,别只看图表价
- 断线会让价格漂移到任意距离,需容错
常见问题
离散性指价格只出现在按最小变动单位(Tick)排列的离散网格上,不是连续曲线。真实成交价从 1.08498 直接跳到 1.08503,不会经过中间的 1.08500,所以精确值触发条件常落空。
多半是你把触发写成「价格恰好等于某精确值」。价格离散跳跃,很少命中那个唯一点;再加上点差,图表价和你成交的对手价还差着一点。改用「目标 ±2~3 点区间」触发即可。
图表价通常是买/卖之一,而你实际成交在对手价,天然差一个点差;流动性差时还有滑点。计划要把这些算进触发与止损距离,否则回测好看、实盘吃瘪。
本地脚本监测的挂单在断线期间会失效;用券商服务器端的挂单(OCO/止盈止损)更稳。但恢复后价格可能已跳过你的区间,所以计划要留容差、限定交易时段。
面板实时呈现买卖价与点差,并把关键位标注出来,帮你把触发写成带容差的区间,而不是赌精确点。