点亮技能树!基于跨周期数据引用实现三重滤网交易系统

发布于: 雪球转发:0回复:0喜欢:0

众所周知,“顺大逆小” 是趋势交易的重要原则。在之前三重滤网交易系统的相关文章中也对相关原则做过详细的介绍。

但当时受限于富途自身并没有像通达信那样可以基于“#”语法实现小周期对大周期数据的引用,因此并没有编写对应的指标。

现在偶然的一个机会,群友问能不能实现月维度数据在日 K 上显示,这其实和三重滤网一样,也是小周期引用大周期的问题,所以想当然的说不能。

但这人啊,一般都架不住被别人戴高帽,群友一句“相信你的能力”,感觉就有点被逼上梁山了。结果没想到,稍加思考之后,发现其实也没那么复杂,即使不能像通达信那样直接调用大周期数据,也可以通过其它方法获取到大周期的数据。能获取到数据,那剩下的问题其实也就简单了。

其实这里面有两个关键点: 一是要在小周期级别下找到大周期的起点和终点,二是要保证在同一个大周期下的小周期获取到的都是相同的数据。 解决掉这两点后,跨周期引用数据的问题也就迎刃而解。

具体的规则和重点,可以参见之前的文章。

技术指标在交易系统中的综合运用

当然,也可以直接去看原书-《以交易为生》。这里主要是举例来演示实现跨周期引用数据后,指标可以做成什么样子。

周线数据

首先来看周线数据。

原有策略中是根据周线的 EMA 和 MACD 来判断趋势: 同时上涨为红色,同时下跌为绿色,否则为蓝色,这就是所谓的动力系统。用来识别大趋势-红色时不做空,绿色时不做多。

数据获取

其实要说也简单,获取当前日期属于一年的第几周,对于同一周内的每一个 K 线而言,值都相同。那么,当前数值与上一个数值不一致时就是一周的起点,下一个这种时间节点往前退一天就是一周的终点。

有了起点和终点,就可以获取这段时间范围内的最高值、最低值,也就是对应周 K 线的最高、最低,而起点的开盘价和终点的收盘价,也就是对应周 K 线的开盘、收盘。

这是一种比较容易理解的处理逻辑,当然,还可以借助一些特殊的函数以更便捷的方式获取。

数据计算

有了数据,接下来就需要按照均线算法的处理逻辑进行加工。

上一步获取到的数据有一个问题:即同一周内每根 K 线获取到的周线数据(OHLC)比如是相同的,那么如果直接使用 MA、EMA 的话就会因为有重复数据而导致计算结果不准确。

所以这里还需要先对数据做去重处理。

显然,通达信和富途并没有像 SQL 一样的 DISTINCT 函数。那么就需要采用一些特殊的处理方法,比如,只对一周内的第一根 K 线取数,其它都置为零。

即使做了数据清洗,受限于指标脚本语言的表达能力,在计算 MA、EMA 时仍然存在困难。因为此时参与计算的周期数与小周期相对应。

假设连续四周都没有假期,那么四周的日 K 会有 20 根,此时在日 K 上想求周线的 EMA(C, 4),即使能获取到每周的收盘价,但时间周期应该是多少呢?

所以这里可以使用一种变通的方式:直接使用均线算法来计算对应的数值。

数据验证

对于 EMA 算法,因为涉及到对历史数据的计算,如果想计算的数值准确,那么需要多往前取一些周期。

但对于三重滤网来说,周线级别的数据主要是用来判断趋势,所以这里偷个懒,直接使用 MA 算法来代替。但毕竟EMA要快一些,所以换成MA算法后可以把周期数适当减少,以提高其敏感性。

日线数据

有了周线数据,对日线数据的应用就简单了许多。直接基于周线数据识别趋势,然后根据趋势的状态对日线数据加以不同的颜色进行区分。

比如可以这样:日线趋势与周线趋势不一致时,K 线使用浅色;一致时,K 线使用深色。这样就可以直接根据 K 线颜色来判断是否可以进场,做多做空一目了然。

最终效果

英伟达作为示例

指标源码