找回密码
 立即注册

QQ登录

只需一步,快速开始

广告载入中...
查看: 1538|回复: 33

学习1个月,开发了量学指标通达信主副图指标

[复制链接]
发表于 2025-10-6 18:01 | 显示全部楼层 |阅读模式
9月底受伤卧床,正好利用养病时间,快速把量学刷了两遍,知识只是一知半解,尝试在通达信中,将王子老师的关键指标,用通达信的代码实现,主要功能如下:
1.三一二一量柱标尺,这个是准的;
2.低量柱,这个没处理好,能显示一些;
3.百日低量柱,这个基本问题不大,只显示最近30天内出现的百日低量柱;
4.王牌柱:元帅柱\黄金柱\将军柱,我稍微修改了定义,将后三日均线,改为后三日最低收盘价,总感觉均线搞出来的将军柱有点多(这个功能卡了我一个星期,终于今天搞定);
5.不利基因:
  • 假阳真阴
  • 跳空下跌
6.涨停基因:
  • 小倍阳
  • 长阴短住
  • 长阳短住
  • 长腿探底
  • 30日低量
  • 假阴真阳
7.另外其他指标(K线图左右下角):
  • 股票所属板块
  • 板块热度
  • 前20日是否横盘

    十几年没怎么玩论坛,还有点不习惯发帖,下一步计划,要攻克量线,量线感觉复杂很多,主要是画线的不确定行较大,价格较多,虚实结合,慢慢攻克,大家还有什么需要实现的,可以留言,我常识谢谢,有两豆包和deepseek,写这些代码好弄很多.



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2025-11-23 20:32 | 显示全部楼层
转载使用,请说明来源:一路高歌

