- Published on
Intersection Value Functions
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
在技术分析中,均线金叉死叉是最常见的信号。许多交易者只关心“是否交叉”,却很少问“在什么价位交叉”。这个看似简单的问题,其实隐藏着更精确的操盘信息。公开交易社区作者 alexgrover 提供的“Intersection Value Functions”(交叉点数值计算函数),正是为解决这个问题而生的。本文从公开说明开始,逐层剖析这套函数的逻辑、优缺点以及实战价值。
策略解读
这套函数的核心,可以用一个生活场景类比:两个人从不同方向出发,最终到达同一个地点。如果我们只记录“他们相遇了”,显然不够;更关键的是“他们在哪里相遇”。对于两条指标线来说,“在哪里相遇”就是交叉点对应的价格或指标数值。
在K线图上,交叉是逐根K线被观察到的。一根K线结束后,系统比较两根K线收盘时的状态。例如,快速均线在前一根K线低于慢速均线,而当前K线高于慢速均线,那么说明发生了“上穿”(crossover)。反过来,如果从上方变为下方,则是“下穿”(crossunder)。无论是上穿还是下穿,传统的判断逻辑只会告诉我们“是”或“否”,而不会告诉我们两条线在哪个具体数值上相交。
作者把“求交点”拆成三个精细的函数:
- 第一个函数处理“任意交叉”,不分方向,只要两条线撞在一起,就返回交点值;
- 第二个函数只处理“上穿”的情况;
- 第三个函数只处理“下穿”的情况。
这样做的好处是:使用者可以根据自己的需求,选择是在所有交叉发生时都拿到交点值,还是只在做多信号(上穿)或做空信号(下穿)时拿到交点值。逻辑上更清晰,也避免了同一段计算在不同地方重复出现。
从计算原理上看,在离散的K线数据中,我们并不知道两根K线之间的价格路径。为了估算交点值,最通用的做法是“线性插值”:假设两条线在相邻K线收盘之间都是直线变化,那么两条线段若能相交,就存在一个唯一的时间比例 t,使得两条线在该时刻相等。只要解出 t,再回代到其中一条线上,就能得到交点值。这本质上是一个“线段求交”的几何问题,只不过横轴不是价格而是时间或K线索引,纵轴是价格/指标值。
这套函数之所以被许多人认为是实用的“基础设施”,是因为它把“方向判断”和“数值定位”结合在了一起。很多策略在发现金叉时,连“金叉发生在哪个价位”都不知道,只能模糊地以当前收盘价或开盘价作为参考。有了交点值,交易者就可以更加具体地描述:价格在某一水平附近发生转换,该水平可能成为后续的支撑/阻力,也可能是理想的突破进场点。
名词解释
- 交叉值(Intersection Value):两条序列在交叉时刻的纵坐标,通常是价格或指标值,是“交叉点”的数值体现。
- 两条序列(Two Series):由时间顺序排列的两组数据,例如收盘价序列与移动平均线序列,或者快速均线序列与慢速均线序列。
- 上穿(Crossover):第一条序列从下方向上穿越第二条序列的状态变化,常被视为看涨信号。
- 下穿(Crossunder):第一条序列从上方向下穿越第二条序列的状态变化,常被视为看跌信号。
- 线性插值(Linear Interpolation):在已知两个数据点之间画一条直线,并利用这条直线估算中间任意一点数值的方法。这是本函数估算交点值的基础。
- 无未来函数(Repainting-free):指标或函数只使用当前及之前已经确认的数据,不引入未来信息,因此历史信号的显示不会在未来被修改。
- 回测(Backtest):使用历史数据模拟运行交易规则,以评估策略表现的过程。
- 噪声(Noise):市场中的随机波动,可能使两条线频繁交叉,产生不具可持续性的虚假信号。
策略思路讲解
“Intersection Value Functions”并不是一个完整的交易策略,而是一组“策略零部件”。如果把策略比作一台机器,那么这些函数就是螺丝和齿轮。它们可以被嵌入到多种策略逻辑中。
最常见的使用方式是“双均线交叉系统”。选一条短周期均线(如10日)和一条长周期均线(如30日)。当短均线上穿长均线时,常规做法是“做多”。但做多之后,止损应该放在哪里?很多人会随便放在近期低点,或者用固定百分比。实际上,刚才的交叉点就是一个很好的参考位:既然价格在那一点从弱转强,那么如果价格重新回到该点下方,说明上穿失败,应该离场。这样,交叉点值就成为了一个客观的止损参考。
另一个应用是“突破确认”。假设两条线的交叉点值为 P。当上穿发生时,价格实际上不一定正好等于 P。如果当前收盘价明显高于 P,说明向上突破力度较强;如果仅仅贴着 P,甚至相差不到0.1%,则说明突破可能乏力。这个差值可以作为“突破强度”的度量。
在副图指标中,这套函数同样有用。例如,MACD柱状线与其信号线发生交叉时,可以调用这些函数求出MACD指标在交叉时的数值,再结合股价位置进行过滤。如果交叉时MACD数值仍处于高位,说明趋势延续的可能性较大;如果MACD数值刚刚从负值翻到零轴附近,则需要更多等待。
从信号时机看,交叉值函数依赖于“当前收盘价”与“上一根收盘价”的比较。当一根K线收盘后,交叉事件被确认,函数计算出交点值。这意味着信号天然滞后于盘中的真实交叉,但对于逐日或按周运行的中低频策略来说,这种滞后完全可以接受。对于日内高频交易,则需要利用盘中实时数据或更短周期来处理。
这套函数最巧妙的地方在于:它将一个“布尔事件”(是否交叉)转化为“数值事件”(在哪里交叉)。在量化系统中,布尔值只能触发判断,而数值可以参与仓位计算、止损设置、水平线绘制、信号强度评分等更多操作,极大增强了系统的表达能力。
优点
- 定位精确,告别“只知方向不知价格”。传统交叉信号只是告诉你“金叉了”,而这套函数可以告诉你“金叉发生在哪个价位”。这对实盘执行非常重要。
- 逻辑清晰,容易验证。函数基于最简单的几何相交原理,不涉及黑箱模型。交易者可以手工画图验证,也可以回测验证,不容易产生过度拟合。
- 通用性强,适配多种数据源。无论 source1 和 source2 是价格与均线、两条均线、MACD线与信号线、RSI与超买线,函数都能按照同样逻辑求出交点值。
- 模块化设计,按需使用。把“交叉”“上穿”“下穿”拆成三个函数,开发者可以独立调用,逻辑更清晰,也便于维护。
- 计算效率高。整个过程只需几个基础算术和判断操作,几乎没有性能负担,适合在多个品种、多个周期上并行使用。
- 无未来函数,适合回测。在收盘K线上,函数使用的数据均已完成,不会产生未来数据的重绘问题,因此回测结果具有可信度。
缺点
- 线性假设与真实价格路径不符。两根K线之间的价格可能是震荡、跳空或非线性的。线性插值只是一种近似,尤其在大幅跳空时,计算出的交点值可能与实际盘中的交叉价格相差较大。
- 收盘后确认导致滞后。函数是在K线收盘后,根据收盘价序列判断交叉的。如果盘中已经发生多次穿越,收盘后的结果可能漏掉关键信息,信号相对迟钝。
- 对噪声敏感,误信号多。在横盘震荡市,均线或指标线会频繁、琐碎地交叉。每次交叉都给出一个交点值,但这些值往往没有实际意义,容易让交易者频繁交易、亏损手续费。
- 不是完整策略。它没有回答“是否入场”“何时离场”“仓位多少”“止损止盈怎么设”等问题。如果使用者只看到“交叉值”就下结论,很容易忽略风险控制。
- 交点值可能为极端值。当两条线斜率接近时,交点可能位于很远的位置,甚至超出K线范围。如果直接当作支撑/阻力,可能产生误导。
起源年份考证
“两条技术指标线相交时,其交点具有信息价值”这一思路,属于“交叉分析”这一大类型方法。严格考证到具体发明者与发明日期十分困难,目前无法确定唯一的原始出处。但根据可查的技术分析史料,可以整理出以下时间线:
- 20世纪40年代至60年代:移动平均线开始在股票市场中得到系统性应用。道氏理论强调平均线对趋势的确认作用,交叉被视为趋势变化的重要线索。当时的交易者通常依靠眼力在图纸上标注交叉位置,尚无精确计算工具。
- 20世纪70年代至80年代:个人计算机进入金融领域,一些交易软件开始内置移动平均交叉判断逻辑。但这时期逻辑大多返回“上穿/下穿”的判断结果,很少返回具体的交点数值。
- 20世纪90年代:随着电子表格和数学分析软件普及,量化爱好者更习惯用数学方式处理数据。线性插值求交点成为一种常见的信号处理手段,但应用较为零散,尚未形成统一命名。
- 21世纪初:互联网交易社区兴起,脚本化指标编辑器逐渐流行。开发者们开始编写自定义“交叉值”函数,并在公开社区分享。这类函数逐渐成为技术分析工具库中的常见成员。
- 2020年代:公开交易社区举办的首届编程竞赛,明确要求参赛者提供三个交叉值函数,最终该方案荣获冠军。这标志着“求交叉值”已经从个人技巧演变为社区公认的公共需求。
需要说明的是,以上时间线描述的是“该类方法”的演变,而不是针对 alexgrover 这一个脚本的精确发布年份。若要考证后者,应以作者发布页面记载的日期为准,本文不做无依据推测。
改进建议
- 增加有效性过滤器。在调用交叉值函数前,可以先判断两条线的“扩散速度”或“交叉角度”。例如,只有当前收盘价与交点值的距离大于平均波动幅度的一定比例时,才认为信号有效,从而过滤掉贴近纠缠的弱交叉。
- 引入最高价/最低价序列。除了收盘价,还可以将最高价、最低价作为数据组成部分,计算出交叉可能发生的价格区间。这样一来,得到的不是一个单点,而是一个“交叠区域”,更贴近真实的成交价格带。
- 结合更低周期数据。如果数据支持,可以用分钟级甚至秒级K线代替日线来计算交点,降低线性插值的误差。对于某些快速交叉,日线收盘后的判断过于迟钝,而低周期数据能够捕捉到盘中更准确的交汇时间。
- 输出“交叉质量”指标。可以在函数内部同时记录两条线在交叉前后的差值变化、交叉时的斜率等信息。这些数据可以帮助后续决策判断交叉的“力度”,而不仅仅是一个数值。
- 自动绘制动态水平线。将交点值以水平线的方式延伸到未来若干根K线,并观察价格是否回踩该水平线。若价格在该水平附近获得支撑/受阻,可作为二次确认信号。
- 在回测中纳入滑点成本。如果假设以交点值成交,需要额外增加合理的滑点与手续费。因为实际订单执行不可能刚好全部成交在精确交点上,尤其在跳空市场中,成交价可能与交点值差距很大。
- 多周期共振。将同一套逻辑应用到周线、日线和小时线,并要求它们发出的交叉方向一致。当多个周期在同一次交叉中给出相似的交叉值区间时,信号的稳定性会显著提高。
总结
“Intersection Value Functions”虽然只是一组函数,却代表了一种很重要的量化思维:把形态信号转化为数值信号。交叉是技术分析中最古老的信号之一,而精确求交叉值却是许多初学者忽略的细节。借助这套函数,交易者可以更清晰地知道“两条线在哪里相遇”,从而更客观地设置进场参考和止损参考。
当然,工具再精巧也无法替代完整的风险控制和趋势判断。线性假设、噪声干扰、收盘确认的延迟,都是它在实战中必须面对的局限。改进建议的目的,并不是推翻这套函数,而是让它在更复杂的市场环境中发挥更大价值。无论你是手动交易者还是量化爱好者,理解“交叉值”这一概念,都会让你的K线分析多一个维度,少一分模糊。这正是好的交易函数给人的启发:在一个熟悉的问题里,挖掘出别人忽略的精确答案。