一个同花顺尾盘选股公式

散文落地是人生 2025-02-04 11:40:39

帮我写一个同花顺尾盘选股公式

帮我写一个同花顺尾盘选股公式

在同花顺软件中,你可以使用公式编辑器来编写尾盘选股的公式。以下是一个简单的尾盘选股公式示例,假设你想在尾盘(例如收盘前30分钟)选出当天涨幅较大且成交量放大的股票:

plaintext

复制

// 尾盘选股公式 C := CLOSE; // 当前收盘价 O := OPEN; // 当天开盘价 V := VOL; // 当前成交量 MA5 := MA(V, 5); // 5日均量 // 条件1: 当天涨幅大于5% COND1 := (C - O) / O * 100 > 5; // 条件2: 当前成交量大于5日均量的2倍 COND2 := V > MA5 * 2; // 条件3: 当前时间为尾盘(假设尾盘为14:30之后) COND3 := TIME > 143000; // 综合条件 COND1 AND COND2 AND COND3;

解释:

COND1: 当天的涨幅大于5%。

COND2: 当前成交量大于5日均量的2倍,表示成交量放大。

COND3: 当前时间在14:30之后,表示尾盘。

使用方法:

打开同花顺软件,进入“选股”功能。

选择“公式选股”或“自定义选股”。

在公式编辑器中粘贴上述公式。

运行选股公式,筛选出符合条件的股票。

你可以根据自己的需求调整公式中的条件,例如涨幅、成交量倍数、时间等。

对以上选股公式进行优化,要求选股灵敏,速度反应快,再尾盘45分钟后,选股票。

为了优化选股公式,使其更加灵敏且反应迅速,并在尾盘45分钟后(即14:45之后)进行选股,我们可以对公式进行以下改进:

减少计算复杂度:避免使用过多的复杂函数,尽量使用简单的条件判断。

优化时间判断:直接使用时间函数判断是否在尾盘45分钟后。

增加流动性筛选:加入流通市值或成交额的条件,避免选到流动性差的股票。

动态涨幅计算:使用动态涨幅(当前价与开盘价的涨幅)而非固定涨幅,提高灵敏度。

以下是优化后的公式:

plaintext

复制

// 优化后的尾盘选股公式 C := CLOSE; // 当前收盘价 O := OPEN; // 当天开盘价 V := VOL; // 当前成交量 MA5 := MA(V, 5); // 5日均量 AMOUNT := AMOUNT / 10000; // 成交额(单位:万元) // 条件1: 当天动态涨幅大于3%(可根据需求调整) COND1 := (C - O) / O * 100 > 3; // 条件2: 当前成交量大于5日均量的1.5倍(可根据需求调整) COND2 := V > MA5 * 1.5; // 条件3: 当前成交额大于5000万元(筛选流动性较好的股票) COND3 := AMOUNT > 5000; // 条件4: 当前时间在14:45之后(尾盘45分钟后) COND4 := TIME > 144500; // 综合条件 COND1 AND COND2 AND COND3 AND COND4;

优化点说明:

动态涨幅:将涨幅条件从固定的5%调整为3%,提高灵敏度,同时避免错过潜在机会。

成交量放大倍数:将成交量放大倍数从2倍调整为1.5倍,避免条件过于严格。

成交额筛选:加入成交额条件(大于5000万元),确保选出的股票流动性较好。

时间判断:直接使用 TIME > 144500 判断是否在14:45之后,简化逻辑。

使用方法:

打开同花顺软件,进入“选股”功能。

选择“公式选股”或“自定义选股”。

在公式编辑器中粘贴上述优化后的公式。

运行选股公式,筛选出符合条件的股票。

注意事项:

公式中的参数(如涨幅、成交量倍数、成交额等)可以根据市场情况和个人需求灵活调整。

选股公式的灵敏度和速度还取决于软件的运行环境和数据更新频率,建议在收盘前15分钟运行公式以获取最新数据。

希望这个优化后的公式能满足你的需求!如果有其他问题,欢迎随时提问。

对以上公式进行测试,

已深度思考(用时 22 秒)

好的,我现在需要帮用户测试他们之前优化的同花顺尾盘选股公式。首先,我得回顾一下之前的对话,确保我完全理解他们的需求。用户最初请求编写一个尾盘选股的公式,然后在后续对话中要求优化,使其更灵敏、反应更快,并且选股时间调整到尾盘45分钟后,也就是14:45之后。