TOTAL:=IF(PERIOD=1,5,IF(PERIOD=2,15,IF(PERIOD=3,30,IF(PERIOD=4,60,IF(PERIOD=5,TOTALFZNUM,1)))));
DTIME:=IF(FROMOPEN<15,0.1746/15*FROMOPEN,
IF(FROMOPEN<30,0.1746+0.1059/15*(FROMOPEN-15),
IF(FROMOPEN<45,0.2805+0.0823/15*(FROMOPEN-30),
IF(FROMOPEN<60,0.3628+0.0635/15*(FROMOPEN-45),
IF(FROMOPEN<75,0.4263+0.0559/15*(FROMOPEN-60),
IF(FROMOPEN<90,0.4822+0.0477/15*(FROMOPEN-75),
IF(FROMOPEN<105,0.5299+0.0432/15*(FROMOPEN-90),
IF(FROMOPEN<120,0.5731+0.0392/15*(FROMOPEN-105),
IF(FROMOPEN<135,0.6123+0.0446/15*(FROMOPEN-120),
IF(FROMOPEN<150,0.6569+0.0430/15*(FROMOPEN-135),
IF(FROMOPEN<165,0.6999+0.0440/15*(FROMOPEN-150),
IF(FROMOPEN<180,0.7439+0.0414/15*(FROMOPEN-165),
IF(FROMOPEN<195,0.7853+0.0436/15*(FROMOPEN-180),
IF(FROMOPEN<210,0.8289+0.0439/15*(FROMOPEN-195),
IF(FROMOPEN<225,0.8728+0.0531/15*(FROMOPEN-210),
0.9260+0.0740/15*(FROMOPEN-225)
)))))))))))))));
MTIME:=MOD(FROMOPEN,TOTAL);
CTIME:=IF(MTIME<0.5,TOTAL,IF((PERIOD=5 AND SETCODE<3),DTIME*240,MTIME));
VVOL:=IF((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VOL*(TOTAL+3)/(CTIME+3),DRAWNULL);
STICKLINE((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VVOL,0,-1,-1),COLOR00C0C0;
VOLUME:VOL,VOLSTICK;


{三一二一标尺相关定义}
SANYI:=BETWEEN(VOLUME, REF(VOLUME,1)*0.60, REF(VOLUME,1)*0.70);  {3/10区间}
ERYI:=BETWEEN(VOLUME, REF(VOLUME,1)*0.45, REF(VOLUME,1)*0.55);   {2/10区间}
XIAOBEI:=BETWEEN(VOLUME/REF(VOLUME,1),1.8,2.2) AND C>O;                  {小倍量柱(1.8-2.2倍)}
DABEI:=VOLUME/REF(VOLUME,1)>2.2 AND C>O;                                 {大倍量柱(2.2倍以上)}

{==================== 修复:10天最低量柱定义(用LLV替代LLVX,兼容所有软件) ====================}
{1. 固定10天周期:最近30天分3个固定区间(1=1-10天,2=11-20天,3=21-30天)}
FIXED_PERIOD:=10;  {固定周期长度:10天}
{2. 判断当前K线所在的固定区间(用IF替代CEILING,避免部分软件不兼容)}
CURRENT_RANGE:=IF(CURRBARSCOUNT<=10,1,
                IF(CURRBARSCOUNT<=20,2,3));  {区间1:1-10天;区间2:11-20天;区间3:21-30天}
{3. 计算当前区间的最低量(用LLV替代LLVX,通用函数)}
RANGE_LOW:=IF(CURRENT_RANGE=1,LLV(VOLUME,10),  {区间1:取最近10天最低量}
             IF(CURRENT_RANGE=2,LLV(VOLUME,10),  {区间2:取最近10天最低量(对应11-20天)}
             LLV(VOLUME,10)));  {区间3:取最近10天最低量(对应21-30天)}
{4. 标记条件:仅最近30天 + 当天是所在区间最低量 + 区间内唯一标记(避免重复)}
LOW10:=CURRBARSCOUNT <= 30  {仅最近30天标记}
       AND VOLUME=RANGE_LOW  {当天是所在固定10天区间的最低量}
       AND NOT(REF(VOLUME,1)=RANGE_LOW);  {排除同区间内连续2天都是最低量的情况(仅标记第一天)}

{100日内最低成交量定义及标记(仅最近30天)}
LOW100:=LLV(VOLUME,100);
LOW100_FLAG:=CURRBARSCOUNT <= 30 AND VOLUME=LOW100 AND LOW100>0;

{30日内最低成交量定义及标记(仅最近30天)}
LOW30:=LLV(VOLUME,30);
LOW30_FLAG:=CURRBARSCOUNT <= 30 AND VOLUME=LOW30 AND LOW30>0;

{假阴真阳/假阳真阴判断(仅最近30天)}
JIAYIN:=CURRBARSCOUNT <= 30 AND C < O AND C > REF(C,1) AND O > REF(C,1);  {假阴真阳}
JIAYANG:=CURRBARSCOUNT <= 30 AND C > O AND C < REF(C,1) AND O < REF(C,1);  {假阳真阴}

{长阴短柱定义(仅最近30天)}
CHANGYIN:=CURRBARSCOUNT <= 30 AND (C-REF(C,1))/REF(C,1)*100 < -4;  {跌幅超过5%}
DUANZHU:=VOLUME < REF(VOLUME,1);  
CHANGYIN_DZ:=CHANGYIN AND DUANZHU;

{==================== 修正后的“长腿”定义 ====================}
UPPER_SHADOW:=H - MAX(C, O);  {上影线:最高价 - 实体顶端(阳线C/阴线O)}
LOWER_SHADOW:=MIN(C, O) - L;   {下影线:实体底端(阳线O/阴线C) - 最低价}
BODY_HEIGHT:=ABS(C - O);       {实体高度:阴阳线统一用绝对值}
LONG_LEG:=CURRBARSCOUNT <= 30  
          AND LOWER_SHADOW >= BODY_HEIGHT * 2  
          AND LOWER_SHADOW >= UPPER_SHADOW * 1.5  
          AND LOWER_SHADOW >= C * 0.01;

{==================== 原有“长阳矮柱”定义 ====================}
LONG_YANG:=C/O>1.04 AND C>O;  {涨幅超过3%的阳线}
LOW_VOL:=VOLUME<MA(VOLUME,2)*0.8;  {成交量低于近5日平均的80%}
CHANGYANG_AIZHU:=CURRBARSCOUNT <= 30 AND LONG_YANG AND LOW_VOL;

{定义基柱条件}
倍量柱:=VOL>=REF(VOL,1)*1.5;
大阳柱:=(C-REF(C,1))/REF(C,1)*100>5;
高量柱:=VOL=HHV(VOL,10);
次阳柱:=REF(C<O,1) AND C>O; {前一日阴线,当日阳线}
基柱条件:=倍量柱 OR 大阳柱 OR 高量柱 OR 次阳柱;

{后三日价格判断}
后三日最低:=MIN(MIN(REFX(C,1),REFX(C,2)),REFX(C,3));
基柱收盘:=REFX(C,0);
基柱开盘:=REFX(O,0);
后三日均价:=(REFX(C,1)+REFX(C,2)+REFX(C,3))/3;
{后三日量判断}
后三日量1:=REFX(VOL,1);
后三日量2:=REFX(VOL,2);
后三日量3:=REFX(VOL,3);
缩量条件:=后三日量3<后三日量2 OR 后三日量3<后三日量1; {宽松的缩量条件}

{跳空判断}
跳空上涨:=REFX(O,1)>REFX(C,0)*1.005;

{柱子类型判断}
元帅柱:=基柱条件 AND 后三日最低>基柱收盘 AND 跳空上涨 AND 缩量条件;
黄金柱:=基柱条件 AND 后三日最低>=基柱收盘 AND NOT(跳空上涨) AND 缩量条件;
将军柱:=基柱条件 AND 后三日最低>=基柱开盘 AND 后三日最低<基柱收盘 AND 缩量条件;

{柱子颜色-修改为指定颜色}
STICKLINE(元帅柱,0,VOL,2,0),COLORYELLOW; {紫色}
STICKLINE(黄金柱,0,VOL,2,0),COLORYELLOW;  {黄色}
STICKLINE(将军柱,0,VOL,2,0),COLORYELLOW;   {白色}

{文字标记-放在柱子中间,统一白色}
DRAWTEXT(元帅柱,VOL*0.5,'帅'),COLORRED;
DRAWTEXT(黄金柱,VOL*0.5,'黄'),COLORRED;
DRAWTEXT(将军柱,VOL*0.5,'将'),COLORRED;

{==================== 跳空下跌定义 ====================}
TIAOKONG_XIADIE:=CURRBARSCOUNT <= 30  
                  AND O < REF(C,1) AND C<O
                  AND (REF(C,1)-O)/REF(C,1)*100 > 1.5 ;

{标记显示}
DRAWTEXT(SANYI, VOLUME*0.8, '3'), COLORWHITE;
DRAWTEXT(ERYI, VOLUME*0.8, '2'), COLORWHITE;
DRAWTEXT(XIAOBEI, VOLUME*1.3, '小&倍'), COLORRED;                       
DRAWTEXT(DABEI, VOLUME*1.3, '大&倍'), COLORRED;         
DRAWTEXT(LOW10, VOLUME*0.2, '低'), COLORWHITE;  {10天低量标记,最多3个}               
DRAWTEXT(LOW30_FLAG, VOLUME*1.3, '30'), COLORRED;              
DRAWTEXT(LOW100_FLAG, VOLUME*1.2, '百'), COLORRED;           
DRAWTEXT(JIAYIN, VOLUME*1.3, '假&阴'), COLORRED;                  
DRAWTEXT(JIAYANG, VOLUME*1.3, '假&阳'), COLORGREEN;            
DRAWTEXT(CHANGYIN_DZ, VOLUME*1.3, '长&阴&短'), COLORRED;                          
DRAWTEXT(LONG_LEG, VOLUME*1.3, '长&腿'), COLORRED;
DRAWTEXT(CHANGYANG_AIZHU, VOLUME*1.3, '长&阳&短'), COLORRED;   
DRAWTEXT(TIAOKONG_XIADIE, VOLUME*1.3, '跳&跌'), COLORGREEN;

{涨停判断与基因统计}
ZT:=C/REF(C,1)>1.09;
LAST_ZT:=BARSLAST(ZT);
LIMIT:=IF(LAST_ZT=-1,20,IF(LAST_ZT=0,1,LAST_ZT));

{涨停基因统计}
XB_COUNT:=COUNT(XIAOBEI, LIMIT);   
CYD_COUNT:=COUNT(CHANGYIN_DZ, LIMIT);
CYA_COUNT:=COUNT(CHANGYANG_AIZHU, LIMIT);
CT_COUNT:=COUNT(LONG_LEG, LIMIT);   
L30_COUNT:=COUNT(LOW30_FLAG, LIMIT);
JY_COUNT:=COUNT(JIAYIN, LIMIT);     
ZT_TOTAL:=XB_COUNT+CYD_COUNT+CYA_COUNT+CT_COUNT+L30_COUNT+JY_COUNT;

{不利基因统计}
JY2_COUNT:=COUNT(JIAYANG, LIMIT);   
TKX_COUNT:=COUNT(TIAOKONG_XIADIE, LIMIT);
BL_TOTAL:=JY2_COUNT+TKX_COUNT;

{缩量情况统计}
SUO13:=VOLUME < REF(VOLUME,1)*2/3;  
SUO12:=VOLUME < REF(VOLUME,1)*1/2;  
DIL:=LOW30_FLAG;                    
BAI_DIL:=LOW100_FLAG;               

SUO13_COUNT:=COUNT(SUO13, LIMIT);   
SUO12_COUNT:=COUNT(SUO12, LIMIT);   
DIL_COUNT:=COUNT(DIL, LIMIT);      
BAI_DIL_COUNT:=COUNT(BAI_DIL, LIMIT);
SUO_TOTAL:=SUO13_COUNT+SUO12_COUNT+DIL_COUNT+BAI_DIL_COUNT;

{三行文字显示}
ZT_STR1:=STRCAT6('涨停基因:小倍阳',CON2STR(XB_COUNT,0),'个,长阴短',CON2STR(CYD_COUNT,0),'个,长阳短',CON2STR(CYA_COUNT,0));
ZT_STR2:=STRCAT6(ZT_STR1,'个,长腿',CON2STR(CT_COUNT,0),'个,',CON2STR(L30_COUNT,0),'个30低,假阴');
ZT_STR3:=STRCAT(ZT_STR2,STRCAT(CON2STR(JY_COUNT,0),'个,合'));
ZT_STR_FIN:=STRCAT(ZT_STR3,STRCAT(CON2STR(ZT_TOTAL,0),'个'));
DRAWTEXT_FIX(1,0.01,0.01,0,ZT_STR_FIN),COLORRED;

BL_STR1:=STRCAT6('不利基因:假阳',CON2STR(JY2_COUNT,0),'个,跳空跌',CON2STR(TKX_COUNT,0),'个,合','');
BL_STR_FIN:=STRCAT(BL_STR1,STRCAT(CON2STR(BL_TOTAL,0),'个'));
DRAWTEXT_FIX(1,0.01,0.08,0,BL_STR_FIN),COLORGREEN;

SUO_STR1:=STRCAT6('缩量情况:1/3缩',CON2STR(SUO13_COUNT,0),'个,1/2缩',CON2STR(SUO12_COUNT,0),'个,低量',CON2STR(DIL_COUNT,0));
SUO_STR2:=STRCAT6(SUO_STR1,'个,百日低',CON2STR(BAI_DIL_COUNT,0),'个,合','','');
SUO_STR_FIN:=STRCAT(SUO_STR2,STRCAT(CON2STR(SUO_TOTAL,0),'个'));
DRAWTEXT_FIX(1,0.01,0.15,0,SUO_STR_FIN),COLORFFFFFF;

{==================== 新增第四行:王牌柱统计(最近涨停到当前日区间) ====================}
{1. 统计区间内的元帅柱、黄金柱、将军柱数量}
YUANSHUAI_COUNT:=COUNT(元帅柱, LIMIT);  {元帅柱数量}
HUANGJIN_COUNT:=COUNT(黄金柱, LIMIT);    {黄金柱数量}
JIANGJUN_COUNT:=COUNT(将军柱, LIMIT);    {将军柱数量}
WANGPAI_TOTAL:=YUANSHUAI_COUNT+HUANGJIN_COUNT+JIANGJUN_COUNT;  {合计数量}

{2. 构建文字字符串(参照前序语法)}
WANGPAI_STR1:=STRCAT6('王牌柱:元帅柱',CON2STR(YUANSHUAI_COUNT,0),'个,黄金柱',CON2STR(HUANGJIN_COUNT,0),'个,将军柱',CON2STR(JIANGJUN_COUNT,0));
WANGPAI_STR_FIN:=STRCAT6(WANGPAI_STR1,'个,合计',CON2STR(WANGPAI_TOTAL,0),'个','','');

{3. 固定位置显示(Y坐标0.22,避免与第三行重叠;颜色用亮黄色区分)}
DRAWTEXT_FIX(1,0.01,0.22,0,WANGPAI_STR_FIN),COLORYELLOW;



补充内容 (2025-11-29 08:59):
这个是PC版本的副图指标,手机版本看楼下
回复

使用道具 举报

 楼主| 发表于 2025-11-29 08:42 | 显示全部楼层

strcat6函数只在PC版本有效,我贴一个实用手机版的:

TOTAL:=IF(PERIOD=1,5,IF(PERIOD=2,15,IF(PERIOD=3,30,IF(PERIOD=4,60,IF(PERIOD=5,TOTALFZNUM,1)))));
DTIME:=IF(FROMOPEN<15,0.1746/15*FROMOPEN,
IF(FROMOPEN<30,0.1746+0.1059/15*(FROMOPEN-15),
IF(FROMOPEN<45,0.2805+0.0823/15*(FROMOPEN-30),
IF(FROMOPEN<60,0.3628+0.0635/15*(FROMOPEN-45),
IF(FROMOPEN<75,0.4263+0.0559/15*(FROMOPEN-60),
IF(FROMOPEN<90,0.4822+0.0477/15*(FROMOPEN-75),
IF(FROMOPEN<105,0.5299+0.0432/15*(FROMOPEN-90),
IF(FROMOPEN<120,0.5731+0.0392/15*(FROMOPEN-105),
IF(FROMOPEN<135,0.6123+0.0446/15*(FROMOPEN-120),
IF(FROMOPEN<150,0.6569+0.0430/15*(FROMOPEN-135),
IF(FROMOPEN<165,0.6999+0.0440/15*(FROMOPEN-150),
IF(FROMOPEN<180,0.7439+0.0414/15*(FROMOPEN-165),
IF(FROMOPEN<195,0.7853+0.0436/15*(FROMOPEN-180),
IF(FROMOPEN<210,0.8289+0.0439/15*(FROMOPEN-195),
IF(FROMOPEN<225,0.8728+0.0531/15*(FROMOPEN-210),
0.9260+0.0740/15*(FROMOPEN-225)
)))))))))))))));
MTIME:=MOD(FROMOPEN,TOTAL);
CTIME:=IF(MTIME<0.5,TOTAL,IF((PERIOD=5 AND SETCODE<3),DTIME*240,MTIME));
VVOL:=IF((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VOL*(TOTAL+3)/(CTIME+3),DRAWNULL);
STICKLINE((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VVOL,0,-1,-1),COLOR00C0C0;
VOLUME:VOL,VOLSTICK;
{三一二一标尺相关定义}
SANYI:=BETWEEN(VOLUME, REF(VOLUME,1)*0.60, REF(VOLUME,1)*0.70);
ERYI:=BETWEEN(VOLUME, REF(VOLUME,1)*0.45, REF(VOLUME,1)*0.55);
XIAOBEI:=BETWEEN(VOLUME/REF(VOLUME,1),1.8,2.2) AND C>O;
DABEI:=VOLUME/REF(VOLUME,1)>2.2 AND C>O;
{修复:10天最低量柱定义(用LLV替代LLVX,兼容所有软件)}
FIXED_PERIOD:=10;
CURRENT_RANGE:=IF(CURRBARSCOUNT<=10,1,IF(CURRBARSCOUNT<=20,2,3));
RANGE_LOW:=IF(CURRENT_RANGE=1,LLV(VOLUME,10),IF(CURRENT_RANGE=2,LLV(VOLUME,10),LLV(VOLUME,10)));
LOW10:=CURRBARSCOUNT <= 30 AND VOLUME=RANGE_LOW AND NOT(REF(VOLUME,1)=RANGE_LOW);
{100日内最低成交量定义及标记(仅最近30天)}
LOW100:=LLV(VOLUME,100);
LOW100_FLAG:=CURRBARSCOUNT <= 30 AND VOLUME=LOW100 AND LOW100>0;
{30日内最低成交量定义及标记(仅最近30天)}
LOW30:=LLV(VOLUME,30);
LOW30_FLAG:=CURRBARSCOUNT <= 30 AND VOLUME=LOW30 AND LOW30>0;
{假阴真阳/假阳真阴判断(仅最近30天)}
JIAYIN:=CURRBARSCOUNT <= 30 AND C < O AND C > REF(C,1) AND O > REF(C,1);
JIAYANG:=CURRBARSCOUNT <= 30 AND C > O AND C < REF(C,1) AND O < REF(C,1);
{长阴短柱定义(仅最近30天)}
CHANGYIN:=CURRBARSCOUNT <= 30 AND (C-REF(C,1))/REF(C,1)*100 < -4;
DUANZHU:=VOLUME < REF(VOLUME,1);
CHANGYIN_DZ:=CHANGYIN AND DUANZHU;
{修正后的“长腿”定义}
UPPER_SHADOW:=H - MAX(C, O);
LOWER_SHADOW:=MIN(C, O) - L;
BODY_HEIGHT:=ABS(C - O);
LONG_LEG:=CURRBARSCOUNT <= 30 AND LOWER_SHADOW >= BODY_HEIGHT * 2 AND LOWER_SHADOW >= UPPER_SHADOW * 1.5 AND LOWER_SHADOW >= C * 0.01;
{原有“长阳矮柱”定义}
LONG_YANG:=C/O>1.04 AND C>O;
LOW_VOL:=VOLUME<MA(VOLUME,2)*0.8;
CHANGYANG_AIZHU:=CURRBARSCOUNT <= 30 AND LONG_YANG AND LOW_VOL;
{定义基柱条件}
倍量柱:=VOL>=REF(VOL,1)*1.5;
大阳柱:=(C-REF(C,1))/REF(C,1)*100>5;
高量柱:=VOL=HHV(VOL,10);
次阳柱:=REF(C<O,1) AND C>O;
基柱条件:=倍量柱 OR 大阳柱 OR 高量柱 OR 次阳柱;
{后三日价格判断}
后三日最低:=MIN(MIN(REFX(C,1),REFX(C,2)),REFX(C,3));
基柱收盘:=REFX(C,0);
基柱开盘:=REFX(O,0);
后三日均价:=(REFX(C,1)+REFX(C,2)+REFX(C,3))/3;
{后三日量判断}
后三日量1:=REFX(VOL,1);
后三日量2:=REFX(VOL,2);
后三日量3:=REFX(VOL,3);
缩量条件:=后三日量3<后三日量2 OR 后三日量3<后三日量1;
{跳空判断}
跳空上涨:=REFX(O,1)>REFX(C,0)*1.005;
{柱子类型判断}
元帅柱:=基柱条件 AND 后三日最低>基柱收盘 AND 跳空上涨 AND 缩量条件;
黄金柱:=基柱条件 AND 后三日最低>=基柱收盘 AND NOT(跳空上涨) AND 缩量条件;
将军柱:=基柱条件 AND 后三日最低>=基柱开盘 AND 后三日最低<基柱收盘 AND 缩量条件;
{柱子颜色-修改为指定颜色}
STICKLINE(元帅柱,0,VOL,2,0),COLORYELLOW;
STICKLINE(黄金柱,0,VOL,2,0),COLORYELLOW;
STICKLINE(将军柱,0,VOL,2,0),COLORYELLOW;
{文字标记-放在柱子中间,统一白色}
DRAWTEXT(元帅柱,VOL*0.5,'帅'),COLORRED;
DRAWTEXT(黄金柱,VOL*0.5,'黄'),COLORRED;
DRAWTEXT(将军柱,VOL*0.5,'将'),COLORRED;
{跳空下跌定义}
TIAOKONG_XIADIE:=CURRBARSCOUNT <= 30 AND O < REF(C,1) AND C<O AND (REF(C,1)-O)/REF(C,1)*100 > 1.5;
{标记显示}
DRAWTEXT(SANYI, VOLUME*0.8, '3'), COLORWHITE;
DRAWTEXT(ERYI, VOLUME*0.8, '2'), COLORWHITE;
DRAWTEXT(XIAOBEI, VOLUME*1.3, '小倍'), COLORRED;
DRAWTEXT(DABEI, VOLUME*1.3, '大倍'), COLORRED;
DRAWTEXT(LOW10, VOLUME*0.2, '低'), COLORWHITE;
DRAWTEXT(LOW30_FLAG, VOLUME*1.3, '30'), COLORRED;
DRAWTEXT(LOW100_FLAG, VOLUME*1.2, '百'), COLORRED;
{DRAWTEXT(JIAYIN, VOLUME*1.3, '假阴'), COLORRED;
DRAWTEXT(JIAYANG, VOLUME*1.3, '假阳'), COLORGREEN;}
DRAWTEXT(CHANGYIN_DZ, VOLUME*1.3, '长阴短'), COLORRED;
DRAWTEXT(LONG_LEG, VOLUME*1.3, '长腿'), COLORRED;
DRAWTEXT(CHANGYANG_AIZHU, VOLUME*1.3, '长阳短'), COLORRED;
{DRAWTEXT(TIAOKONG_XIADIE, VOLUME*1.3, '跳跌'), COLORGREEN;}
{涨停判断与基因统计}
ZT:=C/REF(C,1)>1.09;
LAST_ZT:=BARSLAST(ZT);
LIMIT:=IF(LAST_ZT=-1,20,IF(LAST_ZT=0,1,LAST_ZT));
{涨停基因统计}
XB_COUNT:=COUNT(XIAOBEI, LIMIT);
CYD_COUNT:=COUNT(CHANGYIN_DZ, LIMIT);
CYA_COUNT:=COUNT(CHANGYANG_AIZHU, LIMIT);
CT_COUNT:=COUNT(LONG_LEG, LIMIT);
L30_COUNT:=COUNT(LOW30_FLAG, LIMIT);
JY_COUNT:=COUNT(JIAYIN, LIMIT);
ZT_TOTAL:=XB_COUNT+CYD_COUNT+CYA_COUNT+CT_COUNT+L30_COUNT+JY_COUNT;
{不利基因统计}
JY2_COUNT:=COUNT(JIAYANG, LIMIT);
TKX_COUNT:=COUNT(TIAOKONG_XIADIE, LIMIT);
BL_TOTAL:=JY2_COUNT+TKX_COUNT;
{缩量情况统计}
SUO13:=VOLUME < REF(VOLUME,1)*2/3;
SUO12:=VOLUME < REF(VOLUME,1)*1/2;
DIL:=LOW30_FLAG;
BAI_DIL:=LOW100_FLAG;
SUO13_COUNT:=COUNT(SUO13, LIMIT);
SUO12_COUNT:=COUNT(SUO12, LIMIT);
DIL_COUNT:=COUNT(DIL, LIMIT);
BAI_DIL_COUNT:=COUNT(BAI_DIL, LIMIT);
SUO_TOTAL:=SUO13_COUNT+SUO12_COUNT+DIL_COUNT+BAI_DIL_COUNT;
{三行文字显示(替换STRCAT6为STRCAT嵌套)}
ZT_STR1:=STRCAT(STRCAT(STRCAT(STRCAT(STRCAT('涨停-小倍阳',CON2STR(XB_COUNT,0)),' 阴短'),CON2STR(CYD_COUNT,0)),' 阳短'),CON2STR(CYA_COUNT,0));
ZT_STR2:=STRCAT(STRCAT(STRCAT(STRCAT(ZT_STR1,' 长腿'),CON2STR(CT_COUNT,0)),' 30低'),CON2STR(L30_COUNT,0));
ZT_STR3:=STRCAT(ZT_STR2,' 假阴');
ZT_STR4:=STRCAT(ZT_STR3,CON2STR(JY_COUNT,0));
ZT_STR:=STRCAT(ZT_STR4,STRCAT(' 合',CON2STR(ZT_TOTAL,0)));
ZT_STR_FIN:=STRCAT(ZT_STR,'');
DRAWTEXT_FIX(1,0.99,0.01,1,ZT_STR_FIN),COLORRED;
BL_STR1:=STRCAT(STRCAT(STRCAT(STRCAT('不利-假阳',CON2STR(JY2_COUNT,0)),' 跳跌'),CON2STR(TKX_COUNT,0)),' 合');
BL_STR_FIN:=STRCAT(BL_STR1,STRCAT(CON2STR(BL_TOTAL,0),'个'));
DRAWTEXT_FIX(1,0.99,0.20,1,BL_STR_FIN),COLORGREEN;
SUO_STR1:=STRCAT(STRCAT(STRCAT(STRCAT(STRCAT('缩量-1/3缩',CON2STR(SUO13_COUNT,0)),' 1/2缩'),CON2STR(SUO12_COUNT,0)),' 低量'),CON2STR(DIL_COUNT,0));
SUO_STR2:=STRCAT(STRCAT(STRCAT(STRCAT(SUO_STR1,' 百日低'),CON2STR(BAI_DIL_COUNT,0)),' 合'),'');
SUO_STR_FIN:=STRCAT(SUO_STR2,STRCAT(CON2STR(SUO_TOTAL,0),''));
DRAWTEXT_FIX(1,0.01,0.20,0,SUO_STR_FIN),COLORFFFFFF;
{新增第四行:王牌柱统计(替换STRCAT6为STRCAT嵌套)}
YUANSHUAI_COUNT:=COUNT(元帅柱, LIMIT);
HUANGJIN_COUNT:=COUNT(黄金柱, LIMIT);
JIANGJUN_COUNT:=COUNT(将军柱, LIMIT);
WANGPAI_TOTAL:=YUANSHUAI_COUNT+HUANGJIN_COUNT+JIANGJUN_COUNT;
WANGPAI_STR1:=STRCAT(STRCAT(STRCAT(STRCAT(STRCAT('王牌-元帅',CON2STR(YUANSHUAI_COUNT,0)),' 黄金'),CON2STR(HUANGJIN_COUNT,0)),' 将军'),CON2STR(JIANGJUN_COUNT,0));
WANGPAI_STR:=STRCAT(STRCAT(WANGPAI_STR1,' 合计'),CON2STR(WANGPAI_TOTAL,0));
WANGPAI_STR_FIN:=STRCAT(WANGPAI_STR,'');
{DRAWTEXT_FIX(1,0.01,0.22,0,WANGPAI_STR_FIN),COLORYELLOW;}
元帅:YUANSHUAI_COUNT,COLORYELLOW;
黄金:HUANGJIN_COUNT,COLORYELLOW;
将军:JIANGJUN_COUNT,COLORYELLOW;
合计:WANGPAI_TOTAL,COLORYELLOW;
回复

使用道具 举报

 楼主| 发表于 2025-11-29 09:01 | 显示全部楼层
主图指标:
市值:FINANCE(40)/100000000,NODRAW,COLORRED;
DRAWTEXT_FIX(1, 0.12, 0.02, 0, '左峰-量价-筹码-换手-分时-板块-资金-基因链'),COLORWHITE;
DRAWTEXT_FIX(1, 0.12, 0.09, 0, '买:画线-条件单-小阴小阳-筹码集中'),COLORRED;
DRAWTEXT_FIX(1, 0.12,0.16,0,'卖:破中阳二一-双阴-5天-跌7%'),COLORGREEN;
DRAWTEXT_FIX(1,0.12,1,0,STRCAT(HYBLOCK,STRCAT(':',GNBLOCK))),COLORYELLOW;
{---------------------- 选股代码----------------------}
CON1 := (CLOSE/REF(CLOSE,1)-1 >= 0.098) OR (CLOSE/OPEN > 1.098);
CON2 := COUNT(CON1, 13)>=1;
LSTZT_DAY := BARSLAST(CON1);
CON3 := LSTZT_DAY>=3 AND LSTZT_DAY<=12;
ZT_OPEN := REF(OPEN, LSTZT_DAY);
CON4 := CLOSE > ZT_OPEN;
CON5 := CLOSE>OPEN AND (CLOSE-OPEN)/OPEN<=0.04;
ZT_VOL := REF(V, LSTZT_DAY);
CON6 := REF(CLOSE,1)<REF(OPEN,1) AND REF(V,1)<ZT_VOL/2;
CON7 := CLOSE>3;{7. 今日收盘价大于3元}
CON8 := (CLOSE/REF(CLOSE,20)-1)<0.25;
CON9 := COUNT(CLOSE/REF(CLOSE,1)<0.94, LSTZT_DAY)=0;
CON10 := IF(INDEXADV+INDEXDEC=0,0,INDEXADV/(INDEXADV+INDEXDEC)>0.5);
CON11 := CLOSE>=REF(OPEN,1);
CON12 := CLOSE > MA(CLOSE,5);
{综合选股条件买点}
SELECT := CON2 AND CON3 AND CON4  AND CON6 AND CON7 AND CON11;
{---------- 新增:收盘价白线折线 ----------}
MA(CLOSE,1),COLORWHITE,LINETHICK1;
{------------------------------------------}
涨停日STZT_DAY,NODRAW,COLORRED;
{1. 定义涨停前20天区间:T-20到T-1天}
PRE_ZT_START := LSTZT_DAY + 1;  {涨停前1天位置}
PRE_ZT_END := LSTZT_DAY + 20;   {涨停前20天位置}
{2. 计算20天成交量关键数据}
VOL_AVG :=REF(MA(VOL,20), PRE_ZT_START);    {20天成交量均量}
VOL_MAX :=REF(HHV(VOL,20), PRE_ZT_START);    {20天最大成交量}
VOL_MIN :=REF(LLV(VOL,20), PRE_ZT_START);    {20天最小成交量}
PRE_ZT_HIGH := REF(HHV(HIGH,20), PRE_ZT_START);  {涨停前20天最高价}
PRE_ZT_LOW := REF(LLV(LOW,20), PRE_ZT_START);    {涨停前20天最低价}
PRE_ZT_FIRST_C := REF(CLOSE, PRE_ZT_END);       {涨停前20天收盘价}
PRE_ZT_LAST_C :=  REF(CLOSE, PRE_ZT_START);       {涨停前1天收盘价}
{3. 横盘双条件判定}
AMP_THRESHOLD := 15;  {振幅阈值(可改)}
TREND_THRESHOLD := 5; {价格趋势阈值(可改)}
PRE_ZT_AMP :=  (PRE_ZT_HIGH-PRE_ZT_LOW)/PRE_ZT_LOW*100;  {涨停前20天振幅}
PRE_ZT_TREND := ABS((PRE_ZT_LAST_C-PRE_ZT_FIRST_C)/PRE_ZT_FIRST_C*100);
{3. 成交量稳定判定条件:最大/最小量与均量偏差≤20%}
DEV_THRESHOLD := 50;  {偏差阈值(可改)}
MAX_DEV := ABS(VOL_MAX - VOL_AVG)/VOL_AVG*100;  {最大量偏差率}
MIN_DEV := ABS(VOL_MIN - VOL_AVG)/VOL_AVG*100;  {最小量偏差率}
{4. 最终横盘判定:双偏差均≤阈值}
IS_SIDEWAYS := IF((MAX_DEV <= DEV_THRESHOLD) AND (MIN_DEV <= DEV_THRESHOLD) AND (PRE_ZT_AMP <= AMP_THRESHOLD) AND (PRE_ZT_TREND <= TREND_THRESHOLD),1, 0);
{---------- 涨停日及后续关键价格缓存 -----------}
ZT_OPN_CACHE := VALUEWHEN(CON1, OPEN);
ZT_CLS_CACHE := VALUEWHEN(CON1, CLOSE);
ZT_VOL_CACHE := VALUEWHEN(CON1, VOL);  
ZT_AFTER_HIGH := VALUEWHEN(CON1, 0);  
ZT_AFTER_HIGH1 := IF(BARSLAST(CON1)>=1, HHV(HIGH, BARSLAST(CON1)), ZT_AFTER_HIGH);
ZT_TO_BUY := BETWEEN(BARSLAST(CON1), 1, LSTZT_DAY-1);
ZT_HALF := (ZT_OPN_CACHE + ZT_CLS_CACHE) / 2;
{------------- 标记条件 --------}
BIG_RISE1:= ZT_TO_BUY AND (CLOSE/OPEN > 1.05);
BIG_AMP1:= ZT_TO_BUY AND ((HIGH/LOW) > 1.10);
OVER_VOL1:= ZT_TO_BUY AND (V > ZT_VOL_CACHE*1.5);
LOW_ZT1:= ZT_TO_BUY AND (LOW < ZT_OPN_CACHE);
VOL_MORE1 := ZT_TO_BUY AND (V > ZT_VOL_CACHE*0.9) AND (CLOSE > OPEN) AND ((CLOSE-OPEN)/OPEN <= 0.03);
{------------ 排除涨停日标记 ---------}
NO_ZT_DAY := BARSLAST(CON1) <> 0;
BIG_RISE := BIG_RISE1 AND NO_ZT_DAY AND  BETWEEN(LSTZT_DAY,1,12);
BIG_AMP := BIG_AMP1 AND NO_ZT_DAY AND  BETWEEN(LSTZT_DAY,1,12);
OVER_VOL := OVER_VOL1 AND NO_ZT_DAY AND  BETWEEN(LSTZT_DAY,1,12);
LOW_ZT := LOW_ZT1 AND NO_ZT_DAY AND  BETWEEN(LSTZT_DAY,1,12);
VOL_MORE := VOL_MORE1 AND NO_ZT_DAY AND  BETWEEN(LSTZT_DAY,1,12);
{------- 回调后价格仍然较高 -----------}
HI_THAN_ZT := SELECT AND (CLOSE>ZT_CLS_CACHE OR (ZT_CLS_CACHE-CLOSE)/(ZT_CLS_CACHE-ZT_OPN_CACHE)<0.2) ;
VOL_LESS_PREV := SELECT AND (V < REF(V,1));
{----------- 筹码相关分析 -----------}
LOCK_RATIO := 100*WINNER(CLOSE);   
BUY_MA5_CACHE:=VALUEWHEN(SELECT, MA(CLOSE,5));
CHIP_90 := COST(95) - COST(5);
CHIP_CON1 := CHIP_90 < REF(CHIP_90, 1);
CHIP_CON2 := CHIP_90 <= LLV(CHIP_90, 10);
CHIP_MORE := CHIP_CON1 OR CHIP_CON2;
{----------- 振幅计算方式 -----------}
HY_RISE :=(HY_INDEXC -HY_INDEXO )* 100 /  HY_INDEXO;
{---------- 右下角(横盘判定结果同步更新)----------}
DRAWTEXT_FIX(IS_SIDEWAYS==1, 1, 0.91, 1, STRCAT('前20日: ', IF(IS_SIDEWAYS, '横盘', '非横盘'))), COLORRED;
DRAWTEXT_FIX(IS_SIDEWAYS==0, 1, 0.91,1, STRCAT('前20日: ', IF(IS_SIDEWAYS, '横盘', '非横盘'))), COLORGREEN;
DRAWTEXT_FIX(HY_RISE>1,1,0.86,1,STRCAT('热度:',STRCAT(VAR2STR(HY_RISE,1),'%'))),COLORRED;
{---------- 6%及以上大跌标记(保留核心风险提示) ----------}
BIG_DROP := BARSLAST(CON1) > 0 AND (CLOSE/REF(CLOSE,1) - 1 <= -0.06);
DRAWTEXT(BIG_DROP, O*0.96,'6%跌'), COLORYELLOW;
{---------- 假阴真阳/假阳真阴/跳空相关标记(保留趋势辅助判断) ----------}
JIAYIN:= C < O AND C > REF(C,1) AND O > REF(C,1);  {假阴真阳}
JIAYANG:=C > O AND C < REF(C,1) AND O < REF(C,1);  {假阳真阴}
TIAOKONG_XIADIE:= O < REF(C,1) AND C<O AND (REF(C,1)-O)/REF(C,1)*100 > 1.5 ;
TIAO_KONG_ZHANG := OPEN > REF(CLOSE, 1) AND (OPEN - REF(CLOSE, 1))/REF(CLOSE, 1) >= 0.005 AND C>O;
LONG_XIA := (C-L)>ABS(O-C)*1.5 AND (H-O)<(C-L);{下跌趋势的长下影线,连续两天阴线,且下影线为实体两倍}
CHANGYIN_DUAN :=O>C AND (C-O)*100/O <= -5{跌幅大于5} AND V<REF(V,1) AND ABS(O-C)>ABS(REF(O,1)-REF(C,1)){量柱缩小且价柱更大} AND ABS((O-C)/V)>ABS((REF(O,1)-REF(C,1))/REF(V,1));{价柱与量柱的比值更大}
DRAWTEXT(TIAOKONG_XIADIE, LOW*1.01, '跳跌'), COLORGREEN;
DRAWTEXT(JIAYIN, HIGH*1.01, '假阴'), COLORRED;                  
DRAWTEXT(JIAYANG, LOW*1.01, '假阳'), COLORGREEN;
DRAWTEXT(TIAO_KONG_ZHANG, HIGH*1.01, '跳涨'), COLORRED, LINETHICK2;
DRAWTEXT(LONG_XIA, LOW*0.99, '回踩'), COLORRED, LINETHICK2;
DRAWTEXT(CHANGYIN_DUAN, L, '阴短'), COLORRED, LINETHICK2;
{---------- 修复:涨幅超4%K线实体1/2位置白横线(独立不连屏) ----------}
{定义涨幅超4%的条件(包含阳线和阴线,涨跌幅绝对值≥4%)}
RISE_4_PERCENT := ABS((CLOSE - REF(CLOSE, 1)) / REF(CLOSE, 1)) >= 0.04;
{计算K线实体1/2位置(实体中点 = (开盘价 + 收盘价)/2)}
BODY_MID := (OPEN + CLOSE) / 2;
{用STICKLINE绘制独立横线:仅在当前K线实体中点画水平线段,不跨K线连接}
{参数说明:条件, 起点价格, 终点价格, 线段宽度(0-10), 是否填充(0=不填充)}
STICKLINE(RISE_4_PERCENT, BODY_MID, BODY_MID, 3, 0), COLORWHITE, LINETHICK2;
{线段宽度设为3:适配K线宽度,既清晰又不遮挡K线实体;LINETHICK2增强可见性}
{--------------------------------------------------};
回复

使用道具 举报

发表于 2025-10-6 21:36 | 显示全部楼层
好好学习天天向上
回复

使用道具 举报

发表于 2025-10-7 05:40 | 显示全部楼层
感谢分享感谢分享
回复

使用道具 举报

发表于 2025-10-7 07:21 | 显示全部楼层
感谢分享,好好学习天天向上
回复

使用道具 举报

 楼主| 发表于 2025-10-7 08:35 | 显示全部楼层
王子老师的书,起码要刷好几年,才能大致了解其中的精髓
回复

使用道具 举报

发表于 2025-10-7 10:29 | 显示全部楼层
谢谢楼主分享!
回复

使用道具 举报

发表于 2025-10-7 11:41 | 显示全部楼层
66666666666666666
回复

使用道具 举报

发表于 2025-10-7 12:38 | 显示全部楼层
dddddddddddddddddddddddddd
回复

使用道具 举报

发表于 2025-10-7 17:32 | 显示全部楼层
好好学习天天向上
回复

使用道具 举报

发表于 2025-10-8 08:15 | 显示全部楼层
6666666666666
回复

使用道具 举报

发表于 2025-10-16 09:18 | 显示全部楼层
谢谢分享,好好学习,天天向上。
回复

使用道具 举报

发表于 2025-10-22 09:22 | 显示全部楼层
谢谢分享,好好学习,天天向上。
回复

使用道具 举报

发表于 2025-11-4 16:12 | 显示全部楼层
友友是高手啊!分享一下大家共勉吧!
回复

使用道具 举报

发表于 2025-11-6 17:39 | 显示全部楼层
谢谢老师的分享
回复

使用道具 举报

发表于 2025-11-12 10:07 | 显示全部楼层
谢谢分享,好好学习,天天向上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表