当前位置:分析家公式网 → 股票公式 → 通达信公式 → 一键转帖:Deepseek编写的短线快到杨永兴思路指标,16个月100万到1亿经验
软件名称:[B]Deepseek编写的短线快到杨永兴思路指标,16个月100万到1亿经验[/B]
软件类型:国产软件
运行环境:Win10/Win9X/Win8/Win2000/WinXP/Win2003/Win7/
软件语言:简体中文
授权方式:分享版
软件大小:1.00 KB
官方主页:Home Page
更新时间:2025-02-14 00:15:19
软件简介:
Deepseek编写的短线快到杨永兴思路指标,16个月100万到1亿经验

在某音看到《短线快到杨永兴在16个月内资金100万做到1个亿》的视频,视频中有6个步骤,看了条件并不难,觉得完全可以编写成公式。就请了 Deepseek 大神帮忙。
下面把过程都发出来,包括Deepseek的思考过程。
1、下午14:30后,涨幅在3%到5%区间的股票。
2、量比大于1。
3、换手率大于5%,小于10%。
4、通市值在300亿以下。
5、20天内曾经涨停。
6、当天分时图,股价全天要保持在均线上方运行。
思考过程(168秒,实测出源码一共3.5分钟左右还是相当快的):
好的,我现在需要帮用户写一个通达信的选股公式,根据他给出的六个条件。首先,我得逐一理解每个条件的具体含义,然后转换成通达信的公式函数。
第一个条件是下午14:30后,涨幅在3%到5%之间的股票。通达信的时间函数应该是TIME,下午14:30对应的是143000。涨幅的话,用(C-REF(C,1))/REF(C,1)*100来计算。然后需要这个涨幅在14:30之后满足,可能需要用到时间段的判断,比如从14:30到收盘的时间段内涨幅是否符合条件。但可能需要用分时数据,但选股公式通常基于日线,这里可能需要用动态行情函数,比如DYNAINFO(17)来获取当天的涨幅?或者用C和开盘价比较?需要确认。
不过用户明确说是在14:30后,所以可能需要用分时的数据来判断在14:30时的价格是否符合涨幅范围。但通达信的日线选股公式可能无法直接获取盘中特定时间的价格,可能需要用分时数据函数,比如REF在分钟线上的应用。不过这可能比较复杂,因为选股公式通常基于日线数据,无法直接处理分钟线。这可能是个难点。可能需要另一种方式,比如判断当前价格是否在3%到5%之间,并且时间在14:30之后,但选股通常在收盘后执行,所以可能这个条件需要调整。或者用户希望在盘中实时选股?如果是这样的话,可能需要用实时函数。例如,在14:30之后,当前涨幅是否在3%到5%之间。这时候可以用TIME>=143000 AND (C-REF(C,1))/REF(C,1)*100 BETWEEN 3 AND 5。但是如果在14:30之后选股,可能可以这样写。
第二个条件是量比大于1。量比的函数是VOL/REF(MA(VOL,5),1),但通达信可能有内置的量比函数,比如DYNAINFO(17)或者VOL/REF(VOL,1)。需要确认正确的量比公式,通常量比是当日成交量与过去5日平均成交量的比值。所以可能用V/REF(MA(V,5),1) >1。
第三个条件是换手率大于5%小于10%。换手率函数应该是HSL,即HSCOL*100,或者使用VOL/(FINANCE(7)/1000000),其中FINANCE(7)是流通股本。可能需要用DYNAINFO(37)*100,因为DYNAINFO(37)是换手率(百分比)。所以条件可以写成HSL>5 AND HSL<10。
第四个条件是流通市值在300亿以下。流通市值为流通股本乘以当前价格。FINANCE(40)是流通股本(万股),所以流通市值=FINANCE(40)*C/10000,单位是亿元。所以条件为FINANCE(40)*C/10000 <300。
第五个条件是20天内曾经涨停。涨停的判断是收盘价等于涨停价。涨停价的计算需要考虑ST股票(5%)和非ST(10%或20%比如创业板)。可能需要用复杂的公式,比如:C>=ZTPRICE(REF(C,1),0.1) 或者考虑不同的板块。但这里为了简化,可能用C/REF(C,1)>=1.099来判断涨停,因为大部分股票涨停是10%,会有一定的误差。然后统计20天内是否有涨停,用COUNT(涨停条件,20)>=1。例如:COUNT(C/REF(C,1)>=1.099 AND C=H,20)>=1,这样确保是涨停且收盘为最高价,避免长上影线的情况。
第六个条件是当天分时图股价全天保持在均线上方运行。这里的均线可能指分时均线,即当天的均价线。在日线数据中,均价可以用当日的成交额除以成交量得到,即AMOUNT/V/100。然后需要判断当日每分钟的股价都不低于均价,这在日线选股中比较难,因为无法获取分时数据。可能需要用当日的最高价和最低价来间接判断。比如,当日的最低价不低于均价,这样可能不够准确。或者,如果当日的均价是MA(C,0),或者动态的均价线,但通达信在日线中无法直接获取分时均线。所以这个条件可能需要用当日的收盘价是否一直高于均价,但具体如何表达呢?
或者,均价可以用SUM(AMOUNT,0)/SUM(VOL,0)/100,即当日的均价,而要求每个时间点的价格都高于均价,这相当于当日的最低价大于等于均价。或者,当日的所有成交价都不低于均价,即最低价>=均价。但这样是否正确?例如,如果最低价等于均价,那么可能有部分时间股价在均线下方。因此,用户的条件可能需要改写为当日的最低价大于等于均价。这样,条件可以写为 L >= DYNAINFO(11),其中DYNAINFO(11)是当日的均价。或者,DYNAINFO(11)是否正确?需要确认。
综上,各条件的转换可能存在以下问题:
1. 时间条件在选股中的处理,特别是盘中选股还是盘后选股。
2. 分时均线的判断如何转化为日线公式。
3. 涨停条件的准确判断,包括不同板块的涨跌幅限制。
现在需要逐一解决这些问题。
首先,关于条件1,如果选股是在14:30之后执行,那么可以用TIME>=143000来判断当前时间,并且涨幅在3%到5%之间。但如果是盘后选股,可能需要其他方法。但用户可能在盘中需要这个选股公式,所以可以保留这个条件。
其次,关于分时均线的问题,在通达信中,DYNAINFO(11)是当日的均价,即分时图的黄线。因此,如果要求股价全天在均线上方,即最低价不低于均价,可以写为 L >= DYNAINFO(11)。但需要注意DYNAINFO函数在回测时的可用性,可能只在实时数据中有效。如果用户是在实时选股中使用,这应该是可行的。
现在,将各个条件组合起来:
条件1:涨幅在3%到5%之间,并且时间在14:30之后。
涨幅 := (C - REF(C,1)) / REF(C,1) * 100;
时间条件 := TIME >= 143000;
条件1 := 时间条件 AND 涨幅 BETWEEN 3 AND 5;
条件2:量比大于1。量比通常用当日成交量与过去5日平均成交量的比值,即V / MA(V,5)。但通达信的量比函数可能为DYNAINFO(17),所以可以写为 DYNAINFO(17) > 1;
条件3:换手率大于5%且小于10%。使用HSL,可能为DYNAINFO(37)*100,或者用VOL/(FINANCE(7)/10000)。假设DYNAINFO(37)返回的是换手率(例如,单位是%),则条件为 DYNAINFO(37) >5 AND DYNAINFO(37) <10;
条件4:流通市值在300亿以下。流通市值=FINANCE(40)*C/10000,所以 FINANCE(40)*C/10000 <300;
条件5:20天内曾经涨停。这里需要判断过去20天内有收盘价等于涨停价的情况。例如:
涨停条件 := C >= ZTPRICE(REF(C,1), IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1));
条件5 := COUNT(涨停条件, 20) >=1;
或者简化处理,不考虑ST股票,直接判断涨幅是否大于等于9.9%:
条件5 := COUNT((C/REF(C,1) >=1.099) AND (C=H), 20)>=1;
这里用C=H来确保是涨停收盘,避免盘中涨停但尾盘回落的情况。
条件6:当日分时图股价全天保持在均线上方,即最低价大于等于均价,均价=DYNAINFO(11)。所以条件6 := L >= DYNAINFO(11);
综合以上条件,最终的选股公式可能如下:
下午选股: TIME >= 143000 AND (C-REF(C,1))/REF(C,1)*100 >=3 AND (C-REF(C,1))/REF(C,1)*100 <=5 AND DYNAINFO(17) >1 AND DYNAINFO(37) >5 AND DYNAINFO(37) <10 AND FINANCE(40)*C/10000 <300 AND COUNT((C/REF(C,1)>=1.099 AND C=H), 20)>=1 AND L >= DYNAINFO(11);
但需要注意以下几点:
1. DYNAINFO函数在历史数据中可能无法正确计算,只能在实时选股中使用。
2. 量比的计算方式是否正确,DYNAINFO(17)是否代表量比。
3. 换手率是否使用DYNAINFO(37),该函数返回的是当日的换手率(%)。
4. 流通市值的计算是否正确,FINANCE(40)的单位是万股,乘以股价C,得到的是万元,除以10000得到亿元。
5. 涨停判断是否准确,是否需要考虑ST股和不同板块(如创业板、科创板)的涨跌幅限制。
6. 分时均线条件在日线中的准确性,可能需要用L >= DYNAINFO(11)来判断当日最低价不低于均价。
因此,可能需要调整某些函数,例如:
- 量比可能应该用VOL / REF(MA(VOL,5),1) >1,而不是DYNAINFO(17)。
- 换手率使用HSL,可能写作VOL/(FINANCE(7)/100),其中FINANCE(7)是流通股本(万股),VOL是成交量(手),所以换手率=VOL*100股 / (FINANCE(7)*10000股) *100%,即换手率=(VOL*100)/(FINANCE(7)*10000)*100= VOL/(FINANCE(7)*100)*100%。或者更简单:换手率:VOL/(FINANCE(7)/100); 换手率>5 AND 换手率<10;
例如:
换手率 := VOL / (FINANCE(7)/100); // FINANCE(7)是流通股本(万股),转换为手的话是FINANCE(7)*10000股,即FINANCE(7)*100手。VOL是当日成交量(手),所以换手率=(VOL / (FINANCE(7)*100 )) *100% → 因此换手率公式为 VOL/(FINANCE(7)/100)。这可能更准确。
所以,条件3应为:VOL/(FINANCE(7)/100) >5 AND VOL/(FINANCE(7)/100) <10;
同样,流通市值为FINANCE(7)*C/10000,因为FINANCE(7)是流通股本(万股),乘以股价C(元/股),得到的是万元,除以10000得到亿元。所以条件4:FINANCE(7)*C/10000 <300;
关于条件5,涨停的判断可能需要更准确的函数,比如ZTPRICE。例如:
涨停价 := ZTPRICE(REF(C,1), 0.1);
涨停条件 := C >= 涨停价;
但需要考虑ST股的情况,如果股票名称含有ST,则涨停幅度是5%。可以用类似:
涨停幅度 := IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1);
涨停价 := ZTPRICE(REF(C,1), 涨停幅度);
涨停条件 := C >= 涨停价;
因此,条件5可以写成:
COUNT( C >= ZTPRICE(REF(C,1), IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1)) ,20 ) >=1;
这可能更准确。
最后,关于条件6,分时均线的问题,用L >= DYNAINFO(11)是否正确?DYNAINFO(11)表示当日均价,即成交总额/成交量。如果当日的最低价不低于均价,那么全天股价确实在均线上方。因此,这个条件是正确的。
综上,调整后的公式可能如下:
涨停条件 := C >= ZTPRICE(REF(C,1), IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1));
换手率 := VOL / (FINANCE(7)/100);
量比 := VOL / REF(MA(VOL,5),1);
选股公式:
TIME >= 143000 AND
BETWEEN((C-REF(C,1))/REF(C,1)*100, 3, 5) AND
量比 >1 AND
换手率 >5 AND 换手率 <10 AND
FINANCE(7)*C/10000 <300 AND
COUNT(涨停条件, 20) >=1 AND
L >= DYNAINFO(11);
但需要注意DYNAINFO(11)在回测时可能无法获取,因此这个公式适用于实时选股。如果用户需要盘后选股,可能需要其他方法,比如用AMOUNT/V/100作为均价,然后判断L >= AMOUNT/V/100。例如:
均价 := AMOUNT/(VOL*100);
条件6 := L >= 均价;
因此,替换DYNAINFO(11)为AMOUNT/VOL/100。但需要处理VOL为0的情况,不过实际情况下VOL不可能为0。所以条件6可以写为:
L >= AMOUNT/(VOL*100);
这样,公式在盘后也能使用。
综上,最终的公式可能如下:
// 通达信选股公式
COND1 := TIME >= 143000; // 时间在14:30后
COND2 := (C - REF(C,1))/REF(C,1)*100 BETWEEN 3 AND 5; // 涨幅3%-5%
COND3 := VOL / REF(MA(VOL,5),1) >1; // 量比大于1
HSL := VOL/(FINANCE(7)/100); // 换手率
COND4 := HSL >5 AND HSL <10; // 换手率5%-10%
COND5 := FINANCE(7)*C/10000 <300; // 流通市值小于300亿
// 涨停判断
ZT := C >= ZTPRICE(REF(C,1), IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1));
COND6 := COUNT(ZT, 20) >=1; // 20天内涨停
// 分时均线条件
均价 := AMOUNT/(VOL*100);
COND7 := L >= 均价; // 最低价不低于均价
选股: COND1 AND COND2 AND COND3 AND COND4 AND COND5 AND COND6 AND COND7;
但需要测试这个公式的正确性,特别是分时均线的部分。例如,AMOUNT是当日成交额(元),VOL是成交量(手),每手100股,所以每股的均价是AMOUNT/(VOL*100)。然后判断最低价L是否大于等于这个均价。
另外,注意ZTPRICE函数是否在通达信中可用,不同版本可能有所不同。如果不可用,可能需要手动计算涨停价:
涨停价 := REF(C,1) * IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 1.05, 1.10);
ZT := C >= 涨停价;
但是需要考虑四舍五入的问题,因为涨停价通常是保留两位小数,所以可能需要用ROUND函数,但通达信可能不支持。因此,可能直接用:
ZT := C / REF(C,1) >= IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 1.05, 1.099);
这样,当涨幅超过9.9%时视为涨停,忽略四舍五入的问题。但这样可能会有误差,比如有些股票可能实际涨幅9.97%也被算作涨停。
综合考虑,可能采用以下方式:
ZT := C >= INTPART(REF(C,1) * IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 1.05, 1.10) * 100 + 0.5 ) / 100;
但比较复杂。可能还是直接用ZTPRICE函数更准确,假设该函数存在。
综上,最终的公式可能需要用户根据自己通达信版本调整,特别是涨停的判断部分。此外,时间条件可能需要用户确保在14:30之后执行选股,否则COND1不成立。
以下是符合您要求的通达信选股公式:
{ 通达信选股公式 }
下午时间 := TIME >= 143000; { 14:30后 }
涨幅范围 := (C/REF(C,1)-1)*100 >= 3 AND (C/REF(C,1)-1)*100 <= 5;
量比 := VOL/REF(MA(VOL,5),1) > 1; { 量比大于1 }
换手率 := VOL/(FINANCE(7)/100); { 计算换手率 }
换手条件 := 换手率 > 5 AND 换手率 < 10; { 换手率5%-10% }
流通市值 := FINANCE(7)*C/10000 < 300; { 流通市值300亿以下 }
{ 20日内涨停判断(含ST处理)}
涨停价 := ZTPRICE(REF(C,1), IF(NAMELIKE('ST') OR NAMELIKE('*ST'), 0.05, 0.1));
曾涨停 := COUNT(C >= 涨停价, 20) >= 1;
{ 分时均线判断(使用成交均价)}
均价线 := AMOUNT/(VOL*100);
均线上方 := L >= 均价线; { 最低价始终不低于均价 }
选股条件:
下午时间 AND
涨幅范围 AND
量比 AND
换手条件 AND
流通市值 AND
曾涨停 AND
均线上方;

公式出来的,好兴奋,经过测试,从2020年至今,5年以来,选股的结果是0
不会吧?思路肯定是没问题的,难道问题在公式的编写。。。
有熟悉写公式的朋友出手吗?
[url=http://www.70822.com/soft/sort013/sort05/down-176499.html]Deepseek编写的短线快到杨永兴思路指标,16个月100万到1亿经验[/url]