第4节 资金都去哪了——其它资金流向

本文介绍了如何利用AKShare获取和分析股市中的资金流向,包括概念股、行业及沪深港通的资金流动数据。特别是关注了北上资金这一市场指标,展示了如何获取并排序相关数据。此外,文章还提及了适用于量化交易的工具如Pandas和一些相关框架的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其他资金流向包括:

  • 概念股资金流向
  • 行业资金流
  • 沪深港通资金流向

其中沪深港通资金流向,就包含了市场所谓的聪明的钱:北上资金

下面我们看代码:

概念股资金流向

'''  
概念股资金流向  
'''  
# “即时”, "3日排行", "5日排行", "10日排行", "20日排行"  
df = ak.stock_fund_flow_concept(symbol="即时")  
print(df.sort_values(by="净额", ascending=False))

行业资金流

'''  
行业资金流  
'''  
# df = ak.stock_fund_flow_industry(symbol="5日排行")  
# print(df.sort_values(by="净额", ascending=False))

沪深港通资金流向

'''  
沪深港通资金流向  
'''  
df = ak.stock_hsgt_fund_flow_summary_em()
print(df)

本节课任务

任务: 留给大家一个任务,打印输出如下一句话:

北向资金全天净:买入/卖出 XXX 亿元,其中沪股通净 买入/卖出 XXX 亿元,深股通净 买入/卖出 XXX亿元

答案见配套教学视频

专栏说明

  • TuShare、AKShare、Efinance、Qstock框架的使用;
  • 结合Pandas的数据获取和展示 (配套视频中讲解)
  • 其它一些小技巧 (配套视频中讲解)

📢适合人群:

  • 没有时间盯盘的上班族
  • 对量化交易感兴趣的朋友
  • 希望通过炒股实现财务增长的朋友

配套视频

想通过视频学习该系列课程的小伙伴, 可以点击这里

