来源:市场资讯
(来源:通达信趋势财经)
那些问"能不能"的朋友们,动手试起来!通达信TdxQuant对资金数据的支持超乎你的想象场景需求
如何选出分钟内主力净额变化排名靠前的股票,并实现自动化交易?
这是一个典型的量化选股+自动化下单场景,今天我们就用TdxQuant完整实现!
核心思路
通过定时获取主力净额数据,计算本次值减上次值的差额,然后排序筛选全市场,找出主力资金流入最明显的股票!
第一步:创建自定义资金指标
首先,我们需要创建一个主力净额指标公式 ZLJE:
{ZLJE - 主力净额指标}超B:=L2_AMO(0,0)/10000.0; {超大单买入}大B:=L2_AMO(1,0)/10000.0; {大单买入}中B:=L2_AMO(2,0)/10000.0; {中单买入}小B:=L2_AMO(3,0)/10000.0; {小单买入}超S:=L2_AMO(0,1)/10000.0; {超大单卖出}大S:=L2_AMO(1,1)/10000.0; {大单卖出}中S:=L2_AMO(2,1)/10000.0; {中单卖出}小S:=L2_AMO(3,1)/10000.0; {小单卖出}主力净额:(超B+大B)-(超S+大S),NODRAW; {主力净额 = 超大单+大单买入 - 超大单+大单卖出}第二步:TdxQuant完整实现代码
2.1 实时选股版(打印排名)
import sysimport timesys.path.append('C:/new_tdx_test2025/PYPlugins/user')from tqcenter import tq# 初始化tq.initialize(__file__)# 先获取A股全部股票(测试时可以先限制数量)all_stocks = tq.get_stock_list(market='5')[:100]# all_stocks = ['300911.SZ', '600635.SH', '000890.SZ', '603155.SH', '301448.SZ']print("正在处理,请等待...")start_date = '20240601'end_date = '20240630'# 初始化变量pre_mul_zb_result = {}mul_zb_result = {}countjs = 1max_iterations = 10 # 设置最大循环次数while countjs <= max_iterations:# 保存之前的值pre_mul_zb_result = mul_zb_result.copy()# 获取最新的主力净额数据mul_zb_result = tq.formula_process_mul_zb(formula_name='ZLJE',formula_arg='',xsflag=6,return_count=2,return_date=True,stock_list=all_stocks,stock_period='1d',count=-1,start_time=start_date,end_time=end_date,dividend_type=1print(f"\n=== 循环 {countjs} ===")countjs += 1# 检查是否有有效的数据if mul_zb_result and countjs >= 2:diff_list = []# 计算每只股票的主力净额变化差值for key in mul_zb_result:if key != "ErrorId":if (key in mul_zb_result and'主力净额' in mul_zb_result[key] andlen(mul_zb_result[key]['主力净额']) >= 1 andkey in pre_mul_zb_result and'主力净额' in pre_mul_zb_result[key] andlen(pre_mul_zb_result[key]['主力净额']) >= 1):curr_val = mul_zb_result[key]['主力净额'][-1]['Value']pre_val = pre_mul_zb_result[key]['主力净额'][-1]['Value']ce_val = float(curr_val) - float(pre_val)diff_list.append((key, ce_val))# 按差值从大到小排序,输出前5名if diff_list:diff_list.sort(key=lambda x: x[1], reverse=True)print(" **主力净额变化前5名:**")print("-" * 50)for i, (code, diff) in enumerate(diff_list[:5], 1):print(f"{i}. {code}: {diff:.2f} 万元")print("-" * 50)else:print("⚠️ 无有效差值数据")# 等待3分钟再进行下一次循环time.sleep(180)print("✅ 处理完成")2.2 自动化下单版(市价单)
import sysimport timesys.path.append('C:/new_tdx_test2025/PYPlugins/user')from tqcenter import tq, tqconst# 初始化tq.initialize(__file__)# 获取股票列表all_stocks = tq.get_stock_list(market='5')[:100]print(" 正在处理,请等待...")# 获取交易账户(注意:账号需要替换成你的实际账号)account_id = tq.stock_account("12302948", "stock")# 初始化变量pre_mul_zb_result = {}mul_zb_result = {}countjs = 1max_iterations = 10 # 设置最大循环次数while countjs <= max_iterations:print(f"\n{'='*60}")print(f" 循环 {countjs}/{max_iterations}")print(f"{'='*60}")# 保存之前的值pre_mul_zb_result = mul_zb_result.copy()# 获取最新的主力净额数据mul_zb_result = tq.formula_process_mul_zb(formula_name='ZLJE',formula_arg='',xsflag=6,return_count=2,return_date=True,stock_list=all_stocks,stock_period='1d',count=-1,dividend_type=1countjs += 1# 检查是否有有效的数据if mul_zb_result and countjs >= 2:diff_list = []# 计算主力净额变化差值for key in mul_zb_result:if key != "ErrorId":if (key in mul_zb_result and'主力净额' in mul_zb_result[key] andlen(mul_zb_result[key]['主力净额']) >= 1 andkey in pre_mul_zb_result and'主力净额' in pre_mul_zb_result[key] andlen(pre_mul_zb_result[key]['主力净额']) >= 1):curr_val = mul_zb_result[key]['主力净额'][-1]['Value']pre_val = pre_mul_zb_result[key]['主力净额'][-1]['Value']ce_val = float(curr_val) - float(pre_val)diff_list.append((key, ce_val))# 排序并交易if diff_list:diff_list.sort(key=lambda x: x[1], reverse=True)print("\n **主力净额变化前5名:**")print("-" * 60)# 对前5名进行批量下单for i, (code, diff) in enumerate(diff_list[:5], 1):print(f"{i}. {code}: {diff:.2f} 万元")# 市价下单order_result = tq.order_stock(account_id=account_id,stock_code=code,order_type=tqconst.STOCK_BUY, # 买入order_volume=200, # 买入200股price_type=tqconst.PRICE_SJ # 市价单print(f"✅ 已委托 {code}: {order_result}")# 可选:添加延迟避免下单过快# time.sleep(0.5)print("-" * 60)else:print("⚠️ 无有效差值数据")# 等待3分钟time.sleep(180)print("\n✅ 所有循环处理完成!")运行结果:
![]()
![]()
关键代码解析
3.1 获取主力净额数据
mul_zb_result = tq.formula_process_mul_zb(formula_name='ZLJE', # 指标公式名称stock_list=all_stocks, # 股票列表stock_period='1d', # 周期:1天return_count=2, # 返回2个K线数据xsflag=6, # 小数位数:保留6位小数dividend_type=1 # 复权方式)3.2 计算变化差值
curr_val = mul_zb_result[key]['主力净额'][-1]['Value']pre_val = pre_mul_zb_result[key]['主力净额'][-1]['Value']ce_val = float(curr_val) - float(pre_val)3.3 排序输出前5名
diff_list.sort(key=lambda x: x[1], reverse=True)for i, (code, diff) in enumerate(diff_list[:5], 1):print(f"{i}. {code}: {diff:.2f}")3.4 市价下单
order_result = tq.order_stock(account_id=account_id,stock_code=code,order_type=tqconst.STOCK_BUY,order_volume=200,price_type=tqconst.PRICE_SJ # 市价单市价单类型说明
市价单具体的报价方式和Ctrl+D系统设置这里的设置同步。
![]()
功能特点
✅ 实时监控
• 每3分钟自动刷新一次数据
• 持续监控全市场主力资金流向
✅ 智能选股
• 基于主力净额变化率排序
• 自动识别资金流入最明显的股票
✅ 自动化交易
• 市价单快速成交
• 支持批量下单
• 策略名称和备注便于管理
✅ 灵活配置
• 可调整选股范围(前5名、前10名等)
• 可调整下单数量
• 可调整循环次数和间隔
1. 测试环境先行
• 先使用少量股票测试(如代码中的100只)
• 确认逻辑无误后再扩展到全市场
2. 风险控制
• 设置合理的下单数量
• 考虑添加资金管理逻辑
• 监控异常情况及时停止
3. 性能优化
• 如果股票数量很多,可以考虑分批处理
• 适当调整循环间隔避免频繁调用
4. 策略扩展
• 可以添加止盈止损逻辑
• 可以结合其他技术指标综合判断
• 可以记录交易日志便于分析
tq.formula_process_mul_zb 参数
参数
示例值
formula_name
公式名称
'ZLJE'stock_list
股票列表
['600000.SH', '000001.SZ']stock_period
周期
'1d'
、'5m'、'15m'
return_count
返回数据个数
2xsflag
数据小数位数
6
(保留6位小数)
dividend_type
复权方式
1
前复权
tq.order_stock 参数
参数
示例值
account_id
账户ID
tq.stock_account("123456")stock_code
股票代码
'600000.SH'order_type
订单类型
tqconst.STOCK_BUYorder_volume
委托数量
200
(股)
price_type
价格类型
tqconst.PRICE_SJprice
委托价格
指定价格
总结
通过这个完整的示例,我们可以看到:
✅ TdxQuant 对资金数据有强大的支持✅ 主力净额等客户端数据可以轻松获取和计算✅ 从数据获取→选股→自动化下单,全流程打通✅ 代码简洁高效,易于扩展和定制
结语
那些问"能不能"的朋友们,动手试起来!
通达信TdxQuant的能力远超你的想象,无论是资金数据分析、技术指标计算,还是自动化交易,它都能帮你轻松实现。
不要犹豫,现在就打开你的TdxQuant,动手试试吧!
适用版本:TdxQuant 最新版 https://www.tdx.com.cn/soft.html (金融终端V7.72(64位,推荐)、 专业研究版V7.73(64位,推荐)、金融终端(量化模拟) V7.72) 技术支持:通达信官方文档https://help.tdx.com.cn/quant、宽客社区https://sns.tdx.com.cn/site/tdx_sns/page_index.html#/CircleDetail?id=388968&systemType=1
彩蛋:如果你成功实现了这个策略,欢迎在评论区分享你的经验和结果!
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.