关于涨跌停板代码的改进讨论

[互助]
设置
13798 32 广陵三少 Lv.7 发表于 · 2021-5-16 19:48 显示全部楼层 正序浏览 |
跳转到指定楼层
1、整理了一下,代码更清晰,比如日期+19000000,显示为20200824更为直观,多年后仍然记得是什么时候改的规则,比DATE>=1200824更易读懂;
2、INBLOCK也可以用CODELIKE或NAMELIKE代替;
3、根据《深圳证券交易所创业板交易特别规定》第2.1条的规定,创业板开始ST后仍然是20%的涨跌幅;
4、其他的比如翘板、炸板、连扳等等,应该比较好拓展了,自己动手改改就好了;

计算原则:以深交所为例,一共以下三句话:
3.3.16 涨跌幅限制价格的计算公式为:涨跌幅限制价格=前收盘价×(1±涨跌幅限制比例)。
计算结果按照四舍五入原则取至价格最小变动单位。
涨跌幅限制价格与前收盘价之差的绝对值低于价格最小变动单位的,以前收盘价增减一个价格最小变动单位为涨跌幅限制价格。
第一句好理解;
第二句A股的最小变动价格是0.01元(基金、债券、债券质押式回购交易的申报价格最小变动单位为0.001元人民币;B股的申报价格最小变动单位为0.01港元。 - -如果适用其他市场按这个来),若有用除以100,再Round;
第三句话A股应该用不到;

所以:

源码如下:(应该是对的,有疑问可以沟通交流)

{涨跌停新源码-三少}
RQ:=IF(DATE+19000000>=20200824,1,0);{2020月8月24日,创业板开始20%涨跌幅,创业板ST开始20%涨跌幅}

KCB:=IF(INBLOCK('科创板'),1,0);
CYB:=IF(INBLOCK('创业板') AND RQ,1,0);
STB:=IF(INBLOCK('ST板块'),1,0);
TSB:=IF(INBLOCK('ST板块') AND CODELIKE('300') AND RQ,1,0);{2020月8月24日创业板ST开始20%涨跌幅}

DT05:=ROUND(REF(C,1)*95)/100;
DT10:=ROUND(REF(C,1)*90)/100;
DT20:=ROUND(REF(C,1)*80)/100;

跌停:=(C<=DT20 AND C=L AND (KCB OR CYB OR TSB)) OR (C<=DT10 AND C=L AND NOT(KCB OR CYB OR TSB))
         OR (C<=DT05 AND C=L AND STB AND NOT(TSB));


ZT05:=ROUND(REF(C,1)*105)/100;
ZT10:=ROUND(REF(C,1)*110)/100;
ZT20:=ROUND(REF(C,1)*120)/100;

涨停:=(C>=ZT20 AND C=H AND (KCB OR CYB OR TSB)) OR (C>=ZT10 AND C=H AND NOT(KCB OR CYB OR TSB))
         OR (C>=ZT05 AND C=H AND STB AND NOT(TSB));

举报

使用道具 扔鸡蛋(0) 回复

王奶奶
Lv.4
发表于 2021-5-29 05:43 复制 查看全部楼层
新规的新问题,需要新的解决办法,值得研究。

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

刘松何柏
Lv.3
发表于 2021-5-29 04:05 复制 查看全部楼层
本帖最后由 刘松何柏 于 2021-5-29 04:09 编辑
麻牯鱼 发表于 2021-5-16 20:34
ST板块的计算系数不是那么好处理---现在是ST,不是以前一直是ST,历史上的非ST时段的计算系数就是错的


还有现在不是ST,历史上被ST的,这些都可以用我上面说的,5.10.20,哪个到了算哪个,超过10的就是20,不然的话超过5的就是10,否则统统算作5就是了。

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

刘松何柏
Lv.3
发表于 2021-5-29 04:01 复制 查看全部楼层
广陵三少 发表于 2021-5-16 22:04
学习了,先全部,再覆盖之前,这样处理思路好

不过原来没ST后来ST的好像不好处理,应该没有什 ...

