另类的过滤算法|新视野

无论有多忙,当看到评论区网友那天马行空的奇思妙想,总会让人升腾起无尽的力量,一定要实现算法的建立,请看留言:

网友的留言


(资料图)

网友留言的思路是: 7天内有6天收盘价创出新高---出现单根阴线时过滤掉仍然视同为7连阳,建立筛选算法。

思路步骤:

简单理解,当前的七个收盘数据存在有六个“连续”向上; 输出收盘价格线; 输出“日前的”收盘价格线; 题目里的思路所需要达到的空间性质,请见如下示意图: 上图中的“所需要”的空间位置,使用反过来的 排除法 ,允许有一个交易日不成立:

如果第6个数据的收盘价相对第7个数据的收盘价是向上的,那么上图中最近5个数据中的三条线最多只能有一个交易日出现交叉;

2.如果第6个数据的收盘价相对第7个数据的收盘价是向下的,那么上图中最近5个数据中的三条线不存在交叉;

3.我们只需要使用COUNT函数,限定7个数据中

a.如果第6个数据的收盘价相对第7个数据的收盘价是向上的

三条线发生交叉的次数小于等于1或者不交叉的次数>=4(或者等于5)即可;

b.如果第6个数据的收盘价相对第7个数据的收盘价是向下的

三条线发生交叉的次数小于等于1或者不交叉的次数等于5即可。

本文选用“不交叉”也即“C>REF(C,1)>REF(C,1=2)”的空间序列来建立思路。

算法建立

1. 输出收盘价格线;输出“1日前的”收盘价格线;输出“2日前的”收盘价格线;

七个收盘线:=IF(CURRBARSCOUNT<=7,C,DRAWNULL);

六个收盘线:=IF(CURRBARSCOUNT<=6,REF(C,1),DRAWNULL);

五个收盘线:=IF(CURRBARSCOUNT<=5,REF(C,2),DRAWNULL);

2. 如果第6个数据的收盘价相对第7个数据的收盘价是向上的

REF(七个收盘线,5)>REF(六个收盘线,5)

COUNT(RANGE(六个收盘线,五个收盘线,七个收盘线)=1,5)>=4

3. 如果第6个数据的收盘价相对第7个数据的收盘价是向下的

REF(七个收盘线,5)

COUNT(RANGE(六个收盘线,五个收盘线,七个收盘线)=1,5)=5

完整代码

代码流程

七个收盘线:=IF(CURRBARSCOUNT<=7,C,DRAWNULL);

六个收盘线:=IF(CURRBARSCOUNT<=6,REF(C,1),DRAWNULL);

五个收盘线:=IF(CURRBARSCOUNT<=5,REF(C,2),DRAWNULL);

REF(七个收盘线,5)>REF(六个收盘线,5) AND COUNT(RANGE(六个收盘线,五个收盘线,七个收盘线)=1,5)>=4 OR

REF(七个收盘线,5)

{题目:7天内有6天收盘价创出新高---出现单根阴线时过滤掉仍然视同为7连阳,建立筛选算法。}

关键词: 收盘价格 小于等于 创出新高

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it