①很多策略都有特定的偏好,比如不交易上市未满一年的次新股,或者需要基于市值进行选股
• 痛点:策略买入了波动巨大的次新股,或无法区分大盘股和小盘股。
• 解决方案:利用OpenDate(上市日期)和FloatVolume(流通股本)进行筛选。
from datetime import datetime, timedelta
import xtquant.xtdata as xtdata
stock_code = '300750.SZ' # 宁德时代
info = xtdata.get_instrument_detail(stock_code)
if info:
# 1. 判断是否是次新股
open_date_str = info.get('OpenDate')
open_date = datetime.strptime(open_date_str, '%Y%m%d')
if datetime.now() > open_date + timedelta(days=365):
print(f"{info.get('InstrumentName')} 已上市超过一年。")
else:
print(f"{info.get('InstrumentName')} 是上市不足一年的次新股。")
# 2. 计算流通市值
float_volume = info.get('FloatVolume') # 流通股数
pre_close = info.get('PreClose') # 昨日收盘价
market_cap = float_volume * pre_close
print(f"流通股本:{float_volume / 1e8:.2f}亿股")
print(f"昨日流通市值约:{market_cap / 1e8:.2f}亿元")日志如下:
②现在,我们将以上功能整合起来,创建一个非常实用的函数。你给它一个股票代码,它给你一份完整的报告
• 目标:封装一个函数,实现对任意股票的快速、全面的信息扫描。
from datetime import datetime, timedelta
import xtquant.xtdata as xtdata
def inspect_stock(stock_code):
"""查询并打印指定股票的详细基础信息"""
print(f"\n--- 正在查询 {stock_code} 的详细信息 ---")
info = xtdata.get_instrument_detail(stock_code)
if not info:
print("查询失败:股票代码不存在或数据获取异常。")
return
print(f"股票名称: {info.get('InstrumentName', 'N/A')}")
print(f"交易所: {info.get('ExchangeID', 'N/A')}")
print(f"上市日期: {info.get('OpenDate', 'N/A')}")
print(f"是否可交易: {'是' if info.get('IsTrading') else '否'}")
print(f"前收盘价: {info.get('PreClose', 0):.2f}")
print(f"今日涨停价: {info.get('UpStopPrice', 0):.2f}")
print(f"今日跌停价: {info.get('DownStopPrice', 0):.2f}")
print(f"流通股本: {info.get('FloatVolume', 0) / 1e8:.2f} 亿股")
print(f"最小价格变动: {info.get('PriceTick', 0)}")
print("----------------------------------------")
inspect_stock('000001.SZ')
inspect_stock('600519.SH')
inspect_stock('300315.SZ')
日志如下:
QMT/miniQMT免费申请
QMT免费领取学习案例
QMT落地辅助策略代写服务
需要的朋友欢迎联系 ~~~
著作权归文章作者所有。