飞狐版N日K线涨跌幅限制为M的K线画法
简单说明: 涨跌幅在百分之M的N日K线合并画法,调整参数 XK 可以设置合并K线的数量(建议设置为奇数,为偶数时所画K线可能会有点点偏差,因为确定中点向后错了一位,但高、低、开、收不错),调整M设置限制区间涨跌幅,小于区间涨跌幅的不画出,M设为0表示不设置限制涨跌幅,只按XK区间合并K线画出。(注:合并K线的画法是从上市起向后推移合并,故最后一组合并K线可能会有不足XK设置数的情况,但仍然按一组K线画出。遇到少于XK一半的,高低按简单画法画出)
针对答疑区的提问,可以把XK设为5『指标中已经把参数默认为5』,把 M 设为0『表示不统计N日涨跌幅显示条件』-----即每5天一组K线的合并画图,以前在网上见过 知无不言(cwy) 有相关的类似公式指标,通过调整参数也可以画多日线K线『和飞狐的多日线系统显示方式一样,而非叠加在日线背景』
发现一点瑕疵,请把一楼源码中 符合条件:处改为~
符合条件:BACKSET(末点 AND (C/REF(C,BARSLAST(起点)+1)-1)*100>=M OR (C/REF(C,BARSLAST(起点)+1)-1)*100<=-M,ZQ+1),LINETHICK;
就是在M和-M 前面加个等号
解释因为加入了周六和周日倒像是自然日数据,那么用飞狐的自然日坐标应该可以了。
源码
{N日K线,涨跌幅大于百分之M的合并K线画法-飞狐版-参数:XR(1,100,1);合并数:XK(1,100,9); 限制涨跌幅: M(0,9999,3)}
INPUT:XR(1,1,100),XK(5,1,100),M(3,0,9999);
界限:=FRACPART(BARSCOUNT(CLOSE)/XK)=0 OR BARSCOUNT(CLOSE)=1;
周期:IF(BARSCOUNT(CLOSE)<=XK,BARSLAST(BARSCOUNT(CLOSE)=1)+1,REF(BARSLAST(界限)+1,1)),LINETHICK;
起点:周期=1,LINETHICK; 末点:周期=XK OR ISLASTBAR,LINETHICK;
ZQ:=BARSLAST(起点),LINETHICK;
符合条件:BACKSET(末点 AND (C/REF(C,BARSLAST(起点)+1)-1)*100>M OR (C/REF(C,BARSLAST(起点)+1)-1)*100<-M,ZQ+1),LINETHICK;
P:=DATACOUNT;
XXK:=IF(SUMBARS(起点,1)<XK,ZQ[P]+1,XK);
XH:SETVAL(末点,HHV(H,XXK),-(XXK-1),HHV(H,XXK)),LINETHICK;
XL:SETVAL(末点,LLV(L,XXK),-(XXK-1),LLV(L,XXK)),LINETHICK;
XO:SETVAL(末点,REF(O,XXK-1),-(XXK-1),REF(O,XXK-1)),LINETHICK;
XC:SETVAL(末点,C,-(XXK-1),C),LINETHICK;
CURRBARSCOUNT:=P-BARPOS+1;
{最后一段周期小于XK/2的画K}
{STICKLINE(CURRBARSCOUNT<XR+FLOOR(XK/2) AND 周期<9 AND 符合条件,XH,XL,4.5,0),COLOR393939;}
STICKLINE(CURRBARSCOUNT<XR+FLOOR(XK/2) AND 周期<9 AND XC>XO AND 符合条件,XH,XL,12,0),COLORC080FF;
STICKLINE(CURRBARSCOUNT<XR+FLOOR(XK/2) AND 周期<9 AND XC<XO AND 符合条件,XH,XL,12,0),COLOR404000;
STICKLINE(CURRBARSCOUNT<XR+FLOOR(XK/2) AND 周期<9 AND XC>XO AND 符合条件,XO,XC,12,0),COLORYELLOW;
STICKLINE(CURRBARSCOUNT<XR+FLOOR(XK/2) AND 周期<9 AND XC<XO AND 符合条件,XO,XC,12,0),COLORBLUE;
{标准画K法}
STICKLINE(ZQ+1=XR+FLOOR(XK/2) AND 符合条件,XH,XL,XK*9,0),COLOR393939;
STICKLINE(ZQ+1=XR+FLOOR(XK/2) AND XC>XO AND 符合条件,XH,XL,XK*2.6,0),COLOR000059;
STICKLINE(ZQ+1=XR+FLOOR(XK/2) AND XC<XO AND 符合条件,XH,XL,XK*2.6,0),COLOR591100;
STICKLINE(ZQ+1=XR+FLOOR(XK/2) AND XC>XO AND 符合条件,XO,XC,XK*9,0),COLOR000059;
STICKLINE(ZQ+1=XR+FLOOR(XK/2) AND XC<XO AND 符合条件,XO,XC,XK*9,0),COLOR591100;
{重画K线}
KLINE(O,H,L,C,0);
{5日均线}
M5:MA(C,5),PRECISION2,COLORYELLOW;