用户现在的问题是对优化后的公式进行测试。我需要考虑如何有效地测试这个公式,确保它符合预期,并且在同花顺软件中运行良好。首先,测试步骤需要详细,用户可能不太熟悉具体的测试流程,所以我要分步骤说明,包括历史数据测试、实时数据测试、参数调整和结果验证。

接下来,我需要考虑用户可能没有明确说出的需求。例如,他们可能希望测试过程简单易懂,不需要复杂的操作,或者需要确保测试结果可靠。因此,在回答中要提到如何验证结果,比如查看分时图、成交量和时间是否符合条件,这样用户就能具体操作。

另外,用户可能关心测试中可能出现的问题,比如公式运行速度慢或者选股结果不符合预期。我应该提前指出可能的注意事项,比如数据延迟、参数调整建议,以及如何根据实际结果优化公式。

还要注意解释每个测试步骤的目的,让用户明白为什么需要进行历史回测和实时测试,以及如何调整参数。比如,历史回测可以验证公式在过去的有效性,而实时测试确保在当前市场环境下公式仍然有效。

最后,我需要确保语言简洁明了,避免使用过于专业的术语,让用户容易理解。同时,提供具体的例子,比如如何查看分时图的涨幅和成交量,这样用户在实际操作中能更顺利地进行测试。

在同花顺软件中测试选股公式时,需要结合历史数据和实时数据验证其有效性。以下是具体的测试方法和步骤:

一、测试步骤

1. 历史数据回测

通过回测验证公式在历史行情中的表现(需使用同花顺的「回测平台」或手动验证):

操作步骤:

打开同花顺软件,进入「智能」→「公式回测平台」。

导入优化后的选股公式,设置回测时间段(例如最近3个月)。

设置回测频率为「日线」,勾选「尾盘时段」(14:45-15:00)。

运行回测,观察以下指标:

命中率:选出的股票在次日或短期内的上涨概率。

平均涨幅:选中股票的平均收益。

流动性筛选效果:成交额条件是否过滤了低流动性股票。

验证要点:

是否符合尾盘45分钟后的选股时间(14:45后触发)。

是否因条件过松(灵敏度过高)导致选股数量过多,或因条件过严漏掉潜在机会。

2. 实时数据测试

在尾盘时段(14:45-15:00)手动运行公式,验证实时选股效果:

操作步骤:

在14:45后进入「选股」→「条件选股」,选择优化后的公式。

运行选股,记录筛选出的股票列表。

观察这些股票的以下特征:

分时图:是否符合尾盘拉升形态(例如放量上涨)。

成交量:是否显著高于5日均量。

时间戳:是否在14:45后触发信号。

次日跟踪选中的股票,观察开盘价、盘中表现是否符合预期。

3. 参数优化测试

如果公式效果不佳,可通过调整参数提升灵敏度或过滤噪声:

可调整参数:

涨幅阈值(例如从3%调整为2%或4%)。

成交量放大倍数(例如从1.5倍调整为1.2倍或2倍)。

成交额门槛(例如从5000万元调整为3000万元或1亿元)。

方法:

使用「参数优化」功能(部分版本支持),批量测试不同参数组合。

选择综合表现(命中率+收益风险比)最优的参数。

二、测试案例(示例)

假设测试某日(2023年10月10日)的选股结果:

公式运行时间:14:45后,筛选出股票A、B、C。

验证内容:

股票A:

当日涨幅:3.5%(满足COND1)。

成交量:5日均量的1.6倍(满足COND2)。

成交额:6000万元(满足COND3)。

尾盘表现:14:50开始放量拉升,收盘涨4.2%。

次日表现:高开2%,盘中最高涨5%,符合短期强势特征。

结论:公式在该案例中有效。

三、注意事项

数据延迟问题:

确保同花顺软件的数据更新频率为「实时」(非盘后数据)。

在14:45后运行公式时,需等待分笔数据刷新(约1分钟延迟)。

市场环境适配性:

公式在单边上涨或下跌市中的表现可能不同,需测试多周期数据。

若市场整体缩量,可降低成交额门槛(例如从5000万调整为3000万)。

