小议“缠论”的那些事儿(一)

江丰鱼   2023-03-26 22:55:50

依据网友的思路需求,本文简单探讨了DRAWGBK_DIV函数的应用。


(资料图片)

当在评论区见到该条网友的留言,脑海中首先闪现的就是实现“缠论”的算法,请看留言的截图:

网友的留言

网友留言的思路需要是:

取过去的高点; 再取最近的低点; 连线最少包含5根k线用框框住。

(一)、思路步骤:

1.为了更快捷与方便,文中算法依然采用了软件中最常用的峰、谷函数方法来实现需求;

2.由于峰谷函数自身的属性,决定了基于该思路下的算法输出带有瑕疵(角度线输出有漂移);

3.计算峰谷所在的位置,这是算法建立时用到峰谷函数时永恒不变的“先手棋”;

4.确定相邻峰谷之间的距离间隔,这是本算法的“棋眼”;

5.应用BACKSET函数进行区间赋值,为后续的画框输出提供前置条件;

6.应用DRAWGBK_DIV函数输出框线;

7.画对角线(本文算法有漂移,因为没有对无效峰位进行筛选与过滤的原因)。

(二)、算法的建立过程:

1.计算峰位与谷位

TE:=PEAKBARS(1,转向比,1);

TB:=TROUGHBARS(2,转向比,1);

2.相邻峰谷之间的数据间隔个数

TB0TE:=IF(TB=0,TE,DRAWNULL);

3.条件限定,TB0TE<=10中的数字10可以任意修改,并不小于4

TE0TJ:=TB0TE>=4 AND TB0TE<=10 AND TE=0;

TB0TJ:=TB0TE>=4 AND TB0TE<=10 AND TB=0;

4.本文采用BACKSET函数进行置数处理,限定画框的范围限定

FW:=BACKSET(TB0TJ=1,TB0TE+1);

5.画框线

DRAWGBK_DIV(FW=1,RGB(123,123,123),RGB(123,123,123),2,1);

6.画对角线REB(注:“REB”名称的直线在之前的文章有专述,且为固定算式。)

TEH:=IF(TB0TJ,REF(H,TB0TE),DRAWNULL);

TBL:=IF(TB0TJ,L,DRAWNULL);

EHBL:DRAWLINE(TE0TJ,H,TEH>TBL AND TB0TJ,L,0),COLORGRAY;

(三)、主图标注的完整代码:

代码流程

TE:=PEAKBARS(1,转向比,1);

TB:=TROUGHBARS(2,转向比,1);

TB0TE:=IF(TB=0,TE,DRAWNULL);

TE0TJ:=TB0TE>=4 AND TB0TE<=10 AND TE=0;

TB0TJ:=TB0TE>=4 AND TB0TE<=10 AND TB=0;

FW:=BACKSET(TB0TJ=1,TB0TE+1);

DRAWGBK_DIV(FW=1,RGB(123,123,123),RGB(123,123,123),2,1);

TEH:=IF(TB0TJ,REF(H,TB0TE),DRAWNULL);

TBL:=IF(TB0TJ,L,DRAWNULL);

EHBL:DRAWLINE(TE0TJ,H,TEH>TBL AND TB0TJ,L,0),COLORGRAY;

(四)、主图标注效果示意图:

最后的效果示意图

写在最后:本文的续篇,会让人看到作者没有完成的部分,如果你有兴趣,记得来看看热闹。

热文榜单