我的天啊,这么复杂干嘛啊,简简单单多好啊,不就是一个涨跌停吗,5个点是停板,10个点也是停板,20个点也是停板,甚至以后要是规则变了来个30个点40个点不都是停板吗,到了就算,不到不算不就得了

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

小象河谷
Lv.3
发表于 2021-5-29 00:20 复制 查看全部楼层
不错哦,这个才是研究的精神!

举报

使用道具 扔鸡蛋(0) 回复

广陵三少
Lv.7
发表于 2021-5-18 08:52 复制 查看全部楼层
舞蹈K线 发表于 2021-5-18 08:28
比如就是创业板的只显示20%的价格,st的只显示。。。,而不是三个价格同时显现,比较混淆,看起来还要鉴别 ...


根本不会同时显示~

举报

使用道具 扔鸡蛋(0) 回复

舞蹈K线
Lv.0
发表于 2021-5-18 08:28 复制 查看全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

舞蹈K线
Lv.0
发表于 2021-5-18 08:27 复制 查看全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

大虫1
Lv.2
发表于 2021-5-17 19:22 复制 查看全部楼层
如果用于选股,但凡有过复权,那就不准了

举报

使用道具 扔鸡蛋(0) 回复

阿毛微阅读
Lv.2
发表于 2021-5-17 07:56 复制 查看全部楼层
非常实用,刚好对之前的修改使用

举报

使用道具 扔鸡蛋(0) 回复

五祥
Lv.5
发表于 2021-5-16 22:26 复制 查看全部楼层
现在的ST是最不好处理的,好像是从中小板并入主板后开始的

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

谁也不知
Lv.2
发表于 2021-5-16 22:24 复制 查看全部楼层
不仅仅是涨跌停,还要包括小于20cm 大于10cm的涨跌幅

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

圣虎战狼
Lv.5
发表于 2021-5-16 22:11 复制 查看全部楼层
广陵三少 发表于 2021-5-16 22:04
学习了,先全部,再覆盖之前,这样处理思路好

不过原来没ST后来ST的好像不好处理,应该没有什 ...

呵呵,标注的够详细的,是怕小白们不明白么?那个涨跌停是我以前在大智慧上使用的,后来搬到通达信上也能使用,再后来发现同花顺上也能使用。

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

广陵三少
Lv.7
发表于 2021-5-16 22:04 复制 查看全部楼层
圣虎战狼 发表于 2021-5-16 21:18
早几年前就开始使用这个原理了,100%包满意,大智慧、通达信、同花顺,全部通用。