你的身份是高级编程技术专家,精通各类编程语言,能对编程过程中的各类问题进行分析和解答。我的问题是【我正在编辑【通达信条件选股】代码,遇到了 【错误句 : 详细信息 : 输入字符串请用单引号'!' 错误起始位置 : 1704 ; 长度: 3】,请帮我检查并改正错误点补全正确代码,生成修正后完整代码。原有选股逻辑完整保留。我的原始代码如下:【{—————————————— 优化后系统参数 ——————————————} {——动态估值体系——} DYNPETTM:=CLOSE/MAX(FINANCE(33)/FINANCE(1),0.000000001); {动态市盈率TTM} PB_RATE:=CLOSE/MAX(FINANCE(5),0.000000001); {市净率} PEG_VAL:=DYNPETTM/MAX((FINANCE(54)/MA(FINANCE(34),3))*100,0.000000001); {PEG估值} INDUSTRY_RS:=C/REF(C,20)/(INDEXC/REF(INDEXC,20)); {行业相对强度} {——智能波动率——} VOLATILITY:=STD(CLOSE,20)/MA(CLOSE,20); {统一使用CLOSE替代C} VAR_PERIOD:=FLOOR(60-200*VOLATILITY); {变量周期计算} FAST_LEN:=CEILING(VAR_PERIOD*0.618); {快线周期} SLOW_LEN:=FLOOR(VAR_PERIOD*1.618); {慢线周期} {——情绪引擎——} MARKET_SENTI:=ADVANCE/DECLINE; {市场情绪} HOT_INDEX:=EMA(SUM(IF(CLOSE=ZTPRICE(REF(CLOSE,1),0.1),VOL,0),20)/MA(V,20),5); {热度指数} MONEY_FLOW:=EMA((AMOUNT-REF(AMOUNT,1))/REF(AMOUNT,1),3); {资金流向} SENTI_ACCEL:=EMA(MARKET_SENTI,3)*HOT_INDEX/(1+ABS(MONEY_FLOW)); {情绪加速度} {——————————————多周期共振 ——————————————} {——战略层——} MONTH_MA:=EMA(CLOSE,400); {月线级别均线} MONTH_TREND:=CLOSE>MONTH_MA*1.03 AND SLOPE(MONTH_MA,3)>0; {月线趋势判断} {——战役层——} WEEK_DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); {周线DIF值} WEEK_DEA:=EMA(WEEK_DIF,9); {周线DEA值} WEEK_MACD:=2*(WEEK_DIF-WEEK_DEA); {周线MACD值} WEEK_VOL:=EMA(V,5)>EMA(V,21)*1.3 AND V>REF(MA(V,5),1)*1.6; {周线成交量判断} {——战术层——} DAY_BREAK:=CLOSE>HHV(REF(HHV(HIGH,30),1),3) AND V>MA(V,20)*1.8; {日线突破信号} RSI6:=SMA(MAX(CLOSE-REF(CLOSE,1),0),6,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),6,1)*100; {修正RSI6计算方式} RSI12:=SMA(MAX(CLOSE-REF(CLOSE,1),0),12,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),12,1)*100; {修正RSI12计算方式} RSI24:=SMA(MAX(CLOSE-REF(CLOSE,1),0),24,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),24,1)*100; {修正RSI24计算方式} DAY_RSI:=RSI6>68 AND RSI12>RSI24+5; {日线RSI条件} {——微观层——} MIN60_BREAK:= "MIN60.C#MIN60" > "MIN60.HHV(H,20)#MIN60" AND "MIN60.V#MIN60" > "MIN60.MA(V,20)#MIN60"*2.2; {60分钟突破信号} MIN60_RSI:="MIN60.RSI#MIN60"(12) >70; {跨周期调用保持规范} {—————————————— 信号合成 ——————————————} INDUSTRY_MOM:=RANK(SUM(CLOSE/REF(CLOSE,1)-1,20))*0.3 + RANK(INDUSTRY_RS)*0.7; {行业动量} DEBT_FILTER:=FINANCE(42)/FINANCE(1)<0.5; {负债率过滤} CASH_FLOW:=FINANCE(25)/FINANCE(1)>0.2; {现金流过滤} BETA_FILTER:=SLOPE(CLOSE/INDEXC,60)>0.85 AND SLOPE(CLOSE/INDEXC,60)<1.15; {贝塔系数过滤} FINAL_SIGNAL:MONTH_TREND AND INDUSTRY_MOM>0.7 AND WEEK_MACD>REF(WEEK_MACD,1)*1.1 AND WEEK_VOL AND DAY_BREAK AND DAY_RSI AND MIN60_BREAK AND MIN60_RSI AND DEBT_FILTER AND CASH_FLOW AND BETA_FILTER AND PEG_VAL<0.8 AND DYNPETTM<25 AND SENTI_ACCEL>1.2 AND HOT_INDEX>1.0 AND MONEY_FLOW>0.08;】】
最新发布
03-29
<think>好的,我需要帮助用户解决通达信条件选股代码中的错误。首先,用户提到的错误信息是“输入字符串请用单引号'!'”,错误起始位置在1704,长度3。这说明问题出现在代码的第1704个字符附近,长度是3个字符,可能涉及到使用了双引号而不是单引号的情况。 先看看用户的原始代码。在代码中,跨周期调用的部分,比如MIN60_BREAK和MIN60_RSI,用户使用了双引号来引用分钟线数据。例如: MIN60_BREAK:= "MIN60.C#MIN60" > "MIN60.HHV(H,20)#MIN60" AND "MIN60.V#MIN60" > "MIN60.MA(V,20)#MIN60"*2.2; 而通达信的公式系统中,跨周期调用时应该使用单引号而不是双引号。因此,这里的双引号可能是导致错误的原因。错误位置1704附近的字符串可能就是其中一个双引号的部分。例如,"MIN60.C#MIN60"中的双引号需要替换为单引号。 接下来,检查代码中的所有跨周期调用部分,确认是否有其他地方也用了双引号。例如: MIN60_RSI:="MIN60.RSI#MIN60"(12) >70; 这里同样应该将双引号改为单引号。修改之后,应该能解决输入字符串的单引号问题。 另外,还需要检查其他可能的语法错误,比如括号是否匹配,函数参数是否正确。例如,在HOT_INDEX的计算中,用户使用了EMA函数,参数是否正确?还有在变量命名中是否有使用保留字?不过根据错误提示,主要问题还是字符串引号的问题。 修正后的代码应该将所有双引号改为单引号,特别是在跨周期调用的地方。然后,重新测试代码,确保错误消失,同时保持原有逻辑不变。</think>根据错误提示和代码分析,错误出现在字符串引用未使用单引号。以下是修正后的完整代码: ```text {—————————————— 优化后系统参数 ——————————————} {——动态估值体系——} DYNPETTM:=CLOSE/MAX(FINANCE(33)/FINANCE(1),0.000000001); {动态市盈率TTM} PB_RATE:=CLOSE/MAX(FINANCE(5),0.000000001); {市净率} PEG_VAL:=DYNPETTM/MAX((FINANCE(54)/MA(FINANCE(34),3))*100,0.000000001); {PEG估值} INDUSTRY_RS:=C/REF(C,20)/(INDEXC/REF(INDEXC,20)); {行业相对强度} {——智能波动率——} VOLATILITY:=STD(CLOSE,20)/MA(CLOSE,20); {统一使用CLOSE替代C} VAR_PERIOD:=FLOOR(60-200*VOLATILITY); {变量周期计算} FAST_LEN:=CEILING(VAR_PERIOD*0.618); {快线周期} SLOW_LEN:=FLOOR(VAR_PERIOD*1.618); {慢线周期} {——情绪引擎——} MARKET_SENTI:=ADVANCE/DECLINE; {市场情绪} HOT_INDEX:=EMA(SUM(IF(CLOSE=ZTPRICE(REF(CLOSE,1),0.1),VOL,0),20)/MA(V,20),5); {热度指数} MONEY_FLOW:=EMA((AMOUNT-REF(AMOUNT,1))/REF(AMOUNT,1),3); {资金流向} SENTI_ACCEL:=EMA(MARKET_SENTI,3)*HOT_INDEX/(1+ABS(MONEY_FLOW)); {情绪加速度} {——————————————多周期共振 ——————————————} {——战略层——} MONTH_MA:=EMA(CLOSE,400); {月线级别均线} MONTH_TREND:=CLOSE>MONTH_MA*1.03 AND SLOPE(MONTH_MA,3)>0; {月线趋势判断} {——战役层——} WEEK_DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); {周线DIF值} WEEK_DEA:=EMA(WEEK_DIF,9); {周线DEA值} WEEK_MACD:=2*(WEEK_DIF-WEEK_DEA); {周线MACD值} WEEK_VOL:=EMA(V,5)>EMA(V,21)*1.3 AND V>REF(MA(V,5),1)*1.6; {周线成交量判断} {——战术层——} DAY_BREAK:=CLOSE>HHV(REF(HHV(HIGH,30),1),3) AND V>MA(V,20)*1.8; {日线突破信号} RSI6:=SMA(MAX(CLOSE-REF(CLOSE,1),0),6,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),6,1)*100; {修正RSI6计算方式} RSI12:=SMA(MAX(CLOSE-REF(CLOSE,1),0),12,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),12,1)*100; {修正RSI12计算方式} RSI24:=SMA(MAX(CLOSE-REF(CLOSE,1),0),24,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),24,1)*100; {修正RSI24计算方式} DAY_RSI:=RSI6>68 AND RSI12>RSI24+5; {日线RSI条件} {——微观层——} MIN60_BREAK:= 'MIN60.C#MIN60' > 'MIN60.HHV(H,20)#MIN60' AND // 修正单引号 'MIN60.V#MIN60' > 'MIN60.MA(V,20)#MIN60'*2.2; {60分钟突破信号} MIN60_RSI:='MIN60.RSI#MIN60'(12) >70; {跨周期调用保持规范} {—————————————— 信号合成 ——————————————} INDUSTRY_MOM:=RANK(SUM(CLOSE/REF(CLOSE,1)-1,20))*0.3 + RANK(INDUSTRY_RS)*0.7; {行业动量} DEBT_FILTER:=FINANCE(42)/FINANCE(1)<0.5; {负债率过滤} CASH_FLOW:=FINANCE(25)/FINANCE(1)>0.2; {现金流过滤} BETA_FILTER:=SLOPE(CLOSE/INDEXC,60)>0.85 AND SLOPE(CLOSE/INDEXC,60)<1.15; {贝塔系数过滤} FINAL_SIGNAL:MONTH_TREND AND INDUSTRY_MOM>0.7 AND WEEK_MACD>REF(WEEK_MACD,1)*1.1 AND WEEK_VOL AND DAY_BREAK AND DAY_RSI AND MIN60_BREAK AND MIN60_RSI AND DEBT_FILTER AND CASH_FLOW AND BETA_FILTER AND PEG_VAL<0.8 AND DYNPETTM<25 AND SENTI_ACCEL>1.2 AND HOT_INDEX>1.0 AND MONEY_FLOW>0.08; ``` **修正说明:** 1. 错误点位于`MIN60_BREAK`和`MIN60_RSI`的跨周期调用语句 2. 将双引号`"`改为单引号`'`,符合通达信公式语法要求 3. 检查了所有跨周期引用(`#MIN60`)的语法规范性 4. 保留了原有选股逻辑的完整性和计算参数 **建议:** 调试时可使用通达信公式系统的「语法检测」功能分段验证,遇到跨周期调用时注意使用单引号包裹引用对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qnloft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值