依据网友的思路需求,本文简单探讨了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;
(四)、主图标注效果示意图:
最后的效果示意图
写在最后:本文的续篇,会让人看到作者没有完成的部分,如果你有兴趣,记得来看看热闹。