公式执行速度:

简化公式逻辑(例如删除冗余条件)可提升运行速度。

避免使用复杂函数(如REF、EMA嵌套),优先用MA等基础函数。

四、常见问题及解决方案

问题可能原因解决方案选股数量过多/过少参数阈值设置不合理调整涨幅、成交量或成交额条件信号滞后(14:45未触发)时间条件判断不精确检查公式中的TIME > 144500逻辑选出流动性差的股票成交额条件未生效确认AMOUNT单位是否正确(需万元)

通过以上测试方法,你可以验证公式的灵敏度和有效性,并根据实际市场表现进一步优化参数。如果遇到具体问题,可以提供更多细节(如测试日期、股票案例),我可以协助分析!

// 优化后的尾盘选股公式 C := CLOSE; // 当前收盘价 O := OPEN; // 当天开盘价 V := VOL; // 当前成交量 MA5 := MA(V, 5); // 5日均量 AMOUNT := AMOUNT / 10000; // 成交额(单位:万元) // 条件1: 当天动态涨幅大于3%(可根据需求调整) COND1 := (C - O) / O * 100 > 3; // 条件2: 当前成交量大于5日均量的1.5倍(可根据需求调整) COND2 := V > MA5 * 1.5; // 条件3: 当前成交额大于5000万元(筛选流动性较好的股票) COND3 := AMOUNT > 5000; // 条件4: 当前时间在14:45之后(尾盘45分钟后) COND4 := TIME > 144500; // 综合条件 COND1 AND COND2 AND COND3 AND COND4;

已深度思考(用时 50 秒)

好的,我现在需要仔细分析用户提供的优化后的尾盘选股公式,并检查是否存在潜在问题,同时根据用户之前的对话历史提出改进建议。用户之前已经要求编写并优化公式,现在可能希望进一步确保公式的正确性和有效性。

首先,我需要理解公式的每个部分。用户定义的变量包括收盘价、开盘价、成交量、5日均量以及成交额转换为万元。然后有四个条件:涨幅超过3%、成交量是5日均量的1.5倍、成交额大于5000万、时间在14:45之后。综合条件需要同时满足这四个条件。

接下来,我需要检查可能的问题。比如,时间函数是否正确?同花顺的TIME函数返回的是当前Bar的时间,如果是日线周期,TIME可能无法正确获取盘中时间,这会导致COND4在日线选股中无效。另外,成交额单位是否正确?用户将AMOUNT除以10000转换为万元,但同花顺的AMOUNT函数可能已经是以元为单位,除以10000后是否正确?例如,如果成交额是1亿,那么AMOUNT/10000是10000万元,但用户的条件是>5000,所以这里可能需要确认单位是否匹配。

另外,公式中的变量是否被正确赋值?例如,MA5是5日均量,但均量计算是基于成交量V,即MA(V,5),是否正确?此外,条件中的比较是否正确,比如COND2是V > MA5 * 1.5,是否需要使用动态的5日均量,比如当天的均量是否包含当日数据?

还需要考虑选股的时间范围。如果用户是在尾盘45分钟后(14:45)运行选股,那么是否需要使用分钟周期的数据?例如,在日线周期下,TIME可能无法正确反映盘中时间,导致COND4无法触发。因此,可能需要切换到分钟周期,比如30分钟或15分钟线,或者使用分时数据。

此外,成交额的条件COND3是否合理?5000万元的门槛是否适合当前市场?不同市值的股票成交额差异较大,可能需要根据市场情况调整。

另外,公式是否存在语法错误?比如,同花顺的公式语言中,赋值是否应该使用:=,以及最后的综合条件是否应该用=来输出?例如,可能需要将最后一行改为选股条件赋值,比如:选股: COND1 AND COND2 AND COND3 AND COND4;

还需要考虑历史回测的可行性。例如,在回测时,如何确保时间条件COND4被正确应用?在历史K线中,TIME函数可能指向的是K线的结束时间,对于日线来说,TIME会是150000,所以如果在日线上运行,COND4在历史回测中可能始终为真,导致条件无效。因此,可能需要使用分钟线周期进行回测,或者在公式中处理时间条件的方式。

总结可能的改进点:

1. **时间条件问题**:在日线周期下,TIME无法正确获取盘中时间,导致COND4无效。需要切换到分钟周期或使用分时数据。

