You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
python_market_data_service/xysz/AmazingDataAdapter_接口文档.md

17 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

AmazingDataAdapter 接口文档

基于银河证券星耀数智量化平台 SDK 的 Python 适配器接口文档


目录

  1. 快速开始
  2. 枚举类型
  3. 接口列表

快速开始

import asyncio
from app.adapters.amazingdata_adapter import AmazingDataAdapter, SecurityType, Market

async def main():
    # 1. 创建适配器
    adapter = AmazingDataAdapter()
    
    # 2. 连接数据源
    await adapter.connect({
        "username": "your_username",
        "password": "your_password",
        "host": "your_host",
        "port": 8600,
        "local_path": "./amazing_data_cache/",
        "use_local_cache": True
    })
    
    # 3. 获取数据
    klines = await adapter.fetch_klines(
        symbol="000001.SZ",
        start="20240101",
        end="20241231",
        freq="1d"
    )
    print(f"获取到 {len(klines)} 条K线数据")
    
    # 4. 断开连接
    await adapter.close()

asyncio.run(main())

枚举类型

SecurityType - 证券类型

枚举值 说明
SecurityType.STOCK_A 沪深A股
SecurityType.STOCK_A_SH_SZ 沪深A股沪深
SecurityType.INDEX_A 沪深指数
SecurityType.ETF ETF
SecurityType.FUTURE 期货
SecurityType.KZZ 可转债
SecurityType.GLRA 逆回购
SecurityType.HKT 港股通
SecurityType.ETF_OP ETF期权

Market - 市场

枚举值 说明
Market.SH 上海
Market.SZ 深圳
Market.BJ 北京

接口列表

基础数据接口

1. fetch_klines - 获取历史K线

async def fetch_klines(
    self,
    symbol: str,
    start: str,
    end: str,
    freq: str
) -> List[KLineData]

参数说明:

参数 类型 说明
symbol str 标的代码,如 "000001.SZ"
start str 开始日期,格式 YYYYMMDD
end str 结束日期,格式 YYYYMMDD
freq str 周期1m/5m/15m/30m/60m/1d/1w/1M

返回数据 (KLineData)

