通达信BETWEEN与RANGE有什么区别?含等号边界、上下限顺序与选股排错

BETWEEN与RANGE端点和顺序比较的原创示意,非软件截图
原创区间判断示意,非通达信客户端截图。

发布日期:2026年10月15日。区间选股漏掉刚好等于上限的数值,或者两条边界交叉后突然没有结果,先检查是否把BETWEEN和RANGE当作同义词。官方定义中,BETWEEN包含两个端点且允许两边顺序交换;RANGE要求严格大于B、小于C。

适用环境:支持这两个函数的通达信公式编辑环境。依据官方用户红宝书,以下代码和真值表为原创教学示例,未做具体客户端实测。数字只演示布尔条件,不构成价格范围、个股选择或买卖建议。

一、含等号与不含等号是明确差别

BETWEEN(A,B,C)在B≤A≤C或C≤A≤B时返回1,否则返回0;RANGE(A,B,C)在B<A<C时返回1,否则返回0。先写清业务条件是否包含端点,再选函数,不能凭“介于”两个字猜测。

CLOSED:BETWEEN(CLOSE,10,12);
OPENED:RANGE(CLOSE,10,12);

这里把同一输入和同一上下限分别送入两个函数,为的是隔离边界差异。不要同时改变周期、复权或输入字段,否则无法判断是哪一项导致结果不同。

二、固定上下限先测试端点

以下假设B=10、C=12,选择低于下限、等于下限、内部、等于上限和高于上限五种输入。数字均为原创模型,不对应实际行情。

A BETWEEN(A,10,12) RANGE(A,10,12)
9 0 0
10 1 0
11 1 1
12 1 0
13 0 0

如果目标写的是“至少10且不超过12”,RANGE就会漏掉10和12。若目标是“超过10且小于12”,BETWEEN又会把两个端点纳入。先用这五个测试值核对,再加入复杂筛选。

三、边界顺序交换时结果不同

把输入设为11,两边写成12和10,BETWEEN(11,12,10)仍为1,因为它包含反向闭区间;RANGE(11,12,10)为0,因为12<11<10不成立。RANGE不会自动把两边整理为从小到大。

当B、C来自两条会交叉的序列时,这个区别尤其重要。如果业务本意是“处于两条线之间”,先确定是否允许交换以及是否含等号;若明确要有序的严格区间,可在已确认数据有效的前提下,用MIN和MAX整理上下界,但要记录这已改变原来的条件定义。

四、上下限相等与小数显示分别排查

在有效实数模型中,B=C=10时,BETWEEN(10,10,10)为1,RANGE(10,10,10)为0;后者不存在严格内部。不要用“区间宽度为零”便认定两个函数都会返回0。

界面显示10.00不代表底层恰好为10。输入若为9.9996、边界为10,显示舍入后看似相等,实际仍低于边界。排错时保留足够精度,不通过随意添加容差来掩盖原始数据差异;需要容差必须先给出明确规则。

五、放回选股前保留最小诊断输出

  1. 写下是否包含端点、是否允许两边顺序交换。
  2. 单独核对A、B、C的单位、有效性、周期和复权。
  3. 跑固定数值的五点真值表,再单独检查反向边界与相等边界。
  4. 换成实际序列后,保存边界附近的完整数值,不只保留四舍五入显示。
  5. 最后才合并AND、OR或IF条件,并按选股公式要求保留合适的最终输出。

无效值和缺失数据的返回行为不能从本篇有效实数表外推。条件成立只代表满足已定义的数学关系,不保证上涨概率或收益,也不证明完整指标没有其他数据风险。

来源与相关教程

原始依据为通达信用户红宝书《通达信公式-全部函数.docx》的BETWEEN和RANGE条目,未实测客户端。入口见通达信教程中心,配套阅读条件选股与周期设置、IF条件分支与输出、舍入与显示精度区别。