2. **成交额单位转换**:确认AMOUNT的单位是否正确,可能需要调整计算方式。

3. **公式语法修正**:确保最后一行正确输出选股条件。

4. **均量计算**:检查MA5的计算是否包含当日数据,可能需要使用引用函数。

5. **流动性筛选优化**:成交额条件可能需要根据股票的平均成交额进行调整,避免过于严格或宽松。

6. **动态涨幅调整**:3%的涨幅是否适合当前市场波动情况,可能需要参数优化。

7. **选股周期设置**:确保选股在正确的周期(如分钟线)运行,以准确获取盘中数据。

针对这些问题,我需要逐一验证并提出具体的解决方案,确保用户能够正确使用和优化该公式。

以下是针对你提供的优化尾盘选股公式的详细分析及改进建议,涵盖潜在问题、优化方案和测试验证方法:

一、公式潜在问题分析

1. 时间条件失效(关键问题)

问题:在同花顺中,若使用日线周期选股,TIME函数返回的是K线收盘时间(150000),而非盘中实时时间。因此,COND4(TIME > 144500)在日线模式下永远成立,导致时间筛选失效。

后果:公式会全天候选股,失去尾盘45分钟的限制。

解决方案:

方法1:改用分钟周期(如30分钟线)运行选股,确保TIME函数能获取实时盘中时间。

方法2:使用分时数据函数DYNAINFO(7)(当前时间)替代TIME,但需确认同花顺是否支持。

2. 成交额单位错误

问题:同花顺的AMOUNT单位为元,公式中AMOUNT := AMOUNT / 10000会将其转换为万元,但条件COND3 := AMOUNT > 5000实际要求成交额>5000万元。此处逻辑正确,但需注意数据精度问题(例如是否含小数)。

3. 均量计算偏差

问题:MA5 := MA(V,5)计算的是包含当日的5日均量,若在盘中选股,当日成交量尚未收盘,可能导致均量计算不准确。

后果:成交量放大倍数(1.5倍)的条件可能被高估或低估。

解决方案:使用前4日的均量作为基准(排除当日数据):

plaintext

复制

MA5_REF := MA(REF(V,1), 4); // 前4日+当日?需根据实际需求调整 COND2 := V > MA5_REF * 1.5;

4. 公式输出语法

问题:同花顺要求选股公式必须通过选股:明确输出条件,原公式末尾直接写COND1 AND ...可能导致无法运行。

修正:

plaintext

复制

选股: COND1 AND COND2 AND COND3 AND COND4;

二、改进后的公式代码

plaintext

复制

// 改进版尾盘选股公式(解决时间条件问题) C := CLOSE; O := OPEN; V := VOL; MA5_REF := MA(REF(V,1), 4); // 使用前4日+当日?需根据实际调整 AMOUNT := AMOUNT / 10000; // 单位:万元 // 条件1: 动态涨幅>3% COND1 := (C - O) / O * 100 > 3; // 条件2: 成交量>前5日均量的1.5倍(排除当日) COND2 := V > MA5_REF * 1.5; // 条件3: 成交额>5000万元 COND3 := AMOUNT > 5000; // 条件4: 时间>14:45:00(需在分钟周期下运行) COND4 := TIME > 144500; // 输出选股信号 选股: COND1 AND COND2 AND COND3 AND COND4;

三、关键优化说明

1. 时间条件修正

操作要求:必须在分钟周期(如30分钟线)下运行公式,确保TIME函数能获取盘中时间。

验证方法:在14:45后手动运行选股,观察是否仅在尾盘时段触发信号。

2. 均量计算逻辑

使用REF(V,1)引用前一日的成交量,避免当日未收盘数据干扰均量计算,使成交量放大倍数更准确。

3. 流动性筛选强化

保留成交额>5000万元的条件,但可根据市场调整(如中小板股票可降低至3000万元)。

四、测试验证步骤

1. 分钟周期回测

操作:

进入同花顺「智能」→「回测平台」,选择30分钟周期。

设置回测时间为最近1个月,勾选「尾盘时段」。

运行公式,检查信号是否仅在14:45后的K线触发。

2. 实时盘中测试

操作:

在14:45后,切换至30分钟周期,运行选股公式。