字段 类型 说明
symbol str 标的代码
time int Unix时间戳
open float 开盘价
high float 最高价
low float 最低价
close float 收盘价
volume int 成交量
amount float 成交金额
trade_date str 交易日 (YYYY-MM-DD)
is_limit_up bool 是否涨停
is_limit_down bool 是否跌停
total_market_cap float 总市值(元)
float_market_cap float 流通市值(元)
inst_holding_ratio float 机构持仓占比(%
trading_days int 可交易日数

2. fetch_symbols - 获取标的列表

async def fetch_symbols(
    self,
    asset_type: str
) -> List[SymbolInfo]

参数说明:

参数 类型 说明
asset_type str 资产类型stock/futures

返回数据 (SymbolInfo)

字段 类型 说明
symbol_id str 标的代码
name str 标的名称
exchange str 交易所
underlying str 期货品种代码
contract_month str 合约月份

3. fetch_trading_calendar - 获取交易日历

async def fetch_trading_calendar(
    self,
    exchange: str,
    start: str,
    end: str
) -> List[TradeCalData]

参数说明:

参数 类型 说明
exchange str 交易所代码SH/SZ
start str 开始日期 YYYYMMDD
end str 结束日期 YYYYMMDD

4. get_code_info - 获取证券基本信息

async def get_code_info(
    self,
    security_type: SecurityType = SecurityType.STOCK_A
) -> pd.DataFrame

返回字段:

字段 说明
symbol 证券简称
security_status 产品状态标志
pre_close 昨收价
high_limited 涨停价
low_limited 跌停价
price_tick 最小价格变动单位

5. get_trading_calendar - 获取交易日历(列表)

async def get_trading_calendar(
    self,
    market: Market = Market.SH
) -> List[int]

返回: 交易日列表,格式 [20240102, 20240103, ...]


6. get_adj_factor - 获取单次复权因子

async def get_adj_factor(
    self,
    codes: List[str],
    is_local: Optional[bool] = None
) -> pd.DataFrame

参数说明:

参数 类型 说明
codes List[str] 股票代码列表
is_local bool 是否使用本地缓存

返回: DataFrame (index: 日期, columns: 股票代码)


7. get_backward_factor - 获取后复权因子

async def get_backward_factor(
    self,
    codes: List[str],
    is_local: Optional[bool] = None
) -> pd.DataFrame

历史行情接口

8. get_snapshot - 获取历史快照

async def get_snapshot(
    self,
    codes: List[str],
    start_date: str,
    end_date: str
) -> Dict[str, pd.DataFrame]

说明: 获取Level-1行情快照数据


财务数据接口

9. get_balance_sheet - 资产负债表

async def get_balance_sheet(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
TOTAL_ASSETS 资产总计
TOTAL_CUR_ASSETS 流动资产合计
TOTAL_NONCUR_ASSETS 非流动资产合计
TOTAL_LIAB 负债合计
TOT_SHARE_EQUITY_INCL_MIN_INT 股东权益合计
CURRENCY_CAP 货币资金
NOTES_RECEIVABLE 应收票据
ACCT_RECEIVABLE 应收账款
INV 存货

10. get_cash_flow - 现金流量表

async def get_cash_flow(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
NET_CASH_FLOWS_OPERA_ACT 经营活动现金流净额
NET_CASH_FLOWS_INV_ACT 投资活动现金流净额
NET_CASH_FLOWS_FIN_ACT 筹资活动现金流净额
NET_INCR_CASH_AND_CASH_EQU 现金及现金等价物净增加额

11. get_income_statement - 利润表

async def get_income_statement(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
TOT_OPERA_REV 营业总收入
OPERA_REV 营业收入
TOT_OPERA_COST 营业总成本
OPERA_PROFIT 营业利润
TOTAL_PROFIT 利润总额
NET_PRO_INCL_MIN_INT_INC 净利润
BASIC_EPS 基本每股收益
DILUTED_EPS 稀释每股收益
RD_EXP 研发费用

12. get_profit_express - 业绩快报

async def get_profit_express(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
TOTAL_ASSETS 总资产
NET_PRO_EXCL_MIN_INT_INC 净利润
TOT_OPERA_REV 营业总收入
TOTAL_PROFIT 利润总额
OPERA_PROFIT 营业利润
EPS_BASIC 基本每股收益
ROE_WEIGHTED 净资产收益率-加权
YOY_GR_NET_PROFIT_PARENT 同比增长率

13. get_profit_notice - 业绩预告

async def get_profit_notice(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
P_TYPECODE 业绩预告类型代码
P_CHANGE_MAX 预告净利润变动幅度上限
P_CHANGE_MIN 预告净利润变动幅度下限
NET_PROFIT_MAX 预告净利润上限(万元)
NET_PROFIT_MIN 预告净利润下限(万元)
P_REASON 业绩变动原因

股东股本接口

14. get_top10_shareholders - 十大股东

async def get_top10_shareholders(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
HOLDER_NAME 股东名称
HOLDER_QUANTITY 持股数
HOLDER_PCT 持股比例(%)
HOLDER_HOLDER_CATEGORY 股东性质(1:个人, 2:公司)
FLOAT_QTY 流通股数量

15. get_shareholder_count - 股东户数

async def get_shareholder_count(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
HOLDER_TOTAL_NUM A股、B股、H股、境外股的总户数
HOLDER_NUM A股股东户数

16. get_equity_structure - 股本结构

async def get_equity_structure(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
TOT_SHARE 总股本(万股)
FLOAT_SHARE 流通股(万股)
FLOAT_A_SHARE 流通A股(万股)
RESTRICTED_A_SHARE 限售A股(万股)
TOT_RESTRICTED_SHARE 限售股合计

融资融券接口

17. get_margin_summary - 融资融券汇总

async def get_margin_summary(
    self,
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
TRADE_DATE 交易日期
SUM_BORROW_MONEY_BALANCE 融资余额(元)
SUM_PURCH_WITH_BORROW_MONEY 融资买入额(元)
SUM_REPAYMENT_OF_BORROW_MONEY 融资偿还额(元)
SUM_SEC_LENDING_BALANCE 融券余额(元)
SUM_SALES_OF_BORROWED_SEC 融券卖出量
SUM_MARGIN_TRADE_BALANCE 融资融券余额(元)

18. get_margin_detail - 个股融资融券明细

async def get_margin_detail(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
BORROW_MONEY_BALANCE 融资余额
PURCH_WITH_BORROW_MONEY 融资买入额
REPAYMENT_OF_BORROW_MONEY 融资偿还额
SEC_LENDING_BALANCE 融券余额
SALES_OF_BORROWED_SEC 融券卖出量

交易异动接口

19. get_longhu_bang - 龙虎榜数据

async def get_longhu_bang(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
TRADE_DATE 交易日期
REASON_TYPE_NAME 上榜原因
CHANGE_RANGE 涨跌幅(%)
TRADER_NAME 营业部名称
BUY_AMOUNT 买入金额(元)
SELL_AMOUNT 卖出金额(元)
FLOW_MARK 买卖表示(1买入, 2卖出)

20. get_block_trading - 大宗交易

async def get_block_trading(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> pd.DataFrame

主要字段:

字段 说明
TRADE_DATE 交易日期
B_SHARE_PRICE 成交价(元)
B_SHARE_VOLUME 成交量(万股)
B_SHARE_AMOUNT 成交金额(万元)
B_BUYER_NAME 买方营业部名称
B_SELLER_NAME 卖方营业部名称

指数数据接口

21. get_index_constituents - 指数成分股

async def get_index_constituents(
    self,
    codes: List[str],
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

支持指数:

代码 名称
000016.SH 上证50
000300.SH 沪深300
000905.SH 中证500
000906.SH 中证800
000852.SH 中证1000

返回字段:

字段 说明
INDEX_CODE 指数代码
CON_CODE 成分股代码
INDATE 纳入日期
OUTDATE 剔除日期
INDEX_NAME 指数名称

22. get_index_weights - 成分股权重

async def get_index_weights(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

返回字段:

字段 说明
INDEX_CODE 指数代码
CON_CODE 标的代码
TRADE_DATE 生效日期
WEIGHT 权重(%)
CLOSE 收盘价

ETF数据接口

23. get_etf_pcf - ETF申赎数据

async def get_etf_pcf(
    self,
    codes: List[str]
) -> Tuple[pd.DataFrame, Dict[str, pd.DataFrame]]

返回: (etf_info, etf_constituents)

etf_info字段

字段 说明
creation_redemption_unit 每个篮子对应的ETF份数
max_cash_ratio 最大现金替代比例
creation 是否允许申购
redemption 是否允许赎回

etf_constituents字段

字段 说明
underlying_symbol 成份证券简称
component_share 成份证券数量
substitute_flag 现金替代标志

24. get_fund_share - 基金份额

async def get_fund_share(
    self,
    codes: List[str],
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
FUND_SHARE 基金份额(万份)
TOTAL_SHARE 基金总份额(万份)
FLOAT_SHARE 流通份额(万份)
CHANGE_REASON 份额变动原因

可转债数据接口

25. get_kzz_issuance - 可转债发行数据

async def get_kzz_issuance(
    self,
    codes: List[str],
    is_local: Optional[bool] = None
) -> Dict[str, pd.DataFrame]

主要字段:

字段 说明
STOCK_CODE 正股代码
LISTED_DATE 上市日期
PLAN_SCHEDULE 方案进度
CLAUSE_INI_CONV_PRICE 初始转换价格
LIST_ISSUE_SIZE 发行规模(万元)
LIST_ISSUE_QUANTITY 发行数量(万张)
TERM_YEAR 借款期限(年)
COUPON_RATE 利率(%)

使用示例

示例1获取股票K线并判断是否涨停

import asyncio
from app.adapters.amazingdata_adapter import AmazingDataAdapter

async def main():
    adapter = AmazingDataAdapter()
    await adapter.connect({
        "username": "xxx", "password": "xxx",
        "host": "xxx", "port": 8600
    })
    
    # 获取K线
    klines = await adapter.fetch_klines("000001.SZ", "20240101", "20241231", "1d")
    
    for k in klines:
        print(f"日期: {k.trade_date}, 收盘: {k.close}, "
              f"涨停: {k.is_limit_up}, 跌停: {k.is_limit_down}")
    
    await adapter.close()

asyncio.run(main())

示例2获取财务报表

# 获取资产负债表
balance = await adapter.get_balance_sheet(
    codes=["000001.SZ", "600000.SH"],
    start_date="20240930",
    end_date="20240930"
)

for code, df in balance.items():
    print(f"{code} 总资产: {df['TOTAL_ASSETS'].values[0]}")

示例3获取指数成分股

# 沪深300成分股
constituents = await adapter.get_index_constituents(["000300.SH"])
df = constituents["000300.SH"]
print(f"成分股数量: {len(df)}")
print(df[["CON_CODE", "INDATE"]].head())

示例4获取龙虎榜数据

longhu = await adapter.get_longhu_bang(
    codes=["000001.SZ"],
    start_date="20240101",
    end_date="20241231"
)
print(longhu[["TRADE_DATE", "REASON_TYPE_NAME", "BUY_AMOUNT", "SELL_AMOUNT"]])

注意事项

  1. 连接管理: 使用前先调用 connect(),使用后调用 close()
  2. 日期格式: 支持 YYYYMMDD"YYYY-MM-DD"date 对象
  3. 本地缓存: 默认启用,可设置 is_local=False 强制从服务器获取
  4. 批量处理: 大量数据建议分批获取,每批 50-100 个代码
  5. 错误处理: 连接断开会抛出 RuntimeError,需做好异常处理

文档版本: 1.0
更新日期: 2024-03-11