{第4部分(一) :涨跌 ...

学习了,先全部,再覆盖之前,这样处理思路好

不过原来没ST后来ST的好像不好处理,应该没有什么时候ST的函数

{新涨跌停 - 圣虎战狼}
幅度:=IF(INBLOCK('科创板') OR INBLOCK('创业板'),0.2,IF(INBLOCK('ST板块'),0.05,0.1));

涨幅:=REF(CLOSE,1)*(1+幅度);
跌幅:=REF(CLOSE,1)*(1-幅度);

{全涨跌停 - 含科创板以及新ST创业}
涨停:=IF(FRACPART(涨幅*100)>=0.45,(INTPART(涨幅*100)+1)/100,INTPART(涨幅*100)/100);
跌停:=IF(FRACPART(跌幅*100)>=0.45,(INTPART(跌幅*100)+1)/100,INTPART(跌幅*100)/100);
{涨跌停颜色}
STICKLINE(PERIOD=5 AND CLOSE>=涨停,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE>=涨停,CLOSE,OPEN,1.5,0),COLORRED;
STICKLINE(PERIOD=5 AND CLOSE<=跌停,CLOSE,OPEN,3.1,0),COLORFFFF00;
STICKLINE(PERIOD=5 AND CLOSE<=跌停,CLOSE,OPEN,1.5,0),COLORFF0000;

{覆盖处理之前规则的涨跌停}
日期:=IF(DATE+19000000<20200823,1,0);{2020月8月24日,创业板开始20%涨跌幅,创业板ST开始20%涨跌幅}

原涨停:=REF(CLOSE,1)*1.1;
原跌停:=REF(CLOSE,1)*0.9;
涨停1:=IF(FRACPART(原涨停*100)>=0.45,(INTPART(原涨停*100)+1)/100,INTPART(原涨停*100)/100);
跌停1:=IF(FRACPART(原跌停*100)>=0.45,(INTPART(原跌停*100)+1)/100,INTPART(原跌停*100)/100);

{涨跌停颜色 - 覆盖处理}
STICKLINE(PERIOD=5 AND CLOSE>=涨停1 AND INBLOCK('创业板') AND 日期,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE>=涨停1 AND INBLOCK('创业板') AND 日期,CLOSE,OPEN,1.5,0),COLORRED;
STICKLINE(PERIOD=5 AND CLOSE<=跌停1 AND INBLOCK('创业板') AND 日期,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE<=跌停1 AND INBLOCK('创业板') AND 日期,CLOSE,OPEN,1.2,0),COLOR00FF00;

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

圣虎战狼
Lv.5
发表于 2021-5-16 21:18 复制 查看全部楼层
早几年前就开始使用这个原理了,100%包满意,大智慧、通达信、同花顺,全部通用。

{第4部分(一) :涨跌停颜色}
FUDU:=IF(INBLOCK('科创板') OR INBLOCK('创业板'),0.2,IF(INBLOCK('ST板块'),0.05,0.1));
ZHANGTING:=REF(CLOSE,1)*(1+FUDU);
DIETING:=REF(CLOSE,1)*(1-FUDU);
涨停:=IF(FRACPART(ZHANGTING*100)>=0.45,(INTPART(ZHANGTING*100)+1)/100,INTPART(ZHANGTING*100)/100);
跌停:=IF(FRACPART(DIETING*100)>=0.45,(INTPART(DIETING*100)+1)/100,INTPART(DIETING*100)/100);

ZHANGTING1:=REF(CLOSE,1)*1.1;
DIETING1:=REF(CLOSE,1)*0.9;
涨停1:=IF(FRACPART(ZHANGTING1*100)>=0.45,(INTPART(ZHANGTING1*100)+1)/100,INTPART(ZHANGTING1*100)/100);
跌停1:=IF(FRACPART(DIETING1*100)>=0.45,(INTPART(DIETING1*100)+1)/100,INTPART(DIETING1*100)/100);
STICKLINE(ISLASTBAR,CLOSE,IF(CLOSE>OPEN,涨停,跌停),2.5,-1),COLORYELLOW;
DRAWNUMBER(ISLASTBAR AND CLOSE>OPEN,涨停,涨停),COLOR808080,DRAWABOVE;
DRAWNUMBER(ISLASTBAR AND CLOSE<OPEN,跌停,跌停),COLOR808080;
{第4部分(二) :涨跌停颜色}
STICKLINE(PERIOD=5 AND CLOSE>=涨停,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE>=涨停,CLOSE,OPEN,1.5,0),COLORRED;
STICKLINE(PERIOD=5 AND CLOSE<=跌停,CLOSE,OPEN,3.1,0),COLORFFFF00;
STICKLINE(PERIOD=5 AND CLOSE<=跌停,CLOSE,OPEN,1.5,0),COLORFF0000;
STICKLINE(PERIOD=5 AND CLOSE>=涨停1 AND INBLOCK('创业板') AND DATE<1200823,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE>=涨停1 AND INBLOCK('创业板') AND DATE<1200823,CLOSE,OPEN,1.5,0),COLORRED;
STICKLINE(PERIOD=5 AND CLOSE<=跌停1 AND INBLOCK('创业板') AND DATE<1200823,CLOSE,OPEN,3.1,0),COLORYELLOW;
STICKLINE(PERIOD=5 AND CLOSE<=跌停1 AND INBLOCK('创业板') AND DATE<1200823,CLOSE,OPEN,1.2,0),COLOR00FF00;

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

云帆45
Lv.4
发表于 2021-5-16 21:01 复制 查看全部楼层
感谢三少分享!

举报

使用道具 扔鸡蛋(0) 回复

ainin
Lv.5
发表于 2021-5-16 20:40 复制 查看全部楼层
用INBLOCK和CODELIKE或NAMELIKE的结果有非常细微的差别。

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

不惑年代
Lv.4
发表于 2021-5-16 20:39 复制 查看全部楼层
本帖最后由 不惑年代 于 2021-5-16 22:40 编辑

11111111111111

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

ainin
Lv.5
发表于 2021-5-16 20:38 复制 查看全部楼层
CODELIKE 与 INBLOCK 的用时比较

测试条件:通达信金融终端V2020.06,所有A股,1990.01.01~2021.05.15

TJ:=IF(CODELIKE('688') OR CODELIKE('300'),1,0);
XG:TJ AND C>O*1.05;
{用时5.59s}

TJ:=IF(INBLOCK('科创板') OR INBLOCK('创业板'),1,0);
XG:TJ AND C>O*1.05;
{用时20.09s}

举报

使用道具 点亮(5) 扔鸡蛋(0) 回复

非得已
Lv.2
发表于 2021-5-16 20:35 复制 查看全部楼层
麻牯鱼 发表于 2021-5-16 20:34
ST板块的计算系数不是那么好处理---现在是ST,不是以前一直是ST,历史上的非ST时段的计算系数就是错的

这确实是一个问题,在回测的时候经常遇到,暂无好办法

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

舞蹈K线
Lv.0
发表于 2021-5-16 20:35 复制 查看全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报

使用道具 扔鸡蛋(0) 回复

麻牯鱼
Lv.5
发表于 2021-5-16 20:34 复制 查看全部楼层
ST板块的计算系数不是那么好处理---现在是ST,不是以前一直是ST,历史上的非ST时段的计算系数就是错的

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

广陵三少
Lv.7
发表于 2021-5-16 20:18 复制 查看全部楼层
舞蹈K线 发表于 2021-5-16 20:04
这是选股还是主图用的?还是副图

都行,上面本没有输出
比如Drawicon(涨停,XXX,XX),就是在XXX位置画个XX图标

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

广陵三少
Lv.7
发表于 2021-5-16 20:16 复制 查看全部楼层
非得已 发表于 2021-5-16 20:14
不用ZTPRICE或者DTPRICE么?

也行 我故意整细一点,原理说清楚改改也能用在同花顺上,毕竟公式有区别

举报

使用道具 点亮(1) 扔鸡蛋(0) 回复

广陵三少
Lv.7
发表于 2021-5-16 20:15 复制 查看全部楼层
最后完成 发表于 2021-5-16 20:07
请问 星期五连板票怎么写?

周三周四周五都板

Every(板,3) and WEEKDAY=5;

应该是这样的~~ 没测试

举报

使用道具 点亮(0) 扔鸡蛋(0) 回复

非得已
Lv.2
发表于 2021-5-16 20:14 复制 查看全部楼层
不用ZTPRICE或者DTPRICE么?

举报

使用道具 扔鸡蛋(0) 回复

逗阳yc
Lv.4
发表于 2021-5-16 20:08 复制 查看全部楼层
感谢三少分享,赞一个!

举报

使用道具 扔鸡蛋(0) 回复

最后完成
Lv.4
发表于 2021-5-16 20:07 复制 查看全部楼层
请问 星期五连板票怎么写?

举报

使用道具 扔鸡蛋(0) 回复

陈明山
Lv.4
发表于 2021-5-16 20:06 复制 查看全部楼层
好东西!!!!!!!111111111111111111

举报

使用道具 扔鸡蛋(0) 回复

舞蹈K线
Lv.0
发表于 2021-5-16 20:04 复制 查看全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报

使用道具 扔鸡蛋(0) 回复

周围冲
Lv.4
发表于 2021-5-16 20:00 复制 查看全部楼层
感谢老师的精彩分享!老师辛苦了!

举报

使用道具 扔鸡蛋(0) 回复

您需要登录后才可以回帖 登录

本版积分规则 《理想财富服务协议》《免责声明》

站长推荐 关闭 上一条 /6 下一条
回顶部 到页底
快速回复 返回顶部 返回列表