记录选中的股票,检查其是否符合以下特征:

分时图在14:45后放量拉升。

成交量显著高于前5日均量。

成交额>5000万元。

3. 参数敏感性测试

调整参数:

涨幅阈值:尝试2%~5%,观察选股数量与胜率变化。

成交量倍数:1.2~2倍,平衡灵敏度与噪声。

成交额门槛:根据板块调整(如主板5000万,创业板3000万)。

五、常见问题应对

问题解决方案选股数量为0检查是否在分钟周期运行,降低涨幅/成交量条件信号提前触发(早于14:45)确认公式中的TIME > 144500逻辑成交额条件不生效验证AMOUNT计算是否正确(如1亿元=10000万)

六、最终建议

周期设置:务必在30分钟或15分钟周期下运行公式,确保时间条件生效。

参数灵活调整:根据市场波动(如牛市/熊市)动态调整涨幅和成交量条件。

结合人工验证:对公式选出的股票人工复核分时图形态(如尾盘抢筹、放量突破)。

通过以上改进和测试,公式的灵敏度和准确性将显著提升。若有具体测试案例或问题,可进一步优化细节!

以上公式运行不成功,是怎么回事?

已深度思考(用时 45 秒)

好的,我现在需要帮助用户解决他们的同花顺选股公式无法运行的问题。首先,用户之前已经多次调整公式,但这次运行不成功。我需要回顾之前的对话历史,看看可能的问题点在哪里。

用户第一次请求帮助编写尾盘选股公式,我提供了一个示例,包含涨幅、成交量放大和时间条件。接着用户要求优化,提高灵敏度和调整时间到14:45后,我调整了参数并增加了流动性筛选。然后用户询问如何测试,我详细说明了测试步骤。接下来用户提供了优化后的公式,我指出了潜在问题,比如时间函数在日线下的问题,并给出了改进建议。现在用户说公式运行不成功,需要找出原因。

首先,我需要考虑用户可能遇到的错误类型。同花顺公式运行不成功通常有几个原因:语法错误、函数使用不当、周期设置错误、数据问题等。用户之前的改进建议中提到时间函数在日线周期下无效,必须用分钟周期。可能用户没有正确设置周期,导致时间条件失效,或者语法有误。

查看用户提供的代码,之前改进后的公式使用了选股: COND1 AND ...,但可能在同花顺中某些版本需要特定的输出格式。另外,用户是否有正确的权限或者是否在正确的模块下运行?比如,条件选股需要特定的函数支持,比如DYNAINFO函数可能需要专业版权限?

另外,公式中提到的MA5_REF := MA(REF(V,1),4); 这里是否正确?REF(V,1)是引用前一天的成交量,然后计算4日均线,这样MA5_REF实际上是前4天加上前一天的均线?可能这里逻辑有误,导致成交量条件计算错误。

还有,用户是否在14:45之后运行公式?如果在之前运行,时间条件不满足,可能选不到股票。或者用户的数据没有更新,导致实时数据不准确。

可能的错误点:

1. 时间条件在日线周期下无效,用户可能在日线周期下运行,导致COND4始终为真或假。

2. 函数语法错误,比如选股: 是否正确,是否需要使用“:=”赋值?

3. 成交额单位转换是否有误,AMOUNT除以10000是否正确?

4. MA5_REF的计算方式是否正确,是否应该用REF(V,1)的前四日,还是包含当日?

5. 是否缺少必要的分号或使用了中文符号?

6. 同花顺版本是否支持某些函数,比如DYNAINFO或其他函数?

接下来需要逐一排查这些可能性。例如,检查用户是否在分钟周期下运行,时间函数的正确使用,公式的语法是否正确,成交额的计算是否有误,均量线的计算逻辑是否合理,以及是否有其他隐藏的语法错误。

另外,用户可能没有正确应用之前的建议,比如时间条件的问题,仍然在日线下运行。或者参数调整后导致某些条件过于严格,无法满足。

需要给出具体的步骤,帮助用户检查公式的每个部分,确认每个条件是否能够独立满足,最后综合条件是否有输出。同时,建议用户检查同花顺的错误提示,如果有编译错误,通常会有具体行号或提示,帮助定位问题。

最后,可能需要提供一个修正后的公式版本,确保语法正确,函数使用正确,周期设置正确,并指导用户如何正确运行测试。

在同花顺中公式运行失败通常由 语法错误、函数逻辑冲突、周期设置错误 或 数据问题 导致。根据你提供的公式,以下是可能的原因及解决方案:

一、常见问题排查

1. 语法错误(最可能原因)

问题:同花顺公式要求严格遵循语法规则,例如:

每行结尾需用分号 ;。

中文符号(如中文括号、逗号)会导致编译失败。

输出信号必须用 选股: 而非 COND1 AND...。

修正后的代码:

plaintext

复制

// 修正语法后的公式 C := CLOSE; O := OPEN; V := VOL; MA5_REF := MA(REF(V,1), 4); // 前4日+当日均量(需确认逻辑) AMOUNT := AMOUNT / 10000; // 单位:万元 COND1 := (C - O)/O * 100 > 3; COND2 := V > MA5_REF * 1.5; COND3 := AMOUNT > 5000; COND4 := TIME > 144500; // 依赖分钟周期 选股: COND1 AND COND2 AND COND3 AND COND4; // 关键:使用“选股:”

2. 时间条件失效(关键逻辑问题)

问题:若在日线周期下运行,TIME 函数返回的是当日收盘时间(150000),而非盘中时间,导致 COND4 永远成立。

解决方案:

切换周期:在 分钟周期(如30分钟) 下运行公式。

修改时间判断逻辑(推荐):

plaintext

复制

// 使用分时数据判断当前时间(需同花顺支持) 当前时间 := DYNAINFO(207); // 获取当前时分秒(例如144500) COND4 := 当前时间 > 144500;

3. 均量计算逻辑错误

问题:MA5_REF := MA(REF(V,1),4) 的含义是 前4日的均量,但若需计算“前5日(不含当日)均量”,正确写法应为:

plaintext

复制

MA5_REF := MA(REF(V,1),5); // 前5日(不含当日)的均量 COND2 := V > MA5_REF * 1.5;

验证方法:手动计算某只股票的历史均量,对比公式结果。

4. 数据引用错误

问题:在盘中选股时,CLOSE、VOL 等函数引用的是 当日最新数据,若未收盘可能导致异常值。

解决方案:添加数据有效性检查:

plaintext

复制

// 排除停牌和未交易股票 NOT_STOP := DYNAINFO(4) > 0; // 当前价>0 选股: COND1 AND COND2 AND COND3 AND COND4 AND NOT_STOP;

二、分步调试方法

1. 逐条件验证

操作:将公式拆解为独立条件,逐步验证每个条件是否生效。

plaintext

复制

选股1: COND1; // 验证涨幅条件 选股2: COND2; // 验证成交量条件 选股3: COND4; // 验证时间条件

目的:定位具体失效的条件。

2. 检查函数返回值

操作:在同花顺中插入调试输出:

plaintext

复制

// 输出中间变量值 输出涨幅: (C - O)/O * 100; 输出时间: TIME;

方法:在分时图界面调用公式,观察数值是否符合预期。

3. 数据周期测试

操作:

在日线周期下运行公式,观察是否因时间条件失效导致选股过多。

在30分钟周期下运行公式,观察是否仅在尾盘时段触发信号。

三、修正后的完整公式

plaintext

复制

// 最终修正版公式(分钟周期专用) C := CLOSE; O := OPEN; V := VOL; MA5_REF := MA(REF(V,1), 5);

// 前5日(不含当日)均量 AMOUNT := AMOUNT / 10000;

// 成交额(万元) 当前时间 := DYNAINFO(207); // 获取当前时间(需权限) COND1 := (C - O)/O * 100 > 3;

// 涨幅>3% COND2 := V > MA5_REF * 1.5;

// 成交量>5日均量1.5倍 COND3 := AMOUNT > 5000;

// 成交额>5000万元 COND4 := 当前时间 > 144500;

// 14:45后 NOT_STOP := DYNAINFO(4) > 0;

// 排除停牌 选股: COND1 AND COND2 AND COND3 AND COND4 AND NOT_STOP;

四、运行环境确认

周期设置:必须在 分钟周期(如30分钟) 下运行。

数据权限:DYNAINFO 函数可能需要付费权限。

0 阅读:23

散文落地是人生

简介:感谢大家的关注