feat: multimodal image clients, workspaces, Tushare skill, test fixes

- Replace monolithic image_message_client with HTTP/OCR/legacy modules; tighten OpenAI transport + tool schemas for multimodal downgrade to OCR specialist path.
- Add image/stock workspace prompts (META/SOUL/ROLE_SYSTEM); register experts; tweak specialist agent/direct loop/query_image_attachment.
- Add bundled runtime/skills/tushare-finance (references, api_client, SKILL metadata).
- Document OCR-related env vars; admin chat tweaks; README; weixin_install Ensure-OfficialPluginRuntimeDeps helper.
- Tests: multimodal downgrade + OCR coverage, strict tool pairing in attachment replay guard, workspace contract skips _internal/_system dirs, router/trace/prompt guards.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-05-10 04:41:42 +08:00
parent 6307ade480
commit d1bcc4debe
266 changed files with 57024 additions and 839 deletions

View file

@ -54,6 +54,18 @@ powershell -ExecutionPolicy Bypass -File .\scripts\start_all.ps1 -Background
若要在 ops 专家模式下调 **netx** 告警库,需单独启动 netx 服务,并在 `_local/system.env` 中配置 `OCLAW_NETX_BASE_URL`(及可选的 `OCLAW_NETX_API_TOKEN`)。说明见 `docs/NETX_MCP_INTEGRATION.md`。
### 可选:股票分析专家(A股/港股,信号建议)
已新增 `stock` 专家工作区(只做分析,不下单)。建议配合 Tushare MCP 使用:
1. 在 Tushare 平台获取 MCP 配置(见官方文档:[Tushare MCP 配置与使用](https://tushare.pro/document/1?doc_id=463))。
2. 在 oclaw 管理台导入 MCP JSON(支持 `mcpServers` 结构),启用后执行 Health / Sync Tools。
3. 在聊天里路由到 `stock` 专家,按信号模板输出“买入/卖出/观望”建议。
说明:
- 当前方案不接券商账户、不执行下单。
- 输出包含数据来源与时间戳,并附“非投资建议”声明。
### 外部贡献
若仓库对外开源并接受 Pull Request,协作方式与合并前自检见根目录 `CONTRIBUTING.md`。

View file

@ -271,15 +271,16 @@ AIA_REPLAY_TOOL_FULL_ROUNDS=
AIA_REPLAY_REASONING_SIGNATURE_POLICY=
# -----------------------------------------------------------------------------
# 十六、图片 / 音视频工具(OpenAI、DashScope)
# 十六、图片 / OCR 多模态通道(OpenAI-compatible;preferred 名称)
# -----------------------------------------------------------------------------
OPENAI_IMAGE_MODEL=
OPENAI_AUDIO_TRANSCRIPTION_MODEL=
AIA_IMAGE_MODEL=
AIA_IMAGE_BASE_URL=
AIA_IMAGE_API_KEY=
AIA_IMAGE_CHAT_ENDPOINT=
# query_image_attachment / send_ocr_image_messages(三项必填,无缺省模型 id)
AIA_OCR_MODEL=
AIA_OCR_BASE_URL=
AIA_OCR_API_KEY=
AIA_OCR_CHAT_ENDPOINT=
DASHSCOPE_IMAGE_N=
DASHSCOPE_IMAGE_WATERMARK=
@ -288,11 +289,6 @@ DASHSCOPE_IMAGE_PROMPT_EXTEND=
DASHSCOPE_IMAGE_SIZE=
DASHSCOPE_IMAGE_MODEL=
AIA_IMAGE_RETRIES=
AIA_IMAGE_RETRY_BACKOFF_SEC=
AIA_IMAGE_STATUS_RETRIES=
AIA_IMAGE_STATUS_RETRY_BACKOFF_SEC=
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=

View file

@ -308,47 +308,33 @@
- 作用:Gemini OpenAI 兼容下 tools 非流式开关
- 生效:`oclaw/platform/llm/chat_models.py`
## 图像能力
## OCR / 看多模态专线
- `AIA_IMAGE_MODEL`
- 默认:空(走 profile/模型默认)
- 作用:图像模型
- 生效:`oclaw/platform/llm/image_message_client.py`, `oclaw/runtime/agents/specialist_agent.py`
用于工具 **`query_image_attachment`**、纯文本模型降级 OCR、**图片专家**单次看图与底层 **`send_ocr_image_messages`**:向 **OpenAI-compatible** 网关发送带图 `messages`(通常为 `POST …/chat/completions`)。旧版 DashScope 形态载荷见 **`send_legacy_image_messages`**(一般不再用于图片专家)。与主聊天模型配置的 Key/Base URL **互不继承**。
- `AIA_IMAGE_BASE_URL`
- 默认:`https://api.openai.com/v1`
- 作用:图像服务 base URL
- 生效:`oclaw/platform/llm/image_message_client.py`
- `AIA_OCR_BASE_URL`
- 默认:无(必填,否则工具判为未配置)
- 作用:多模态网关根地址(例如 `https://api.example.com/v1`;实际请求为 `BASE_URL` + `CHAT_ENDPOINT`)
- 生效:`oclaw/platform/llm/image_ocr_client.py`
- `AIA_IMAGE_API_KEY`
- 默认:空
- 作用:图像 API Key
- 生效:`oclaw/platform/llm/image_message_client.py`
- `AIA_OCR_API_KEY`
- 默认:无(必填)
- 作用:上述网关的 Bearer API Key
- 生效:`oclaw/platform/llm/image_ocr_client.py`
- `AIA_IMAGE_CHAT_ENDPOINT`
- `AIA_OCR_MODEL`
- 默认:无(必填,**不提供默认模型 id**)
- 作用:网关上支持图+文的多模态模型名(由你的厂商决定)
- 生效:`oclaw/platform/llm/image_ocr_client.py`,`oclaw/runtime/agents/specialist_agent.py`
- `AIA_OCR_CHAT_ENDPOINT`
- 默认:`/chat/completions`
- 作用:图像接口 endpoint
- 生效:`oclaw/platform/llm/image_message_client.py`
- 作用:相对 `AIA_OCR_BASE_URL` 的路径
- 生效:`oclaw/platform/llm/image_ocr_client.py`
- `AIA_IMAGE_RETRIES`
- 默认:`3`
- 作用:图像请求重试次数
- 生效:`oclaw/platform/llm/image_message_client.py`
**动态参数:** 代码中也可在调用 `send_ocr_image_messages` / `send_legacy_image_messages` 时传入 `base_url` / `api_key` / `model`,优先级高于环境变量(见 `vision_llm_backend_status` 仅在未传参时使用 env 判断「是否已配置」)。
- `AIA_IMAGE_RETRY_BACKOFF_SEC`
- 默认:`0.8`
- 作用:图像请求重试退避秒数
- 生效:`oclaw/platform/llm/image_message_client.py`
- `AIA_IMAGE_STATUS_RETRIES`
- 默认:`4`
- 作用:图像状态轮询重试次数
- 生效:`oclaw/platform/llm/image_message_client.py`
- `AIA_IMAGE_STATUS_RETRY_BACKOFF_SEC`
- 默认:`5.0`
- 作用:图像状态轮询退避秒数
- 生效:`oclaw/platform/llm/image_message_client.py`
> **说明:** 历史上曾使用 `AIA_IMAGE_BASE_URL` / `AIA_IMAGE_API_KEY` / `AIA_IMAGE_MODEL` / `AIA_IMAGE_CHAT_ENDPOINT` 作为同一路由;当前实现 **不再读取** 上述变量作 OCR 通道配置,请统一改为 `AIA_OCR_*`。(`AIA_IMAGE_TOOL_RESULT_REPLAY_CAP_CHARS` 等为 **另一用途**,与 OCR 网关无关,仍保留原名。)
## Memory / RAG

View file

@ -57,6 +57,23 @@
---
## 2026-05-10 / Unreleased
### Added
- `AIA_OCR_BASE_URL`, `AIA_OCR_API_KEY`, `AIA_OCR_MODEL`, `AIA_OCR_CHAT_ENDPOINT`
- 默认值:`CHAT_ENDPOINT` 为 `/chat/completions`,其余无默认(三项主体必填方视为已配置)
- 用途:`query_image_attachment` / `send_ocr_image_messages` 等多模态 HTTP 通道命名(与主 LLM 分离)
- 影响模块:`oclaw/platform/llm/image_ocr_client.py`、`image_legacy_client.py`,`oclaw/runtime/tools/public/query_image_attachment_tool.py`,`oclaw/runtime/agents/specialist_agent.py`(图片专家走 OCR 多模态 HTTP)
### Changed
- `send_ocr_image_messages` / `send_legacy_image_messages` 不再有隐式默认模型 id;未配 `AIA_OCR_MODEL`(且未传 `model`)将直接失败
### Removed(OCR 通道)
- `AIA_IMAGE_BASE_URL` / `AIA_IMAGE_API_KEY` / `AIA_IMAGE_MODEL` / `AIA_IMAGE_CHAT_ENDPOINT` **不再**作为看图/OCR 通道的环境变量读取(须改用 `AIA_OCR_*`)。与附件回放相关的 `AIA_IMAGE_TOOL_RESULT_REPLAY_CAP_CHARS` 等 **不受影响**。
- 先前文档中的 `AIA_IMAGE_RETRIES` 等重试变量 **从未**由当前 OCR/legacy 客户端使用,示例 env 中已去除占位。
---
## 2026-04-26 / Unreleased
### Added

View file

@ -574,7 +574,7 @@
<script defer src="/admin/assets/admin-theme.js"></script>
<script
defer
src="/admin/assets/chat.js?v=20260507-2"
src="/admin/assets/chat.js?v=20260510-2"
onerror="(function(){var s=document.getElementById('chat-boot-splash');if(s){s.querySelector('.chat-boot-splash__title span:last-child').textContent='无法加载 chat.js';s.querySelector('.chat-boot-splash__muted').textContent='请确认网关已启动且 /admin/assets/chat.js 可访问。';}})()"
></script>
</head>

View file

@ -2437,10 +2437,16 @@ function syncAuthUserLabel() {
rows.forEach((r) => modeSel.appendChild(el("option", { value: String(r.value || ""), text: String(r.label || r.value || "") })));
modeSel.value = String((bridge.getModeValue && bridge.getModeValue()) || "");
} catch (_) {}
modeSel.addEventListener("change", () => {
modeSel.addEventListener("change", async () => {
const v = modeSel.value;
try {
Promise.resolve(bridge.setModeValue && bridge.setModeValue(modeSel.value)).catch(() => {});
} catch (_) {}
modeSel.disabled = true;
if (bridge.setModeValue) await bridge.setModeValue(v);
} catch (_) {
// errors are surfaced by saveUserGlobalModePreference()
} finally {
modeSel.disabled = false;
}
});
items.push(modeSel);
items.push(el("div", { class: "muted", style: "padding:6px 10px 2px;font-size:12px;", text: t("chat.planAgentVersionLabel") }));
@ -2454,10 +2460,16 @@ function syncAuthUserLabel() {
);
pavSel.value = String((bridge.getPlanAgentVersionValue && bridge.getPlanAgentVersionValue()) || "");
} catch (_) {}
pavSel.addEventListener("change", () => {
pavSel.addEventListener("change", async () => {
const v = pavSel.value;
try {
Promise.resolve(bridge.setPlanAgentVersionValue && bridge.setPlanAgentVersionValue(pavSel.value)).catch(() => {});
} catch (_) {}
pavSel.disabled = true;
if (bridge.setPlanAgentVersionValue) await bridge.setPlanAgentVersionValue(v);
} catch (_) {
// errors are surfaced by saveUserGlobalModePreference()
} finally {
pavSel.disabled = false;
}
});
items.push(pavSel);
items.push(el("div", { class: "muted", style: "padding:2px 10px 2px;font-size:12px;", text: t("chat.confirmStrategyLabel") }));
@ -2469,10 +2481,16 @@ function syncAuthUserLabel() {
rows.forEach((r) => csSel.appendChild(el("option", { value: String(r.value || ""), text: String(r.label || r.value || "") })));
csSel.value = String((bridge.getConfirmStrategyValue && bridge.getConfirmStrategyValue()) || "");
} catch (_) {}
csSel.addEventListener("change", () => {
csSel.addEventListener("change", async () => {
const v = csSel.value;
try {
Promise.resolve(bridge.setConfirmStrategyValue && bridge.setConfirmStrategyValue(csSel.value)).catch(() => {});
} catch (_) {}
csSel.disabled = true;
if (bridge.setConfirmStrategyValue) await bridge.setConfirmStrategyValue(v);
} catch (_) {
// errors are surfaced by saveUserGlobalModePreference()
} finally {
csSel.disabled = false;
}
});
items.push(csSel);
const reasonWrap = el("label", { class: "switch-wrap", style: "margin:2px 8px 8px;" }, [
@ -3007,7 +3025,39 @@ async function renderChatUi() {
planAgentV2GloballyEnabled = !!resp.plan_agent_v2_globally_enabled;
}
localStorage.setItem(CHAT_USER_MENU_MODE_KEY, modeVal);
} catch (_) {}
if (!resp || resp.ok === false) {
const detail = String((resp && (resp.error || resp.detail)) || "unknown_error");
throw new Error(detail);
}
// Hard-verify persistence: session switches reload mode from server.
// If server didn't persist, the UI will "snap back" to defaults.
try {
const ur = await apiGet("/admin/api/chat/user-mode");
if (ur && ur.ok) {
const gum = String((ur.interaction_mode || "").toLowerCase());
const gus = String((ur.specialist || "").toLowerCase());
const expectedIm = isMain ? "comprehensive" : "expert";
const expectedSp = isMain ? "generalist" : modeVal;
if (gum !== expectedIm || gus !== expectedSp) {
const msg =
currentLang === "zh"
? `模式未固化:后端返回 interaction_mode=${gum || "-"} specialist=${gus || "-"}(期望 ${expectedIm}/${expectedSp})`
: `Mode not persisted: server returned interaction_mode=${gum || "-"} specialist=${gus || "-"} (expected ${expectedIm}/${expectedSp})`;
showToast(msg, { kind: "error", ttlMs: 8000 });
}
}
} catch (_) {}
} catch (e) {
// If persistence fails, user will observe "mode resets after reload/restart".
// Surface this instead of silently swallowing.
try {
const msg =
currentLang === "zh"
? `保存“模式”失败:${String(e || "").slice(0, 180) || "unknown"}`
: `Failed to save mode: ${String(e || "").slice(0, 180) || "unknown"}`;
showToast(msg, { kind: "error", ttlMs: 6500 });
} catch (_) {}
}
};
const saveSessionModePreference = async () => {
if (!activeId) return;

View file

@ -0,0 +1,148 @@
"""Shared HTTP helpers for OCR and legacy image lanes (internal)."""
from __future__ import annotations
import base64
import io
import os
import time
from typing import Any
import httpx
from PIL import Image
def join_url(base: str, path: str) -> str:
b = (base or "").rstrip("/")
p = (path or "").lstrip("/")
return f"{b}/{p}"
def env_ocr_lane_api_key() -> str:
return (os.getenv("AIA_OCR_API_KEY") or "").strip()
def env_ocr_lane_base_url() -> str:
return (os.getenv("AIA_OCR_BASE_URL") or "").strip()
def env_ocr_lane_model() -> str:
return (os.getenv("AIA_OCR_MODEL") or "").strip()
def env_ocr_lane_chat_endpoint() -> str:
raw = (os.getenv("AIA_OCR_CHAT_ENDPOINT") or "").strip()
return raw or "/chat/completions"
def is_data_url(s: str) -> bool:
return s.startswith("data:") and ";base64," in s
def compress_data_url_image(
data_url: str,
*,
max_side: int = 1600,
max_bytes: int = 2 * 1024 * 1024,
jpeg_quality: int = 82,
) -> str:
if not is_data_url(data_url):
return data_url
try:
header, b64 = data_url.split(";base64,", 1)
mime = header.replace("data:", "", 1).strip() or "image/jpeg"
raw = base64.b64decode(b64.encode("ascii"))
if len(raw) <= max_bytes:
return data_url
with Image.open(io.BytesIO(raw)) as im:
im = im.convert("RGB")
w, h = im.size
longest = max(w, h)
if longest > max_side:
scale = max_side / float(longest)
nw, nh = max(1, int(w * scale)), max(1, int(h * scale))
im = im.resize((nw, nh), Image.Resampling.LANCZOS)
out = io.BytesIO()
im.save(out, format="JPEG", quality=max(30, min(95, int(jpeg_quality))), optimize=True)
blob = out.getvalue()
if not blob:
return data_url
b64_new = base64.b64encode(blob).decode("ascii")
return f"data:{'image/jpeg' if mime.startswith('image/') else mime};base64,{b64_new}"
except Exception:
return data_url
def post_with_retry(
client: httpx.Client,
*,
url: str,
headers: dict[str, str],
payload: dict[str, Any],
retries: int = 3,
backoff_sec: float = 0.8,
) -> httpx.Response:
last_exc: Exception | None = None
for attempt in range(1, max(1, retries) + 1):
try:
return client.post(url, headers=headers, json=payload)
except (httpx.ReadError, httpx.ConnectError, httpx.TimeoutException) as e:
last_exc = e
if attempt >= retries:
break
time.sleep(backoff_sec * (2 ** (attempt - 1)))
assert last_exc is not None
raise last_exc
def extract_text_and_images(resp_json: dict[str, Any]) -> tuple[str, list[str]]:
text_parts: list[str] = []
images: list[str] = []
choices = resp_json.get("choices")
if isinstance(choices, list) and choices:
msg = choices[0].get("message") if isinstance(choices[0], dict) else None
if isinstance(msg, dict):
c = msg.get("content")
if isinstance(c, str):
text_parts.append(c)
elif isinstance(c, list):
for it in c:
if not isinstance(it, dict):
continue
if isinstance(it.get("text"), str):
text_parts.append(str(it.get("text")))
elif isinstance(it.get("image"), str):
images.append(str(it.get("image")))
elif isinstance(it.get("image_url"), str):
images.append(str(it.get("image_url")))
elif isinstance(it.get("image_url"), dict) and isinstance(it["image_url"].get("url"), str):
images.append(str(it["image_url"]["url"]))
elif isinstance(it.get("b64_json"), str):
images.append(f"data:image/png;base64,{it['b64_json']}")
if not images:
data = resp_json.get("data")
if isinstance(data, list):
for it in data:
if not isinstance(it, dict):
continue
if isinstance(it.get("url"), str):
images.append(str(it.get("url")))
if isinstance(it.get("b64_json"), str):
images.append(f"data:image/png;base64,{it['b64_json']}")
return "\n".join([x for x in text_parts if x]).strip(), images
__all__ = [
"compress_data_url_image",
"env_ocr_lane_api_key",
"env_ocr_lane_base_url",
"env_ocr_lane_chat_endpoint",
"env_ocr_lane_model",
"extract_text_and_images",
"is_data_url",
"join_url",
"post_with_retry",
]

View file

@ -0,0 +1,146 @@
"""Legacy image+text payloads for DashScope-style gateways.
Uses ``{"image":...}/{"text":...}`` or typed compatible-mode blocks on ``/chat/completions`` only.
Prefer :mod:`oclaw.platform.llm.image_ocr_client` for OpenAI-compatible vision (图片专家已改用该路径).
"""
from __future__ import annotations
from typing import Any
import httpx
from oclaw.platform.llm.image_http_common import (
compress_data_url_image,
env_ocr_lane_api_key,
env_ocr_lane_base_url,
env_ocr_lane_model,
env_ocr_lane_chat_endpoint,
extract_text_and_images,
is_data_url,
join_url,
post_with_retry,
)
from oclaw.runtime.prompt_templates import render_prompt
def _http_content_blocks(images: list[str], prompt: str, *, typed: bool) -> list[dict[str, Any]]:
prompt_text = str(prompt or "").strip() or render_prompt("image/default_edit_prompt.zh.md", strict=True)
if not typed:
blocks: list[dict[str, Any]] = [{"image": img} for img in images]
blocks.append({"text": prompt_text})
return blocks
blocks_typed: list[dict[str, Any]] = [{"type": "image", "image": img} for img in images]
blocks_typed.append({"type": "text", "text": prompt_text})
return blocks_typed
def send_legacy_image_messages(
*,
images: list[str],
prompt: str,
model: str | None = None,
timeout_sec: int = 60,
api_key: str | None = None,
base_url: str | None = None,
) -> dict[str, Any]:
"""Legacy multimodal HTTP (non--OpenAI-``image_url`` schema). Optional; specialists use OCR client."""
resolved_base_url = (base_url or env_ocr_lane_base_url()).strip()
resolved_api_key = (api_key or env_ocr_lane_api_key()).strip()
model_name = ((model or "").strip() or env_ocr_lane_model())
endpoint = env_ocr_lane_chat_endpoint()
url = join_url(resolved_base_url, endpoint)
if not resolved_api_key or not resolved_base_url:
return {
"ok": False,
"error": "missing AIA_OCR_API_KEY or AIA_OCR_BASE_URL (or pass api_key and base_url)",
}
if not model_name:
return {
"ok": False,
"error": "missing AIA_OCR_MODEL (or pass model=...) — no default model id",
}
if not images:
return {"ok": False, "error": "at least one image input is required"}
raw_selected = [str(x).strip() for x in images if str(x).strip()][:3]
selected: list[str] = []
input_kind: list[str] = []
for img in raw_selected:
if is_data_url(img):
selected.append(compress_data_url_image(img))
input_kind.append("data_url")
continue
if img.startswith("http://") or img.startswith("https://"):
selected.append(img)
input_kind.append("url")
continue
if not selected:
return {"ok": False, "error": "no usable image input (expected URL or data URL)"}
prefer_typed_http = "compatible-mode" in resolved_base_url.lower()
content_multi = _http_content_blocks(selected, prompt, typed=prefer_typed_http)
content_multi_fallback = _http_content_blocks(selected, prompt, typed=not prefer_typed_http)
headers = {
"Authorization": f"Bearer {resolved_api_key}",
"Content-Type": "application/json",
}
payload_multi = {
"model": model_name,
"messages": [{"role": "user", "content": content_multi}],
}
payload_single = {
"model": model_name,
"messages": [{"role": "user", "content": content_multi_fallback[-2:] if len(content_multi_fallback) >= 2 else content_multi_fallback}],
}
with httpx.Client(timeout=float(timeout_sec)) as client:
try:
r = post_with_retry(client, url=url, headers=headers, payload=payload_multi)
except Exception as e:
return {"ok": False, "error": f"http request failed: {type(e).__name__}: {e}", "backend_shape": "multi"}
if r.status_code >= 400:
try:
r2 = post_with_retry(client, url=url, headers=headers, payload=payload_single)
except Exception as e:
return {
"ok": False,
"error": f"http fallback request failed: {type(e).__name__}: {e}",
"backend_shape": "single-fallback-failed",
}
if r2.status_code >= 400:
return {
"ok": False,
"error": f"http {r2.status_code}: {r2.text[:500]}",
"backend_shape": "single-fallback-failed",
}
try:
obj2 = r2.json()
except Exception:
return {"ok": False, "error": f"non-json response: {r2.text[:500]}", "backend_shape": "single"}
text, out_images = extract_text_and_images(obj2 if isinstance(obj2, dict) else {})
return {
"ok": True,
"text": text,
"images": out_images,
"backend_shape": "single",
"input_kind": input_kind[-1:] if input_kind else ["data_url"],
}
try:
obj = r.json()
except Exception:
return {"ok": False, "error": f"non-json response: {r.text[:500]}", "backend_shape": "multi"}
text, out_images = extract_text_and_images(obj if isinstance(obj, dict) else {})
return {
"ok": True,
"text": text,
"images": out_images,
"backend_shape": "multi",
"input_kind": input_kind if input_kind else ["data_url"],
}
__all__ = ["send_legacy_image_messages"]

View file

@ -1,685 +0,0 @@
from __future__ import annotations
import base64
import io
import os
import time
from typing import Any
import httpx
from PIL import Image
from oclaw.runtime.prompt_templates import render_prompt
def _summarize_data_url(url: str) -> dict[str, Any]:
"""
Summarize data URLs without logging raw base64 payload.
"""
s = str(url or "")
if not s.startswith("data:"):
return {"kind": "url", "prefix": s[:30]}
mime = "image/jpeg"
try:
# data:{mime};base64,{b64}
head = s.split(";", 1)[0] # data:image/xxx
if head.startswith("data:"):
mime = head[len("data:") :] or mime
except Exception:
pass
b64_part = s.split(",", 1)[1] if "," in s else ""
has_b64 = ";base64," in s
return {"kind": "data_url", "mime": mime, "has_base64": has_b64, "b64_len": len(b64_part)}
def _summarize_dashscope_messages(messages: list[dict[str, Any]], *, max_items: int = 3) -> dict[str, Any]:
"""
Debug-only summary of messages[0].content structure.
"""
if not messages or not isinstance(messages, list):
return {"content_items": []}
first = messages[0] if messages else {}
if not isinstance(first, dict):
return {"content_items": []}
content = first.get("content")
if not isinstance(content, list):
return {"content_items": []}
out: list[dict[str, Any]] = []
for it in content[:max_items]:
if not isinstance(it, dict):
out.append({"item_type": "non_dict"})
continue
item: dict[str, Any] = {"keys": sorted([str(k) for k in it.keys()])}
if "type" in it:
item["type"] = it.get("type")
if "image" in it:
item["image"] = _summarize_data_url(str(it.get("image") or ""))
if "image_url" in it:
iu = it.get("image_url")
if isinstance(iu, dict) and "url" in iu:
item["image_url"] = _summarize_data_url(str(iu.get("url") or ""))
else:
item["image_url"] = {"kind": "image_url_non_dict"}
if "text" in it:
item["text_len"] = len(str(it.get("text") or ""))
out.append(item)
return {"content_items": out}
def _join_url(base: str, path: str) -> str:
b = (base or "").rstrip("/")
p = (path or "").lstrip("/")
return f"{b}/{p}"
def _is_data_url(s: str) -> bool:
return s.startswith("data:") and ";base64," in s
def _compress_data_url_image(
data_url: str,
*,
max_side: int = 1600,
max_bytes: int = 2 * 1024 * 1024,
jpeg_quality: int = 82,
) -> str:
"""Best-effort compress image data URLs to reduce transport failures."""
if not _is_data_url(data_url):
return data_url
try:
header, b64 = data_url.split(";base64,", 1)
mime = header.replace("data:", "", 1).strip() or "image/jpeg"
raw = base64.b64decode(b64.encode("ascii"))
if len(raw) <= max_bytes:
return data_url
with Image.open(io.BytesIO(raw)) as im:
im = im.convert("RGB")
w, h = im.size
longest = max(w, h)
if longest > max_side:
scale = max_side / float(longest)
nw, nh = max(1, int(w * scale)), max(1, int(h * scale))
im = im.resize((nw, nh), Image.Resampling.LANCZOS)
out = io.BytesIO()
# Use JPEG for broad compatibility and smaller payload.
im.save(out, format="JPEG", quality=max(30, min(95, int(jpeg_quality))), optimize=True)
blob = out.getvalue()
if not blob:
return data_url
b64_new = base64.b64encode(blob).decode("ascii")
return f"data:{'image/jpeg' if mime.startswith('image/') else mime};base64,{b64_new}"
except Exception:
return data_url
def _post_with_retry(
client: httpx.Client,
*,
url: str,
headers: dict[str, str],
payload: dict[str, Any],
retries: int = 3,
backoff_sec: float = 0.8,
) -> httpx.Response:
last_exc: Exception | None = None
for attempt in range(1, max(1, retries) + 1):
try:
return client.post(url, headers=headers, json=payload)
except (httpx.ReadError, httpx.ConnectError, httpx.TimeoutException) as e:
last_exc = e
if attempt >= retries:
break
time.sleep(backoff_sec * (2 ** (attempt - 1)))
assert last_exc is not None
raise last_exc
def _extract_text_and_images(resp_json: dict[str, Any]) -> tuple[str, list[str]]:
text_parts: list[str] = []
images: list[str] = []
choices = resp_json.get("choices")
if isinstance(choices, list) and choices:
msg = choices[0].get("message") if isinstance(choices[0], dict) else None
if isinstance(msg, dict):
c = msg.get("content")
if isinstance(c, str):
text_parts.append(c)
elif isinstance(c, list):
for it in c:
if not isinstance(it, dict):
continue
if isinstance(it.get("text"), str):
text_parts.append(str(it.get("text")))
elif isinstance(it.get("image"), str):
images.append(str(it.get("image")))
elif isinstance(it.get("image_url"), str):
images.append(str(it.get("image_url")))
elif isinstance(it.get("image_url"), dict) and isinstance(it["image_url"].get("url"), str):
images.append(str(it["image_url"]["url"]))
elif isinstance(it.get("b64_json"), str):
images.append(f"data:image/png;base64,{it['b64_json']}")
# fallback for image APIs that return data[0].b64_json/url
if not images:
data = resp_json.get("data")
if isinstance(data, list):
for it in data:
if not isinstance(it, dict):
continue
if isinstance(it.get("url"), str):
images.append(str(it.get("url")))
if isinstance(it.get("b64_json"), str):
images.append(f"data:image/png;base64,{it['b64_json']}")
return "\n".join([x for x in text_parts if x]).strip(), images
def _extract_from_dashscope_response(resp: Any) -> tuple[str, list[str], str]:
"""Parse dashscope SDK response object (or dict-like) into text/images."""
text_parts: list[str] = []
images: list[str] = []
def _as_dict(x: Any) -> dict[str, Any]:
if isinstance(x, dict):
return x
if hasattr(x, "__dict__"):
try:
return dict(vars(x))
except Exception:
return {}
return {}
if isinstance(resp, dict):
obj = resp
else:
obj = _as_dict(resp)
if not obj and hasattr(resp, "to_dict"):
try:
obj = resp.to_dict()
except Exception:
obj = {}
status_code = int(obj.get("status_code") or getattr(resp, "status_code", 0) or 0)
output = obj.get("output") if isinstance(obj.get("output"), dict) else _as_dict(getattr(resp, "output", {}))
choices = output.get("choices") if isinstance(output, dict) else None
if isinstance(choices, list) and choices:
msg = choices[0].get("message") if isinstance(choices[0], dict) else _as_dict(getattr(choices[0], "message", {}))
content = msg.get("content")
if isinstance(content, list):
for it in content:
# DashScope SDK sometimes returns content items as objects, not plain dicts.
# Convert best-effort so we don't silently drop images.
it_d: dict[str, Any]
if isinstance(it, dict):
it_d = it
else:
it_d = _as_dict(it)
if not it_d:
continue
if isinstance(it_d.get("text"), str):
text_parts.append(str(it_d["text"]))
# image can be str/dict/list depending on SDK variant
img_val = it_d.get("image")
if isinstance(img_val, str):
images.append(img_val)
elif isinstance(img_val, dict):
if isinstance(img_val.get("url"), str):
images.append(str(img_val["url"]))
elif isinstance(img_val, list):
for elem in img_val:
if isinstance(elem, str):
images.append(elem)
elif isinstance(elem, dict) and isinstance(elem.get("url"), str):
images.append(str(elem["url"]))
if isinstance(it_d.get("image_url"), str):
images.append(str(it_d["image_url"]))
elif isinstance(it_d.get("image_url"), dict) and isinstance(it_d["image_url"].get("url"), str):
images.append(str(it_d["image_url"]["url"]))
elif isinstance(it_d.get("image_url"), list):
for elem in it_d["image_url"]:
if isinstance(elem, str):
images.append(elem)
elif isinstance(elem, dict) and isinstance(elem.get("url"), str):
images.append(str(elem["url"]))
b64_val = it_d.get("b64_json")
if isinstance(b64_val, str):
images.append(f"data:image/png;base64,{b64_val}")
elif isinstance(b64_val, list):
for elem in b64_val:
if isinstance(elem, str):
images.append(f"data:image/png;base64,{elem}")
# fallback for variants returning output.data[{url|b64_json}]
if not images and isinstance(output, dict):
data = output.get("data")
if isinstance(data, list):
for it in data:
it_d: dict[str, Any]
if isinstance(it, dict):
it_d = it
else:
it_d = _as_dict(it)
if not it_d:
continue
url_val = it_d.get("url")
if isinstance(url_val, str):
images.append(url_val)
elif isinstance(url_val, list):
for elem in url_val:
if isinstance(elem, str):
images.append(elem)
b64_val = it_d.get("b64_json")
if isinstance(b64_val, str):
images.append(f"data:image/png;base64,{b64_val}")
elif isinstance(b64_val, list):
for elem in b64_val:
if isinstance(elem, str):
images.append(f"data:image/png;base64,{elem}")
return "\n".join([x for x in text_parts if x]).strip(), images, str(status_code)
def _dashscope_messages(images: list[str], prompt: str) -> list[dict[str, Any]]:
prompt_text = str(prompt or "").strip() or render_prompt("image/default_edit_prompt.zh.md", strict=True)
content: list[dict[str, Any]] = [{"image": img} for img in images]
content.append({"text": prompt_text})
return [{"role": "user", "content": content}]
def _http_content_blocks(images: list[str], prompt: str, *, typed: bool) -> list[dict[str, Any]]:
prompt_text = str(prompt or "").strip() or render_prompt("image/default_edit_prompt.zh.md", strict=True)
if not typed:
blocks: list[dict[str, Any]] = [{"image": img} for img in images]
blocks.append({"text": prompt_text})
return blocks
# DashScope compatible-mode error is very explicit about `content[*].type` missing.
# To align with DashScope's simple schema keys ({"image": ...}, {"text": ...}),
# we keep those keys and only add the `type` discriminator.
blocks_typed: list[dict[str, Any]] = [{"type": "image", "image": img} for img in images]
blocks_typed.append({"type": "text", "text": prompt_text})
return blocks_typed
def _responses_input_messages(images: list[str], prompt: str) -> list[dict[str, Any]]:
prompt_text = str(prompt or "").strip() or render_prompt("image/default_edit_prompt.zh.md", strict=True)
content: list[dict[str, Any]] = []
for img in images:
s = str(img or "").strip()
if not s:
continue
if s.startswith("data:") or s.startswith("http://") or s.startswith("https://"):
content.append({"type": "input_image", "image_url": s})
if prompt_text:
content.append({"type": "input_text", "text": prompt_text})
return [{"role": "user", "content": content}]
def _dashscope_typed_messages(images: list[str], prompt: str) -> list[dict[str, Any]]:
"""
DashScope compatible-mode often requires a typed schema, where each content item has `type`.
Example:
{"type":"image_url","image_url":{"url":"..."}}, {"type":"text","text":"..."}
"""
typed_blocks = _http_content_blocks(images, prompt, typed=True)
return [{"role": "user", "content": typed_blocks}]
def _send_via_dashscope(
*,
images: list[str],
prompt: str,
model_name: str,
api_key: str | None = None,
base_http_api_url: str | None = None,
force_typed_schema: bool = False,
) -> dict[str, Any]:
try:
import dashscope # type: ignore
from dashscope import MultiModalConversation # type: ignore
except Exception as e:
return {"ok": False, "error": f"dashscope package unavailable: {type(e).__name__}: {e}"}
resolved_key = (api_key or os.getenv("DASHSCOPE_API_KEY") or "").strip()
if not resolved_key:
return {"ok": False, "error": "missing DASHSCOPE_API_KEY"}
ds_base = (base_http_api_url or os.getenv("DASHSCOPE_BASE_HTTP_API_URL") or "").strip()
if ds_base:
dashscope.base_http_api_url = ds_base
call_kwargs_base: dict[str, Any] = {
"api_key": resolved_key,
"model": model_name,
"stream": False,
}
# Optional params compatible with user's sample
if os.getenv("DASHSCOPE_IMAGE_N"):
try:
call_kwargs_base["n"] = int(os.getenv("DASHSCOPE_IMAGE_N") or "1")
except Exception:
pass
if os.getenv("DASHSCOPE_IMAGE_WATERMARK"):
call_kwargs_base["watermark"] = os.getenv("DASHSCOPE_IMAGE_WATERMARK", "false").lower() in ("1", "true", "yes")
if os.getenv("DASHSCOPE_IMAGE_NEGATIVE_PROMPT"):
call_kwargs_base["negative_prompt"] = os.getenv("DASHSCOPE_IMAGE_NEGATIVE_PROMPT")
if os.getenv("DASHSCOPE_IMAGE_PROMPT_EXTEND"):
call_kwargs_base["prompt_extend"] = os.getenv("DASHSCOPE_IMAGE_PROMPT_EXTEND", "true").lower() in ("1", "true", "yes")
if os.getenv("DASHSCOPE_IMAGE_SIZE"):
call_kwargs_base["size"] = os.getenv("DASHSCOPE_IMAGE_SIZE")
def _call_with_retry(messages: list[dict[str, Any]]) -> tuple[Any | None, Exception | None]:
retries = max(1, int(os.getenv("AIA_IMAGE_RETRIES", "3") or "3"))
backoff_sec = float(os.getenv("AIA_IMAGE_RETRY_BACKOFF_SEC", "0.8") or "0.8")
last_exc: Exception | None = None
resp_obj: Any | None = None
for attempt in range(1, retries + 1):
try:
kwargs = dict(call_kwargs_base)
kwargs["messages"] = messages
resp_obj = MultiModalConversation.call(**kwargs)
return resp_obj, None
except Exception as e:
last_exc = e
if attempt >= retries:
break
time.sleep(backoff_sec * (2 ** (attempt - 1)))
return None, last_exc
# DashScope SDK path:
# Compatible-mode may require typed content schema (`content[*].type`),
# so if we detect compatible-mode, prefer typed schema directly.
typed_msgs = _dashscope_typed_messages(images, prompt)
simple_msgs = _dashscope_messages(images, prompt)
first_msgs = typed_msgs if force_typed_schema else simple_msgs
second_msgs = simple_msgs if force_typed_schema else typed_msgs
first_schema = "typed" if first_msgs is typed_msgs else "simple"
second_schema = "simple" if first_schema == "typed" else "typed"
debug_first = _summarize_dashscope_messages(first_msgs)
debug_second = _summarize_dashscope_messages(second_msgs)
used_schema = first_schema
used_debug = debug_first
resp, err = _call_with_retry(first_msgs)
if resp is None:
# If the first schema fails without a response, try the other schema once.
resp2, err2 = _call_with_retry(second_msgs)
if resp2 is None:
assert err2 is not None
return {
"ok": False,
"error": (
f"dashscope call failed: {type(err2).__name__}: {err2} "
f"(debug={{first_schema={first_schema},second_schema={second_schema}}})"
)[:900],
}
resp = resp2
used_schema = second_schema
used_debug = debug_second
text, out_images, status = _extract_from_dashscope_response(resp)
try:
status_code = int(status)
except Exception:
status_code = 0
if status_code and status_code != 200:
# DashScope may return HTTP 429 (rate limit) as a non-exception status.
# _call_with_retry only retries on exceptions, so handle 429 explicitly here.
if status_code == 429:
status_retries = max(1, int(os.getenv("AIA_IMAGE_STATUS_RETRIES", "4") or "4"))
status_backoff_sec = float(os.getenv("AIA_IMAGE_STATUS_RETRY_BACKOFF_SEC", "5.0") or "5.0")
for attempt in range(1, status_retries):
time.sleep(status_backoff_sec * (2 ** (attempt - 1)))
resp_retry, _err_retry = _call_with_retry(simple_msgs)
if resp_retry is None:
continue
text_r, out_images_r, status_r = _extract_from_dashscope_response(resp_retry)
try:
status_r_code = int(status_r)
except Exception:
status_r_code = 0
if status_r_code == 200 or not status_r_code:
return {
"ok": True,
"text": text_r,
"images": out_images_r,
"backend_shape": "dashscope",
}
if status_r_code == 400:
# If we hit schema issues after rate limit, fall back to typed once.
typed_msgs = _dashscope_typed_messages(images, prompt)
resp_t, _err_t = _call_with_retry(typed_msgs)
if resp_t is not None:
text_t, out_images_t, status_t = _extract_from_dashscope_response(resp_t)
try:
status_t_code = int(status_t)
except Exception:
status_t_code = 0
if status_t_code == 200 or not status_t_code:
return {
"ok": True,
"text": text_t,
"images": out_images_t,
"backend_shape": "dashscope",
}
# continue loop for more 429 tries
code = getattr(resp, "code", "") or ""
msg = getattr(resp, "message", "") or ""
return {
"ok": False,
"error": (
f"dashscope status={status_code} code={code} debug={{used_schema={used_schema},used_debug={used_debug}}} "
f"message={msg[:400]} (after 429 retries)"
),
"backend_shape": "dashscope",
}
# Compatible-mode may reject "simple" schema with HTTP 400 and a message like:
# messages[0].content[1].type missing required parameter.
# To make this robust, retry typed schema whenever we see 400.
if status_code == 400:
resp2, _err2 = _call_with_retry(typed_msgs)
if resp2 is not None:
text2, out_images2, status2 = _extract_from_dashscope_response(resp2)
try:
status2_code = int(status2)
except Exception:
status2_code = 0
if status2_code == 200 or not status2_code:
return {
"ok": True,
"text": text2,
"images": out_images2,
"backend_shape": "dashscope",
}
code = getattr(resp, "code", "") or ""
msg = getattr(resp, "message", "") or ""
return {
"ok": False,
"error": (
f"dashscope status={status_code} code={code} debug={{used_schema={used_schema},used_debug={used_debug}}} "
f"message={msg[:400]}"
),
"backend_shape": "dashscope",
}
return {
"ok": True,
"text": text,
"images": out_images,
"backend_shape": "dashscope",
"debug_used_schema": used_schema,
"debug_used_debug": used_debug,
}
def send_image_messages(
*,
images: list[str],
prompt: str,
model: str | None = None,
timeout_sec: int = 60,
api_key: str | None = None,
base_url: str | None = None,
dashscope_api_key: str | None = None,
dashscope_base_http_api_url: str | None = None,
) -> dict[str, Any]:
"""Send multimodal messages payload with image/text content blocks.
Preferred payload: {"messages":[{"role":"user","content":[{"image":"..."},{"text":"..."}]}]}
Auto-compat: try multi-image first, then fallback to single `image` field style.
"""
model_name = (
model
or os.getenv("AIA_IMAGE_MODEL")
or os.getenv("DASHSCOPE_IMAGE_MODEL")
or os.getenv("OPENAI_MODEL")
or "qwen-image-2.0-pro"
).strip()
resolved_base_url = (base_url or os.getenv("AIA_IMAGE_BASE_URL") or os.getenv("OPENAI_BASE_URL") or "https://api.openai.com/v1").strip()
resolved_api_key = (api_key or os.getenv("AIA_IMAGE_API_KEY") or os.getenv("OPENAI_API_KEY") or "").strip()
resolved_ds_key = (dashscope_api_key or os.getenv("DASHSCOPE_API_KEY") or "").strip()
resolved_ds_base = (dashscope_base_http_api_url or os.getenv("DASHSCOPE_BASE_HTTP_API_URL") or "").strip()
endpoint = (os.getenv("AIA_IMAGE_CHAT_ENDPOINT") or "/chat/completions").strip()
url = _join_url(resolved_base_url, endpoint)
if not images:
return {"ok": False, "error": "at least one image input is required"}
raw_selected = [str(x).strip() for x in images if str(x).strip()][:3]
selected: list[str] = []
input_kind: list[str] = []
for img in raw_selected:
if _is_data_url(img):
selected.append(_compress_data_url_image(img))
input_kind.append("data_url")
continue
if img.startswith("http://") or img.startswith("https://"):
# Keep URL as-is when caller provides URL input.
selected.append(img)
input_kind.append("url")
continue
if not selected:
return {"ok": False, "error": "no usable image input (expected URL or data URL)"}
if resolved_ds_key:
# SpecialistAgent already normalizes DashScope SDK calls to native `/api/v1`.
# For the SDK path, prefer the official simple schema for both single and
# multi-image requests: {"image": ...}, {"text": ...}.
#
# This avoids a split where multi-image succeeds but single-image still
# trips over `messages[0].content[*].type` handling.
ds = _send_via_dashscope(
images=selected,
prompt=prompt,
model_name=model_name,
api_key=resolved_ds_key,
base_http_api_url=resolved_ds_base,
force_typed_schema=False,
)
ds["input_kind"] = input_kind if input_kind else ["data_url"]
# When DashScope credentials are present, always return the DashScope path result.
# Do not silently fall through to the OpenAI-compatible HTTP path, because that can
# mask the real SDK error with a secondary `content[*].type` error from another backend path.
return ds
if not resolved_api_key:
return {"ok": False, "error": "missing api key (AIA_IMAGE_API_KEY/OPENAI_API_KEY or DASHSCOPE_API_KEY)"}
prefer_typed_http = "compatible-mode" in resolved_base_url.lower()
content_multi = _http_content_blocks(selected, prompt, typed=prefer_typed_http)
content_multi_fallback = _http_content_blocks(selected, prompt, typed=not prefer_typed_http)
headers = {
"Authorization": f"Bearer {resolved_api_key}",
"Content-Type": "application/json",
}
payload_multi = {
"model": model_name,
"messages": [{"role": "user", "content": content_multi}],
}
payload_single = {
"model": model_name,
"messages": [{"role": "user", "content": content_multi_fallback[-2:] if len(content_multi_fallback) >= 2 else content_multi_fallback}],
}
responses_payload = {
"model": model_name,
"input": {"messages": _responses_input_messages(selected, prompt)},
}
with httpx.Client(timeout=float(timeout_sec)) as client:
# try multi-image payload first
try:
r = _post_with_retry(client, url=url, headers=headers, payload=payload_multi)
except Exception as e:
return {"ok": False, "error": f"http request failed: {type(e).__name__}: {e}", "backend_shape": "multi"}
if r.status_code >= 400:
# fallback single-image shape for strict backends
try:
r2 = _post_with_retry(client, url=url, headers=headers, payload=payload_single)
except Exception as e:
return {
"ok": False,
"error": f"http fallback request failed: {type(e).__name__}: {e}",
"backend_shape": "single-fallback-failed",
}
if r2.status_code >= 400:
body2 = str(r2.text or "")
if ("input.messages" in body2) or ("Input should be 'user'" in body2):
# OpenAI-compatible Responses schema fallback.
try:
r3 = _post_with_retry(
client,
url=_join_url(resolved_base_url, "/responses"),
headers=headers,
payload=responses_payload,
)
if r3.status_code < 400:
obj3 = r3.json()
text3, out_images3 = _extract_text_and_images(obj3 if isinstance(obj3, dict) else {})
return {
"ok": True,
"text": text3,
"images": out_images3,
"backend_shape": "responses-fallback",
"input_kind": input_kind if input_kind else ["data_url"],
}
except Exception:
pass
return {
"ok": False,
"error": f"http {r2.status_code}: {r2.text[:500]}",
"backend_shape": "single-fallback-failed",
}
try:
obj2 = r2.json()
except Exception:
return {"ok": False, "error": f"non-json response: {r2.text[:500]}", "backend_shape": "single"}
text, out_images = _extract_text_and_images(obj2 if isinstance(obj2, dict) else {})
return {
"ok": True,
"text": text,
"images": out_images,
"backend_shape": "single",
"input_kind": input_kind[-1:] if input_kind else ["data_url"],
}
try:
obj = r.json()
except Exception:
return {"ok": False, "error": f"non-json response: {r.text[:500]}", "backend_shape": "multi"}
text, out_images = _extract_text_and_images(obj if isinstance(obj, dict) else {})
return {
"ok": True,
"text": text,
"images": out_images,
"backend_shape": "multi",
"input_kind": input_kind if input_kind else ["data_url"],
}
__all__ = ["send_image_messages"]

View file

@ -0,0 +1,200 @@
"""OCR / vision lane: OpenAI-compatible multimodal ``image_url`` + ``text`` only."""
from __future__ import annotations
from typing import Any
import httpx
from oclaw.platform.llm.image_http_common import (
compress_data_url_image,
env_ocr_lane_api_key,
env_ocr_lane_base_url,
env_ocr_lane_model,
env_ocr_lane_chat_endpoint,
extract_text_and_images,
is_data_url,
join_url,
post_with_retry,
)
from oclaw.runtime.prompt_templates import render_prompt
# Shared with query_image_attachment and OpenAI-compat multimodal→text downgrade.
VISION_OCR_EXTRACT_PROMPT_ZH = (
"请只提取图片中可见文字并按阅读顺序输出。"
"如果有表格,保持行列结构;不确定的内容标注为[unclear]。"
)
VISION_DESCRIBE_PROMPT_ZH = (
"请详细描述这张图片的主要内容、对象、场景和可见文字。"
"回答请使用要点列表,避免臆测。"
)
def _http_content_blocks_openai_vision(images: list[str], prompt: str) -> list[dict[str, Any]]:
prompt_text = str(prompt or "").strip() or render_prompt("image/default_edit_prompt.zh.md", strict=True)
blocks: list[dict[str, Any]] = []
for img in images:
s = str(img or "").strip()
if not s:
continue
blocks.append({"type": "image_url", "image_url": {"url": s}})
if prompt_text:
blocks.append({"type": "text", "text": prompt_text})
return blocks
def vision_llm_backend_status(
*,
api_key: str | None = None,
base_url: str | None = None,
model: str | None = None,
) -> dict[str, Any]:
ak = (api_key or env_ocr_lane_api_key()).strip()
bu = (base_url or env_ocr_lane_base_url()).strip()
md = ((model or "").strip() or env_ocr_lane_model())
if ak and bu and md:
return {"ok": True, "backend": "aia_ocr_http"}
return {
"ok": False,
"backend": None,
"hint_zh": (
"未配置 OCR/看图通道:请同时设置 AIA_OCR_BASE_URL、AIA_OCR_API_KEY、AIA_OCR_MODEL"
"(OpenAI-compatible 多模态 /chat/completions)。不设默认模型 id。"
),
"hint_en": (
"OCR/vision lane not configured: set AIA_OCR_BASE_URL, AIA_OCR_API_KEY, and AIA_OCR_MODEL. "
"No default model id."
),
}
def send_ocr_image_messages(
*,
images: list[str],
prompt: str,
model: str | None = None,
timeout_sec: int = 60,
api_key: str | None = None,
base_url: str | None = None,
) -> dict[str, Any]:
"""OpenAI Chat Completions multimodal only (``/chat/completions``): multi-image then single-image."""
resolved_base_url = (base_url or env_ocr_lane_base_url()).strip()
resolved_api_key = (api_key or env_ocr_lane_api_key()).strip()
model_name = ((model or "").strip() or env_ocr_lane_model())
endpoint = env_ocr_lane_chat_endpoint()
url = join_url(resolved_base_url, endpoint)
if not resolved_api_key or not resolved_base_url:
return {
"ok": False,
"error": "missing AIA_OCR_API_KEY or AIA_OCR_BASE_URL (or pass api_key and base_url)",
}
if not model_name:
return {
"ok": False,
"error": "missing AIA_OCR_MODEL (or pass model=...) — no default model id",
}
if not images:
return {"ok": False, "error": "at least one image input is required"}
raw_selected = [str(x).strip() for x in images if str(x).strip()][:3]
selected: list[str] = []
input_kind: list[str] = []
for img in raw_selected:
if is_data_url(img):
selected.append(compress_data_url_image(img))
input_kind.append("data_url")
continue
if img.startswith("http://") or img.startswith("https://"):
selected.append(img)
input_kind.append("url")
continue
if not selected:
return {"ok": False, "error": "no usable image input (expected URL or data URL)"}
content_openai = _http_content_blocks_openai_vision(selected, prompt)
content_openai_single = _http_content_blocks_openai_vision(selected[-1:], prompt) if selected else []
headers = {
"Authorization": f"Bearer {resolved_api_key}",
"Content-Type": "application/json",
}
payload_openai_multi = {
"model": model_name,
"messages": [{"role": "user", "content": content_openai}],
}
payload_openai_single = {
"model": model_name,
"messages": [{"role": "user", "content": content_openai_single}],
}
def _ok_response(resp: httpx.Response) -> tuple[dict[str, Any] | None, bool]:
if resp.status_code >= 400:
return None, False
try:
obj = resp.json()
except Exception:
return None, False
if not isinstance(obj, dict):
return None, False
text, out_imgs = extract_text_and_images(obj)
if not str(text or "").strip():
return obj, False
return {"text": text, "images": out_imgs}, True
err_last = ""
with httpx.Client(timeout=float(timeout_sec)) as client:
try:
r0 = post_with_retry(client, url=url, headers=headers, payload=payload_openai_multi)
except Exception as e:
return {"ok": False, "error": f"http request failed: {type(e).__name__}: {e}", "backend_shape": "openai-multi"}
if r0 is not None:
if r0.status_code >= 400:
err_last = f"http {r0.status_code}: {r0.text[:500]}"
else:
parsed, ok = _ok_response(r0)
if ok and isinstance(parsed, dict):
return {
"ok": True,
"text": str(parsed.get("text") or ""),
"images": list(parsed.get("images") or []),
"backend_shape": "openai-multi",
"input_kind": input_kind if input_kind else ["data_url"],
}
try:
r1 = post_with_retry(client, url=url, headers=headers, payload=payload_openai_single)
except Exception as e:
return {
"ok": False,
"error": err_last or f"openai-single request failed: {type(e).__name__}: {e}",
"backend_shape": "openai-single-failed",
}
if r1.status_code >= 400:
return {
"ok": False,
"error": err_last or f"http {r1.status_code}: {r1.text[:500]}",
"backend_shape": "openai-single-failed",
}
try:
obj1 = r1.json()
except Exception:
return {"ok": False, "error": f"non-json response: {r1.text[:500]}", "backend_shape": "openai-single"}
text, out_images = extract_text_and_images(obj1 if isinstance(obj1, dict) else {})
out: dict[str, Any] = {
"ok": bool(str(text or "").strip()),
"text": text,
"images": out_images,
"backend_shape": "openai-single",
"input_kind": input_kind[-1:] if input_kind else ["data_url"],
}
if not str(text or "").strip():
out["error"] = "empty assistant text after openai-single"
return out
__all__ = [
"VISION_DESCRIBE_PROMPT_ZH",
"VISION_OCR_EXTRACT_PROMPT_ZH",
"send_ocr_image_messages",
"vision_llm_backend_status",
]

View file

@ -7,7 +7,105 @@ from typing import Any
logger = logging.getLogger(__name__)
_MIN_TOOL_PARAMETERS: dict[str, Any] = {"type": "object", "additionalProperties": True}
# Full minimal object schema for ``function.parameters`` (wire / shrink / tier_minimal).
# A bare ``{type, additionalProperties}`` alone has led strict gateways to emit or validate
# ``required: null`` / missing array fields — always send explicit ``properties`` + ``required``.
_MIN_TOOL_PARAMETERS: dict[str, Any] = {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": True,
}
_COMBO_KEYS = frozenset({"allOf", "anyOf", "oneOf", "prefixItems"})
def _schema_type_tags(t: Any) -> set[str]:
if t is None:
return set()
if isinstance(t, list):
return {str(x).strip().lower() for x in t if x is not None and str(x).strip()}
s = str(t).strip().lower()
return {s} if s else set()
def complete_json_schema_for_openai_tools(obj: Any) -> Any:
"""Recursively ensure JSON-schema fragments match what strict OpenAI-compat gateways expect.
This is **structural completion** for our wire path (tier/shrink/SDK), not a general MCP fix-all:
every ``type: object`` node gets explicit ``properties`` + ``required`` (list); every
``type: array`` gets ``items`` (object). Combo keywords that must be arrays and are ``null``
are dropped; list elements that are ``null`` are removed.
"""
if isinstance(obj, dict):
out: dict[str, Any] = {}
for k, v in obj.items():
key = str(k)
if key in _COMBO_KEYS and v is None:
if key in ("allOf", "prefixItems"):
out[key] = []
continue
out[key] = complete_json_schema_for_openai_tools(v)
for combo in _COMBO_KEYS:
if combo not in out:
continue
val = out[combo]
if not isinstance(val, list):
continue
cleaned = [complete_json_schema_for_openai_tools(x) for x in val if x is not None]
if combo in ("anyOf", "oneOf") and not cleaned:
out.pop(combo, None)
else:
out[combo] = cleaned
if isinstance(out.get("properties"), dict):
t0 = out.get("type")
if t0 is None or (isinstance(t0, str) and not str(t0).strip()):
out["type"] = "object"
tags = _schema_type_tags(out.get("type"))
if "object" in tags:
if not isinstance(out.get("properties"), dict):
out["properties"] = {}
r = out.get("required")
if r is None or not isinstance(r, list):
out["required"] = []
if "array" in tags:
if out.get("items") is None:
out["items"] = {}
elif isinstance(out.get("items"), dict):
out["items"] = complete_json_schema_for_openai_tools(out["items"])
return out
if isinstance(obj, list):
return [complete_json_schema_for_openai_tools(x) for x in obj]
return obj
def complete_openai_tools_wire_parameters(tools: list[dict[str, Any]]) -> list[dict[str, Any]]:
"""Apply :func:`complete_json_schema_for_openai_tools` to each function's ``parameters``."""
out: list[dict[str, Any]] = []
for ent in tools or []:
if not isinstance(ent, dict):
continue
if str(ent.get("type") or "") != "function":
out.append(ent)
continue
fn = ent.get("function")
if not isinstance(fn, dict):
out.append(ent)
continue
params = fn.get("parameters")
if not isinstance(params, dict):
row = dict(ent)
row["function"] = {**dict(fn), "parameters": dict(_MIN_TOOL_PARAMETERS)}
out.append(row)
continue
row = dict(ent)
row["function"] = {**dict(fn), "parameters": complete_json_schema_for_openai_tools(dict(params))}
out.append(row)
return out
def openai_tools_json_byte_length(tools: list[dict[str, Any]]) -> int:
@ -96,8 +194,12 @@ def default_max_openai_tools_json_bytes(base_url: str | None) -> int | None:
__all__ = [
"MIN_OPENAI_FUNCTION_PARAMETERS",
"complete_json_schema_for_openai_tools",
"complete_openai_tools_wire_parameters",
"default_max_openai_tools_json_bytes",
"openai_tools_json_byte_length",
"shrink_openai_tools_payload_for_api",
]
MIN_OPENAI_FUNCTION_PARAMETERS = _MIN_TOOL_PARAMETERS

View file

@ -12,6 +12,8 @@ import os
from datetime import datetime, timedelta, timezone
from typing import Any
from oclaw.platform.llm.tool_schema import MIN_OPENAI_FUNCTION_PARAMETERS, complete_openai_tools_wire_parameters
logger = logging.getLogger(__name__)
SETTINGS_KEY_PENALTY_STATE = "mcp_tool_wire_penalty_state"
@ -25,7 +27,7 @@ SETTINGS_KEY_PENALTY_STATE_BY_ROLE = "mcp_tool_wire_penalty_state_by_role"
SETTINGS_KEY_TOOL_POLICIES_BY_ROLE = "mcp_tool_wire_tool_policies_by_role"
SETTINGS_KEY_ROLE_MODE_BY_ROLE = "mcp_tool_wire_role_mode_by_role"
_MIN_PARAMETERS: dict[str, Any] = {"type": "object", "additionalProperties": True}
_MIN_PARAMETERS: dict[str, Any] = dict(MIN_OPENAI_FUNCTION_PARAMETERS)
def _env_prefixed(name_suffix: str, default: str = "") -> str:
@ -413,6 +415,12 @@ def prepare_openai_tools_for_llm_api(
if not tools:
return tools
tools = complete_openai_tools_wire_parameters(tools)
def _finalize(result: list[dict[str, Any]]) -> list[dict[str, Any]]:
"""Re-apply completion after tier/shrink/squeeze (those paths emit fresh ``parameters`` dicts)."""
return complete_openai_tools_wire_parameters(result)
policies: dict[str, int] = {}
admin: dict[str, Any] = _admin_defaults_from_env()
role_mode = "restricted"
@ -450,17 +458,17 @@ def prepare_openai_tools_for_llm_api(
if role_mode == "forbidden":
out = _filter_mcp_out(tools)
if max_json_bytes is not None and max_json_bytes > 0:
return _fallback_shrink(out, max_json_bytes)
return out
return _finalize(_fallback_shrink(out, max_json_bytes))
return _finalize(out)
if role_mode == "unrestricted":
if max_json_bytes is not None and max_json_bytes > 0:
return _fallback_shrink(tools_pass1, max_json_bytes)
return tools_pass1
return _finalize(_fallback_shrink(tools_pass1, max_json_bytes))
return _finalize(tools_pass1)
if not wire_graduation_effective(base_url, admin):
if max_json_bytes is not None and max_json_bytes > 0:
return _fallback_shrink(tools_pass1, max_json_bytes)
return tools_pass1
return _finalize(_fallback_shrink(tools_pass1, max_json_bytes))
return _finalize(tools_pass1)
top_n = int(admin.get("top_n_full") or 20)
top_n = max(3, min(top_n, 80))
@ -481,8 +489,8 @@ def prepare_openai_tools_for_llm_api(
except Exception as exc:
logger.warning("tool_wire_policy: usage store unavailable (%s); fallback shrink only", exc)
if max_json_bytes is not None and max_json_bytes > 0:
return _fallback_shrink(tools_pass1, max_json_bytes)
return tools_pass1
return _finalize(_fallback_shrink(tools_pass1, max_json_bytes))
return _finalize(tools_pass1)
ranked = sorted(
usage_map.items(),
@ -601,9 +609,9 @@ def prepare_openai_tools_for_llm_api(
)
if max_json_bytes is not None and max_json_bytes > 0 and _wire_json_size(built) > max_json_bytes:
return _squeeze_to_budget(built, max_json_bytes, admin=admin)
return _finalize(_squeeze_to_budget(built, max_json_bytes, admin=admin))
return built
return _finalize(built)
def _squeeze_to_budget(

View file

@ -8,6 +8,7 @@ import uuid
from typing import Any, Optional
from collections.abc import Callable
from oclaw.platform.llm.tool_schema import complete_openai_tools_wire_parameters
from oclaw.platform.llm.transports.base import ChatModel, LLMResponse, LLMToolCall, normalize_image_b64_payload, coerce_thought_signature_for_storage
logger = logging.getLogger(__name__)
@ -71,6 +72,272 @@ def _should_enable_thinking(base_url: str | None, *, thinking_mode_enabled: bool
return True
def _should_force_text_only_messages(base_url: str | None) -> bool:
del base_url
# Opt-in only. Avoid hard-coding vendor/domain specific heuristics.
return _truthy_env("AIA_OPENAI_FORCE_TEXT_CONTENT", "0")
def _multimodal_proactive_downgrade_enabled() -> bool:
raw = str(os.getenv("AIA_OPENAI_MULTIMODAL_PROACTIVE_DOWNGRADE") or "1").strip().lower()
return raw not in {"0", "false", "no", "off"}
def _text_only_multimodal_substrings() -> tuple[str, ...]:
raw = os.getenv("AIA_OPENAI_TEXT_ONLY_MULTIMODAL_SUBSTRINGS")
if raw is None:
return ("deepseek",)
s = str(raw).strip().lower()
if s in {"", "-", "none", "off"}:
return ()
return tuple(part.strip().lower() for part in str(raw).split(",") if part.strip())
def _messages_contain_list_with_image(messages: list[dict[str, Any]]) -> bool:
for m in messages or []:
if not isinstance(m, dict):
continue
c = m.get("content")
if not isinstance(c, list):
continue
for item in c:
if not isinstance(item, dict):
continue
typ = str(item.get("type") or "").strip().lower()
if typ in ("image_url", "input_image"):
return True
return False
def _should_proactively_downgrade_multimodal_messages(
messages: list[dict[str, Any]],
*,
model: str | None,
base_url: str | None,
) -> bool:
if _should_force_text_only_messages(base_url):
return _messages_contain_list_with_image(messages)
if not _multimodal_proactive_downgrade_enabled():
return False
if not _messages_contain_list_with_image(messages):
return False
parts = _text_only_multimodal_substrings()
if not parts:
return False
hay = f"{model or ''} {base_url or ''}".lower()
return any(p and p in hay for p in parts)
def _wire_error_message(exc: BaseException) -> str:
chunks: list[str] = [str(exc)]
em = getattr(exc, "message", None)
if isinstance(em, str) and em.strip():
chunks.append(em)
body = getattr(exc, "body", None)
if isinstance(body, dict):
try:
chunks.append(json.dumps(body, ensure_ascii=False, default=str))
except Exception:
chunks.append(repr(body))
elif isinstance(body, str) and body.strip():
chunks.append(body)
resp = getattr(exc, "response", None)
if resp is not None:
t = ""
try:
rt = getattr(resp, "text", "")
if isinstance(rt, str):
t = rt
except Exception:
pass
if not t.strip():
try:
ct = getattr(resp, "content", None)
if isinstance(ct, (bytes, bytearray)):
t = bytes(ct).decode("utf-8", errors="replace")
except Exception:
pass
if t.strip():
chunks.append(t)
inner = getattr(exc, "__cause__", None)
if inner is not None:
chunks.append(str(inner))
return "\n".join(chunks)
def _is_text_only_gateway_error(msg: str) -> bool:
m = str(msg or "").strip().lower()
if not m:
return False
if "unknown variant image_url" in m:
return True
if "image_url" in m and "expected text" in m:
return True
if "failed to deserialize" in m and ("expected text" in m or "unknown variant image_url" in m):
return True
if "deserialize" in m and "image_url" in m and ("expected text" in m or "messages[" in m):
return True
if "invalid_request_error" in m and ("image_url" in m or "expected text" in m):
return True
return False
def _flatten_message_content_to_text(content: Any) -> str:
if isinstance(content, str):
return content
if not isinstance(content, list):
return str(content or "")
parts: list[str] = []
for item in content:
if isinstance(item, str):
if item.strip():
parts.append(item)
continue
if not isinstance(item, dict):
continue
typ = str(item.get("type") or "").strip().lower()
if typ in ("text", "input_text"):
txt = str(item.get("text") or item.get("content") or "").strip()
if txt:
parts.append(txt)
continue
if typ in ("image_url", "input_image"):
# Proactive / forced text-only path without OCR injection (or OCR disabled).
parts.append(
"【图片】本消息含图片,但当前以纯文本发往上游模型,像素未传入;"
"若需要图中细节,请改用支持多模态的模型或开启看图 OCR 降级通道。"
)
continue
return "\n".join([p for p in parts if p]).strip()
def _multimodal_downgrade_ocr_enabled() -> bool:
"""When True, text-only downgrade replaces image blocks with OCR text via AIA_OCR_* lane."""
return str(os.getenv("AIA_MULTIMODAL_DOWNGRADE_OCR") or "1").strip().lower() not in {
"0",
"false",
"no",
"off",
}
def _image_block_to_url(item: dict[str, Any]) -> str | None:
typ = str(item.get("type") or "").strip().lower()
if typ == "image_url":
u = item.get("image_url")
if isinstance(u, dict):
s = str(u.get("url") or "").strip()
return s or None
if isinstance(u, str) and u.strip():
return u.strip()
if typ == "input_image":
b64 = normalize_image_b64_payload(item.get("image_base64") or item.get("data"))
mime = str(item.get("mime") or "image/jpeg").strip() or "image/jpeg"
if b64:
return f"data:{mime};base64,{b64}"
return None
def _message_list_contains_image_block(content: Any) -> bool:
if not isinstance(content, list):
return False
for item in content:
if not isinstance(item, dict):
continue
typ = str(item.get("type") or "").strip().lower()
if typ in ("image_url", "input_image"):
return True
return False
def _downgrade_ocr_wrap_for_llm(ocr_text: str) -> str:
"""User-facing copy injected into the main model when multimodal was OCR-downgraded to text."""
head = (
"【图片内容·OCR】当前主对话模型仅接收纯文本,无法直接读图;"
"下面是由独立看图通道从用户图片中转写提取的正文。请把它和用户的文字问题一起当作依据来回答;"
"转写可能有漏字、错行或与截图不完全一致,重要结论可请用户核对原图或补充说明。"
)
return f"{head}\n\n{ocr_text.strip()}"
def _flatten_message_content_for_text_gateway(content: Any) -> str:
"""Flatten list content to a string; image blocks may become OCR text when configured."""
if isinstance(content, str):
return content
if not isinstance(content, list):
return str(content or "")
if _multimodal_downgrade_ocr_enabled() and _message_list_contains_image_block(content):
try:
from oclaw.platform.llm.image_ocr_client import (
VISION_OCR_EXTRACT_PROMPT_ZH,
send_ocr_image_messages,
vision_llm_backend_status,
)
except Exception:
return _flatten_message_content_to_text(content)
if vision_llm_backend_status().get("ok"):
parts: list[str] = []
for item in content:
if isinstance(item, str):
if item.strip():
parts.append(item)
continue
if not isinstance(item, dict):
continue
typ = str(item.get("type") or "").strip().lower()
if typ in ("image_url", "input_image"):
url = _image_block_to_url(item)
if not url:
parts.append(
"【图片】无法从本消息中还原图片数据,图中细节未传入本轮模型;"
"若作答需要像素级信息,请提示用户重发或改用支持多模态的模型配置。"
)
continue
try:
out = send_ocr_image_messages(images=[url], prompt=VISION_OCR_EXTRACT_PROMPT_ZH)
except Exception as exc:
parts.append(
f"【图片】独立看图通道 OCR 调用异常({type(exc).__name__}),"
"本张图的正文未能写入对话;可请用户改述图中要点或稍后重试。"
)
continue
if not out.get("ok"):
err = str(out.get("error") or "unknown")
parts.append(
f"【图片】看图通道返回失败({err}),本张图未转成文字;"
"请据用户文字说明作答,或提示检查 OCR 配置/重发图片。"
)
continue
t = str(out.get("text") or "").strip()
if not t:
parts.append(
"【图片】看图通道未返回有效文字(可能模型拒识或图不清晰)。"
"请提示用户补充文字说明或重发更清晰的截图。"
)
else:
parts.append(_downgrade_ocr_wrap_for_llm(t))
continue
if typ in ("text", "input_text"):
txt = str(item.get("text") or item.get("content") or "").strip()
if txt:
parts.append(txt)
continue
return "\n\n".join([p for p in parts if p]).strip()
return _flatten_message_content_to_text(content)
def _normalize_messages_for_text_only_gateway(messages: list[dict[str, Any]]) -> list[dict[str, Any]]:
out: list[dict[str, Any]] = []
for m in messages or []:
if not isinstance(m, dict):
continue
mm = dict(m)
if isinstance(mm.get("content"), list):
mm["content"] = _flatten_message_content_for_text_gateway(mm.get("content"))
out.append(mm)
return out
def _find_thought_signature_in_obj(o: Any) -> str | None:
if isinstance(o, dict):
for k in ("thought_signature", "thoughtSignature"):
@ -222,7 +489,14 @@ class OpenAIChatModel(ChatModel):
else:
cleaned_msgs.append(m)
kwargs: dict[str, Any] = {"model": self.model, "messages": cleaned_msgs, "stream": stream}
msgs_wire = cleaned_msgs
if _should_force_text_only_messages(self.base_url) or _should_proactively_downgrade_multimodal_messages(
cleaned_msgs,
model=self.model,
base_url=self.base_url,
):
msgs_wire = _normalize_messages_for_text_only_gateway(cleaned_msgs)
kwargs: dict[str, Any] = {"model": self.model, "messages": msgs_wire, "stream": stream}
if _should_enable_thinking(self.base_url, thinking_mode_enabled=bool(getattr(self, "thinking_mode_enabled", False))):
extra_body = kwargs.get("extra_body") if isinstance(kwargs.get("extra_body"), dict) else {}
extra_body = dict(extra_body)
@ -253,11 +527,14 @@ class OpenAIChatModel(ChatModel):
)
kwargs["tools"] = plan.tools_wired
except Exception:
kwargs["tools"] = tools
kwargs["tools"] = complete_openai_tools_wire_parameters(tools)
try:
return self._client.chat.completions.create(**kwargs)
except Exception as exc:
msg = str(exc)
msg = _wire_error_message(exc)
if _is_text_only_gateway_error(msg) and isinstance(kwargs.get("messages"), list):
kwargs["messages"] = _normalize_messages_for_text_only_gateway(kwargs["messages"])
return self._client.chat.completions.create(**kwargs)
if "reasoning_content" in msg and "thinking mode" in msg and "must be passed back" in msg:
# Provider requires replaying assistant.reasoning_content in thinking mode.
# As a safety fallback, force-disable thinking and retry once.

View file

@ -275,6 +275,11 @@ def build_ops_agent(
)
# `default_registry` treats empty allow_tags + empty allow_tools as "no filter". Use an impossible
# tool name so the image specialist gets an empty tool surface (vision-only turns).
_IMAGE_SPECIALIST_TOOL_ALLOWLIST: tuple[str, ...] = ("__oclaw_image_specialist_no_tools__",)
def build_gateway_executor(
store: SqliteStore,
*,
@ -321,14 +326,17 @@ def build_gateway_executor(
path_policy_tenant_id=path_policy_tenant_id,
path_policy_user_id=path_policy_user_id,
)
tools = default_registry(
expert=expert_name_for_specialist(prof.name),
specialist=prof.name,
policy_session_id=policy_session_id,
path_policy_tenant_id=path_policy_tenant_id,
path_policy_user_id=path_policy_user_id,
store=store,
)
reg_kw: dict[str, Any] = {
"expert": expert_name_for_specialist(prof.name),
"specialist": prof.name,
"policy_session_id": policy_session_id,
"path_policy_tenant_id": path_policy_tenant_id,
"path_policy_user_id": path_policy_user_id,
"store": store,
}
if prof.name == "image":
reg_kw["allow_tools"] = list(_IMAGE_SPECIALIST_TOOL_ALLOWLIST)
tools = default_registry(**reg_kw)
return Agent(
store=store,
tools=tools,

View file

@ -15,7 +15,7 @@ from oclaw.runtime.chat.agent import GenerationInterrupted
from oclaw.runtime.agents.network_ops_agent import NetworkOpsAgent
from oclaw.platform.persistence.sqlite_store import SqliteStore
from oclaw.platform.files.attachment_assets import AttachmentAssetStore, attachment_id_to_data_url
from oclaw.platform.llm.image_message_client import send_image_messages
from oclaw.platform.llm.image_ocr_client import send_ocr_image_messages
from oclaw.runtime.tools import default_registry
from oclaw.runtime.agents.specialists import expert_name_for_specialist
@ -267,25 +267,22 @@ class SpecialistAgentRunner:
else:
_, chosen_model, _ = self._resolve_profile_and_model(step.specialist)
model_name = str(
os.getenv("AIA_IMAGE_MODEL")
or getattr(chosen_model, "model", None)
or ""
os.getenv("AIA_OCR_MODEL") or getattr(chosen_model, "model", None) or ""
).strip() or None
api_key = str(getattr(chosen_model, "api_key", "") or "").strip() or None
base_url = str(getattr(chosen_model, "base_url", "") or "").strip() or None
dashscope_api_key = api_key if base_url and "dashscope.aliyuncs.com" in base_url.lower() else None
dashscope_base_http_api_url = None
if base_url and "dashscope.aliyuncs.com" in base_url.lower():
# Normalize compatible-mode/v1 to native /api/v1 for DashScope SDK.
dashscope_base_http_api_url = str(base_url).replace("/compatible-mode/v1", "/api/v1")
resp = send_image_messages(
text_parts = [
str(x).strip()
for x in (step.objective, step.input_text, parent_task.user_text)
if str(x or "").strip()
]
user_text = "\n".join(text_parts) if text_parts else "请根据用户上传的图片作答:描述可见场景、物体与文字;不确定处请标明。"
resp = send_ocr_image_messages(
images=selected_images,
prompt=f"{step.objective}\n\n{step.input_text}\n\n{parent_task.user_text}",
prompt=user_text,
model=model_name,
api_key=api_key,
base_url=base_url,
dashscope_api_key=dashscope_api_key,
dashscope_base_http_api_url=dashscope_base_http_api_url,
)
image_debug_schema = str(resp.get("debug_used_schema") or "").strip()
dbg = resp.get("debug_used_debug")

View file

@ -37,10 +37,16 @@ SPECIALISTS: dict[SpecialistId, SpecialistConfig] = {
expert_name="memory",
default_tool_tags=None,
),
"image": SpecialistConfig(
specialist_id="image",
# Vision turns attach pixels in-message; gateway executor exposes no tools (see factory).
expert_name="image",
default_tool_tags=None,
),
}
def discover_specialist_ids() -> tuple[SpecialistId, ...]:
rows = specialist_registry_snapshot(base_order=("generalist", "ops", "memory"))
rows = specialist_registry_snapshot(base_order=("generalist", "ops", "memory", "image"))
return tuple(str(x.get("id") or "").strip().lower() for x in rows if str(x.get("id") or "").strip())

View file

@ -1195,7 +1195,7 @@ def run_oclaw_direct_loop(
run_id=run_id,
attempt_no=attempt_no,
lang=lang,
wire_policy_role=wire_policy_role,
wire_policy_role=wire_policy_role,
)
resp = _chat_with_empty_body_retry(
model=model,

View file

@ -28,29 +28,33 @@ New-Item -ItemType Directory -Force -Path $sidecarRoot | Out-Null
New-Item -ItemType Directory -Force -Path (Join-Path $sidecarRoot "logs") | Out-Null
New-Item -ItemType Directory -Force -Path $stateDir | Out-Null
Push-Location $sidecarRoot
try {
$npmRegistry = ($env:OCLAW_NPM_REGISTRY).Trim()
$npmRegistryArgs = @()
if ($npmRegistry) {
$npmRegistryArgs = @("--registry", $npmRegistry)
}
if (-not (Test-Path (Join-Path $sidecarRoot "package.json"))) {
npm.cmd init -y | Out-Null
if ($LASTEXITCODE -ne 0) {
throw "npm init failed with exit code $LASTEXITCODE"
function Ensure-OfficialPluginRuntimeDeps {
Push-Location $sidecarRoot
try {
$npmRegistry = ($env:OCLAW_NPM_REGISTRY).Trim()
$npmRegistryArgs = @()
if ($npmRegistry) {
$npmRegistryArgs = @("--registry", $npmRegistry)
}
if (-not (Test-Path (Join-Path $sidecarRoot "package.json"))) {
npm.cmd init -y | Out-Null
if ($LASTEXITCODE -ne 0) {
throw "npm init failed with exit code $LASTEXITCODE"
}
}
# Pure sidecar mode:
# - No ~/.openclaw usage
# - Install the official plugin package into node_modules and point it to $stateDir via OPENCLAW_STATE_DIR at runtime
npm.cmd install --no-audit --no-fund --save @tencent-weixin/openclaw-weixin@latest openclaw@latest tsx@4.21.0 typescript@6.0.3 @npmRegistryArgs
if ($LASTEXITCODE -ne 0) {
throw "npm install bridge runtime deps failed with exit code $LASTEXITCODE"
}
} finally {
Pop-Location
}
# Pure sidecar mode:
# - No ~/.openclaw usage
# - Install the official plugin package into node_modules and point it to $stateDir via OPENCLAW_STATE_DIR at runtime
npm.cmd install --no-audit --no-fund --save @tencent-weixin/openclaw-weixin@latest openclaw@latest tsx@4.21.0 typescript@6.0.3 @npmRegistryArgs
if ($LASTEXITCODE -ne 0) {
throw "npm install bridge runtime deps failed with exit code $LASTEXITCODE"
}
} finally {
Pop-Location
}
Ensure-OfficialPluginRuntimeDeps
Sync-WeixinBridgeRunners
Write-Host "[ok] installed official openclaw-weixin plugin sidecar runtime into $sidecarRoot"

View file

@ -17,7 +17,7 @@ def _truthy(v: str | None) -> bool:
def ordered_specialist_ids() -> list[str]:
base = [str(k).strip().lower() for k in discover_specialist_ids() if str(k).strip()]
preferred = [x for x in ("generalist", "ops", "memory") if x in set(base)]
preferred = [x for x in ("generalist", "ops", "memory", "image") if x in set(base)]
return preferred + [x for x in base if x not in set(preferred)]

View file

@ -0,0 +1,228 @@
# Tushare API 快速参考
本文档提供最常用的 Tushare API 接口和代码示例。
**作者**: [StanleyChanH](https://github.com/StanleyChanH)
## 股票数据
### 获取股票列表
```python
import tushare as ts
pro = ts.pro_api()
# 获取所有正常上市的股票
df = pro.stock_basic(list_status='L')
# 筛选特定交易所
df_sz = pro.stock_basic(exchange='SZSE') # 深交所
df_sh = pro.stock_basic(exchange='SSE') # 上交所
```
### 获取日线行情
```python
# 单只股票
df = pro.daily(ts_code='000001.SZ', start_date='20241201', end_date='20241231')
# 多只股票
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20241201', end_date='20241231')
# 某日所有股票
df = pro.daily(trade_date='20241231')
```
### 获取财务数据
```python
# 利润表
df = pro.income(ts_code='600000.SH', start_date='20240101', end_date='20241231')
# 资产负债表
df = pro.balancesheet(ts_code='600000.SH', start_date='20240101', end_date='20241231')
# 现金流量表
df = pro.cashflow(ts_code='600000.SH', start_date='20240101', end_date='20241231')
# 财务指标
df = pro.fina_indicator(ts_code='600000.SH', start_date='20240101', end_date='20241231')
```
## 指数数据
### 获取指数列表
```python
df = pro.index_basic(market='SSE') # 上交所指数
df = pro.index_basic(market='SZSE') # 深交所指数
```
### 获取指数行情
```python
# 上证指数
df = pro.index_daily(ts_code='000001.SH', start_date='20241201', end_date='20241231')
# 深证成指
df = pro.index_daily(ts_code='399001.SZ', start_date='20241201', end_date='20241231')
```
## 基金数据
### 获取基金列表
```python
df = pro.fund_basic(market='E') # 场内基金
df = pro.fund_basic(market='O') # 场外基金
```
### 获取基金净值
```python
df = pro.fund_nav(ts_code='000001.OF', start_date='20241201', end_date='20241231')
```
## 宏观经济
### GDP 数据
```python
df = pro.gdp(start_q='2020011', end_q='2024044')
```
### CPI 数据
```python
df = pro.cpi(start_date='20240101', end_date='20241231')
```
### PMI 数据
```python
df = pro.pmi(start_date='20240101', end_date='20241231')
```
### 利率数据
```python
# Shibor
df = pro.shibor(start_date='20241201', end_date='20241231')
# LPR
df = pro.lpr(start_date='20241201', end_date='20241231')
```
## 港股美股
### 港股数据
```python
# 港股列表
df = pro.hk_basic()
# 港股行情
df = pro.hk_daily(ts_code='00700.HK', start_date='20241201', end_date='20241231')
```
### 美股数据
```python
# 美股列表
df = pro.us_basic()
# 美股行情
df = pro.us_daily(ts_code='AAPL', start_date='20241201', end_date='20241231')
```
## 常见查询模式
### 按日期范围查询
```python
df = pro.daily(
ts_code='000001.SZ',
start_date='20240101', # YYYYMMDD
end_date='20241231'
)
```
### 按交易日查询
```python
df = pro.daily(trade_date='20241231')
```
### 获取最新数据
```python
# 先获取最近的交易日
import datetime
today = datetime.datetime.now().strftime('%Y%m%d')
df = pro.daily(trade_date=today)
```
## 数据处理技巧
### 数据清洗
```python
# 去除停牌数据
df = df[df['vol'] > 0]
# 排序
df = df.sort_values('trade_date')
# 重置索引
df = df.reset_index(drop=True)
```
### 数据保存
```python
# 保存到 CSV
df.to_csv('data.csv', index=False)
# 保存到 Excel
df.to_excel('data.xlsx', index=False)
```
## 错误处理
```python
import tushare as ts
try:
pro = ts.pro_api('your_token')
df = pro.daily(ts_code='000001.SZ', start_date='20241201', end_date='20241231')
print(df.head())
except ts.errors.TushareException as e:
print(f"Tushare API 错误: {e}")
except Exception as e:
print(f"错误: {e}")
```
## 性能优化
### 批量获取
```python
# 一次获取多只股票
stock_codes = ['000001.SZ', '600000.SH', '000002.SZ']
df = pro.daily(ts_code=','.join(stock_codes), start_date='20241201', end_date='20241231')
```
### 控制请求频率
```python
import time
for stock in stock_codes:
df = pro.daily(ts_code=stock, start_date='20241201', end_date='20241231')
time.sleep(0.3) # 避免超限
```
## 常用字段说明
### 日线行情字段
- `trade_date`: 交易日期
- `ts_code`: 股票代码
- `open`: 开盘价
- `high`: 最高价
- `low`: 最低价
- `close`: 收盘价
- `vol`: 成交量(手)
- `amount`: 成交额(千元)
### 财务指标字段
- `end_date`: 报告期
- `roe`: 净资产收益率
- `net_profit_margin`: 销售净利率
- `gross_margin`: 销售毛利率
- `debt_to_assets`: 资产负债率
## 更多接口
完整接口列表和详细说明请查看:
- [接口文档索引](docs/README.md)
- [Tushare 官方文档](https://tushare.pro/document/2)

View file

@ -0,0 +1,336 @@
# Tushare Finance Skill
[![Version](https://img.shields.io/badge/version-2.0.6-blue.svg)](https://github.com/StanleyChanH/Tushare-Finance-Skill-for-Claude-Code)
[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)
[![ClawHub](https://img.shields.io/badge/ClawHub-Available-purple.svg)](https://clawhub.com)
获取中国金融市场数据的 OpenClaw Skill,支持 **220+ 个 Tushare Pro 接口**。
## ✨ 特性
- 🚀 **开箱即用** - 一键安装,无需复杂配置
- 📊 **全面覆盖** - A股、港股、美股、基金、期货、债券
- 🔧 **多种方式** - Python API、命令行工具、批量导出
- 📈 **实时数据** - 支持股票行情、财务报表、宏观经济
- 🔄 **OpenClaw 集成** - 无缝集成到自动化工作流
- 📖 **完整文档** - 220+ 接口完整索引和使用示例
## 📥 安装
### 方法 1:通过 ClawHub(推荐)
```bash
clawhub install tushare-finance
```
### 方法 2:手动安装
```bash
git clone https://github.com/StanleyChanH/Tushare-Finance-Skill-for-Claude-Code.git
cd Tushare-Finance-Skill-for-Claude-Code
pip install -r requirements.txt
```
## 🔑 配置
### 获取 Tushare Token
1. 访问 [Tushare Pro](https://tushare.pro) 注册账号
2. 在个人中心获取 Token
3. 配置环境变量:
```bash
export TUSHARE_TOKEN="your_token_here"
# 或添加到 ~/.bashrc
echo 'export TUSHARE_TOKEN="your_token_here"' >> ~/.bashrc
source ~/.bashrc
```
## 🚀 快速开始
### Python API
```python
from scripts.api_client import TushareAPI
# 初始化客户端
api = TushareAPI()
# 查询股票日线行情
df = api.get_stock_daily("000001.SZ", "2024-01-01", "2024-12-31")
print(df.head())
# 查询公司基本信息
info = api.get_stock_info("000001.SZ")
print(info)
# 批量查询多只股票
stocks = ["000001.SZ", "000002.SZ", "600000.SH"]
data = api.batch_query(stocks, "2024-01-01", "2024-12-31")
```
### 命令行工具
```bash
# 查询单只股票
python scripts/quick_query.py --stock 000001.SZ --start 2024-01-01 --end 2024-12-31
# 批量查询
python scripts/quick_query.py --file stocks.txt --start 2024-01-01 --output result.csv
# 导出 Excel
python scripts/batch_export.py --stock 000001.SZ --start 2024-01-01 --end 2024-12-31 --format excel
```
## 📊 支持的数据类型
### 股票数据(39 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `daily` | 日线行情 | `api.get_stock_daily()` |
| `stock_basic` | 股票列表 | `api.get_stock_list()` |
| `fina_indicator` | 财务指标 | `api.get_financial_indicator()` |
| `income` | 利润表 | `api.get_income_statement()` |
| `balancesheet` | 资产负债表 | `api.get_balance_sheet()` |
### 指数数据(18 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `index_daily` | 指数日线 | `api.get_index_daily()` |
| `index_weight` | 指数成分 | `api.get_index_weight()` |
| `index_basic` | 指数列表 | `api.get_index_list()` |
### 基金数据(11 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `fund_nav` | 基金净值 | `api.get_fund_nav()` |
| `fund_basic` | 基金列表 | `api.get_fund_list()` |
### 期货数据(16 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `futures_daily` | 期货日线 | `api.get_futures_daily()` |
### 宏观数据(10 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `gdp` | GDP数据 | `api.get_gdp()` |
| `cpi` | CPI数据 | `api.get_cpi()` |
| `pmi` | PMI数据 | `api.get_pmi()` |
### 港股美股(23 个接口)
| 接口 | 说明 | 示例 |
|------|------|------|
| `hk_daily` | 港股日线 | `api.get_hk_daily()` |
| `us_daily` | 美股日线 | `api.get_us_daily()` |
**完整接口列表**:查看 [接口文档索引](reference/README.md)
## 📖 API 文档
### TushareAPI 类
#### `__init__(token=None)`
初始化 API 客户端
**参数**:
- `token` (str, optional): Tushare Token,默认从环境变量读取
#### `get_stock_daily(ts_code, start_date, end_date)`
查询股票日线行情
**参数**:
- `ts_code` (str): 股票代码(如 "000001.SZ")
- `start_date` (str): 开始日期(如 "2024-01-01")
- `end_date` (str): 结束日期(如 "2024-12-31")
**返回**:
- `pd.DataFrame`: 日线数据
**示例**:
```python
df = api.get_stock_daily("000001.SZ", "2024-01-01", "2024-12-31")
```
#### `batch_query(ts_codes, start_date, end_date)`
批量查询多只股票
**参数**:
- `ts_codes` (list): 股票代码列表
- `start_date` (str): 开始日期
- `end_date` (str): 结束日期
**返回**:
- `dict`: {股票代码: DataFrame}
**示例**:
```python
stocks = ["000001.SZ", "000002.SZ", "600000.SH"]
data = api.batch_query(stocks, "2024-01-01", "2024-12-31")
```
**更多 API 请参考**:[docs/api_reference.md](docs/api_reference.md)
## 🔧 使用示例
### 示例 1:股票数据分析
```python
from scripts.api_client import TushareAPI
api = TushareAPI()
# 查询股票数据
df = api.get_stock_daily("000001.SZ", "2024-01-01", "2024-12-31")
# 计算收益率
df['return'] = df['close'].pct_change()
df['cum_return'] = (1 + df['return']).cumprod()
print(df[['trade_date', 'close', 'return', 'cum_return']].tail())
```
### 示例 2:批量导出
```python
from scripts.api_client import TushareAPI
api = TushareAPI()
# 批量查询沪深300成分
stocks = api.get_index_weight("000300.SH", "2024-12-31")
stock_codes = stocks['con_code'].tolist()
# 批量获取数据
for code in stock_codes[:10]: # 前10只
df = api.get_stock_daily(code, "2024-01-01", "2024-12-31")
df.to_csv(f"./data/{code}.csv", index=False)
```
### 示例 3:财务分析
```python
# 查询财务指标
fina = api.get_financial_indicator("000001.SZ", "2024-01-01", "2024-12-31")
# 筛选关键指标
key_metrics = ['roe', 'roa', 'debt_to_assets', 'current_ratio']
print(fina[['ts_code', 'end_date'] + key_metrics].head())
```
**更多示例**:[docs/examples.md](docs/examples.md)
## ⚙️ 配置选项
### 环境变量
```bash
# Tushare Token(必需)
export TUSHARE_TOKEN="your_token_here"
# 数据缓存(可选)
export TUSHARE_CACHE_DIR="~/.tushare_cache"
# 日志级别(可选)
export TUSHARE_LOG_LEVEL="INFO"
```
### 配置文件
编辑 `config/config.yaml`:
```yaml
api:
# Token(优先级低于环境变量)
token: "your_token_here"
# 请求超时(秒)
timeout: 30
# 重试次数
retry: 3
cache:
# 是否启用缓存
enabled: true
# 缓存目录
dir: ~/.tushare_cache
# 缓存有效期(秒)
ttl: 3600
logging:
# 日志级别
level: INFO
# 日志文件
file: logs/tushare.log
```
## 🧪 测试
```bash
# 运行所有测试
python -m pytest tests/
# 运行特定测试
python -m pytest tests/test_api.py
# 查看测试覆盖率
python -m pytest --cov=scripts tests/
```
## 🤝 贡献
欢迎贡献代码、报告问题或提出建议!
### 开发环境
```bash
git clone https://github.com/StanleyChanH/Tushare-Finance-Skill-for-Claude-Code.git
cd Tushare-Finance-Skill-for-Claude-Code
pip install -r requirements.txt
pip install -r requirements-dev.txt
python -m pytest tests/
```
## 📄 许可证
Apache License 2.0
## 🙏 致谢
- [Tushare Pro](https://tushare.pro) - 提供高质量金融数据 API
- [OpenClaw](https://github.com/openclaw/openclaw) - OpenClaw 框架
## 📚 相关资源
- **GitHub**:https://github.com/StanleyChanH/Tushare-Finance-Skill-for-Claude-Code
- **ClawHub**:https://clawhub.com/skill/tushare-finance
- **Tushare 文档**:https://tushare.pro/document/2
- **OpenClaw 文档**:https://docs.openclaw.ai
## 📊 更新日志
### v2.0.0 (2026-02-14)
- ✨ 添加完整的 Python API 客户端
- ✨ 添加命令行工具
- ✨ 添加批量导出功能
- 📖 完善 API 文档和使用示例
- 🧪 添加自动化测试
- 🔄 配置 GitHub Actions 自动发布
### v1.0.0 (2026-01-10)
- 🎉 初始版本发布
- 📊 支持 220+ Tushare Pro 接口

View file

@ -0,0 +1,89 @@
---
name: tushare-finance
description: 获取中国金融市场数据(A股、港股、美股、基金、期货、债券)。支持220+个Tushare Pro接口:股票行情、财务报表、宏观经济指标。当用户请求股价数据、财务分析、指数行情、GDP/CPI等宏观数据时使用。
allowed-tools:
- Bash(python:*)
- Read
---
# Tushare 金融数据 Skill
本 skill 通过 Tushare Pro API 获取中国金融市场数据,支持 220+ 个数据接口。
## 快速开始
### 1. Token 配置
**询问用户**:是否已配置 Tushare Token?
如未配置,引导用户:
1. 访问 https://tushare.pro 注册
2. 获取 Token
3. 配置环境变量:`export TUSHARE_TOKEN="your_token"`
### 2. 验证依赖
检查 Python 环境:
```bash
python -c "import tushare, pandas; print('OK')"
```
如报错,安装依赖:
```bash
pip install tushare pandas
```
## 常用接口速查
| 数据类型 | 接口方法 | 说明 |
|---------|---------|------|
| 股票列表 | `pro.stock_basic()` | 获取所有股票列表 |
| 日线行情 | `pro.daily()` | 获取日线行情数据 |
| 财务指标 | `pro.fina_indicator()` | 财务指标(ROE等) |
| 利润表 | `pro.income()` | 利润表数据 |
| 指数行情 | `pro.index_daily()` | 指数日线数据 |
| 基金净值 | `pro.fund_nav()` | 基金净值数据 |
| GDP数据 | `pro.gdp()` | 国内生产总值 |
| CPI数据 | `pro.cpi()` | 居民消费价格指数 |
**完整接口列表**:查看 [接口文档索引](reference/README.md)
## 数据获取流程
1. **查找接口**:根据需求在 [接口索引](reference/README.md) 找到对应接口
2. **阅读文档**:查看 `reference/接口文档/[接口名].md` 了解参数
3. **编写代码**:
```python
import tushare as ts
# 初始化(使用环境变量中的 Token)
pro = ts.pro_api()
# 调用接口
df = pro.daily(ts_code='000001.SZ', start_date='20241201', end_date='20241231')
```
4. **返回结果**:DataFrame 格式
## 参数格式说明
- **日期**:YYYYMMDD(如 20241231)
- **股票代码**:ts_code 格式(如 000001.SZ, 600000.SH)
- **返回格式**:pandas DataFrame
## 接口文档参考
**接口索引**:[reference/README.md](reference/README.md)
接口文档按类别组织:
- 股票数据(39 个接口)
- 指数数据(18 个接口)
- 基金数据(11 个接口)
- 期货期权(16 个接口)
- 宏观经济(10 个接口)
- 港股美股(23 个接口)
- 债券数据(16 个接口)
## 参考资源
- **Tushare 官方文档**:https://tushare.pro/document/2
- **API 测试工具**:https://tushare.pro/document/1

View file

@ -0,0 +1,6 @@
{
"ownerId": "kn7fnx0e4a5kyh3xpffp43fjh5810w1s",
"slug": "tushare-finance",
"version": "2.0.6",
"publishedAt": 1771038127506
}

View file

@ -0,0 +1,19 @@
{
"name": "tushare-finance",
"version": "2.0.6",
"description": "获取中国金融市场数据(A股、港股、美股、基金、期货、债券)。支持220+个Tushare Pro接口:股票行情、财务报表、宏观经济指标。提供Python API客户端、命令行工具和批量导出功能。",
"author": "StanleyChanH",
"tags": ["金融数据", "A股", "港股", "美股", "量化", "股票", "基金", "期货", "Tushare", "财务数据", "宏观经济"],
"repository": "https://github.com/StanleyChanH/Tushare-Finance-Skill-for-Claude-Code",
"license": "Apache-2.0",
"dependencies": {
"python": ">=3.8",
"packages": ["tushare>=1.3.0", "pandas>=2.0.0", "openpyxl>=3.1.0"]
},
"openclaw": {
"requires": {
"bins": ["python3"],
"env": ["TUSHARE_TOKEN"]
}
}
}

View file

@ -0,0 +1,360 @@
# Tushare API 接口文档索引
本文档由自动化脚本从[Tushare官方文档系统](https://tushare.pro/document/2)提取。
## 文档说明
- **总计**: 共提取 **220** 个接口文档
- **格式**: 所有文档均为Markdown格式
- **位置**: `skills/tushare-finance/reference/`
- **更新**: 自动化提取,保持与官方文档同步
- **作者**: [StanleyChanH](https://github.com/StanleyChanH)
## ETF专题
**数量**: 7 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | ETF份额规模 | 408 | [接口文档/ETF份额规模.md](接口文档/ETF份额规模.md) |
| 2 | ETF分钟行情 | 387 | [接口文档/ETF分钟行情.md](接口文档/ETF分钟行情.md) |
| 3 | ETF基准指数 | 386 | [接口文档/ETF基准指数.md](接口文档/ETF基准指数.md) |
| 4 | ETF基本信息 | 385 | [接口文档/ETF基本信息.md](接口文档/ETF基本信息.md) |
| 5 | ETF复权因子 | 199 | [接口文档/ETF复权因子.md](接口文档/ETF复权因子.md) |
| 6 | ETF实时日线 | 400 | [接口文档/ETF实时日线.md](接口文档/ETF实时日线.md) |
| 7 | ETF日线行情 | 127 | [接口文档/ETF日线行情.md](接口文档/ETF日线行情.md) |
## 债券专题
**数量**: 16 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 可转债发行 | 186 | [接口文档/可转债发行.md](接口文档/可转债发行.md) |
| 2 | 可转债基础信息 | 185 | [接口文档/可转债基础信息.md](接口文档/可转债基础信息.md) |
| 3 | 可转债技术面因子(专业版) | 392 | [接口文档/可转债技术面因子(专业版).md](接口文档/可转债技术面因子(专业版).md) |
| 4 | 可转债票面利率 | 305 | [接口文档/可转债票面利率.md](接口文档/可转债票面利率.md) |
| 5 | 可转债行情 | 187 | [接口文档/可转债行情.md](接口文档/可转债行情.md) |
| 6 | 可转债赎回信息 | 269 | [接口文档/可转债赎回信息.md](接口文档/可转债赎回信息.md) |
| 7 | 可转债转股价变动 | 246 | [接口文档/可转债转股价变动.md](接口文档/可转债转股价变动.md) |
| 8 | 可转债转股结果 | 247 | [接口文档/可转债转股结果.md](接口文档/可转债转股结果.md) |
| 9 | 国债实际收益率曲线利率 | 220 | [接口文档/国债实际收益率曲线利率.md](接口文档/国债实际收益率曲线利率.md) |
| 10 | 国债收益率曲线 | 201 | [接口文档/国债收益率曲线.md](接口文档/国债收益率曲线.md) |
| 11 | 国债收益率曲线利率 | 219 | [接口文档/国债收益率曲线利率.md](接口文档/国债收益率曲线利率.md) |
| 12 | 国债长期利率 | 222 | [接口文档/国债长期利率.md](接口文档/国债长期利率.md) |
| 13 | 国债长期利率平均值 | 223 | [接口文档/国债长期利率平均值.md](接口文档/国债长期利率平均值.md) |
| 14 | 柜台流通式债券报价 | 322 | [接口文档/柜台流通式债券报价.md](接口文档/柜台流通式债券报价.md) |
| 15 | 柜台流通式债券最优报价 | 323 | [接口文档/柜台流通式债券最优报价.md](接口文档/柜台流通式债券最优报价.md) |
| 16 | 短期国债利率 | 221 | [接口文档/短期国债利率.md](接口文档/短期国债利率.md) |
## 公募基金
**数量**: 11 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 各渠道公募基金销售保有规模占比 | 265 | [接口文档/各渠道公募基金销售保有规模占比.md](接口文档/各渠道公募基金销售保有规模占比.md) |
| 2 | 基金净值 | 119 | [接口文档/基金净值.md](接口文档/基金净值.md) |
| 3 | 基金分红 | 120 | [接口文档/基金分红.md](接口文档/基金分红.md) |
| 4 | 基金列表 | 19 | [接口文档/基金列表.md](接口文档/基金列表.md) |
| 5 | 基金技术面因子(专业版) | 359 | [接口文档/基金技术面因子(专业版).md](接口文档/基金技术面因子(专业版).md) |
| 6 | 基金持仓 | 121 | [接口文档/基金持仓.md](接口文档/基金持仓.md) |
| 7 | 基金管理人 | 118 | [接口文档/基金管理人.md](接口文档/基金管理人.md) |
| 8 | 基金经理 | 208 | [接口文档/基金经理.md](接口文档/基金经理.md) |
| 9 | 基金规模 | 207 | [接口文档/基金规模.md](接口文档/基金规模.md) |
| 10 | 基金销售行业数据 | 264 | [接口文档/基金销售行业数据.md](接口文档/基金销售行业数据.md) |
| 11 | 销售机构公募基金销售保有规模 | 266 | [接口文档/销售机构公募基金销售保有规模.md](接口文档/销售机构公募基金销售保有规模.md) |
## 其他
**数量**: 67 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 上市公司基本信息 | 112 | [接口文档/上市公司基本信息.md](接口文档/上市公司基本信息.md) |
| 2 | 上市公司管理层 | 193 | [接口文档/上市公司管理层.md](接口文档/上市公司管理层.md) |
| 3 | 业绩快报 | 46 | [接口文档/业绩快报.md](接口文档/业绩快报.md) |
| 4 | 业绩预告 | 45 | [接口文档/业绩预告.md](接口文档/业绩预告.md) |
| 5 | 东方财富App热榜 | 321 | [接口文档/东方财富App热榜.md](接口文档/东方财富App热榜.md) |
| 6 | 东方财富概念成分 | 363 | [接口文档/东方财富概念成分.md](接口文档/东方财富概念成分.md) |
| 7 | 东方财富概念板块 | 362 | [接口文档/东方财富概念板块.md](接口文档/东方财富概念板块.md) |
| 8 | 中央结算系统持股明细 | 274 | [接口文档/中央结算系统持股明细.md](接口文档/中央结算系统持股明细.md) |
| 9 | 中央结算系统持股统计 | 295 | [接口文档/中央结算系统持股统计.md](接口文档/中央结算系统持股统计.md) |
| 10 | 主营业务构成 | 81 | [接口文档/主营业务构成.md](接口文档/主营业务构成.md) |
| 11 | 交易日历 | 26 | [接口文档/交易日历.md](接口文档/交易日历.md) |
| 12 | 交易日历 | 137 | [接口文档/交易日历.md](接口文档/交易日历.md) |
| 13 | 做市借券交易汇总(停) | 334 | [接口文档/做市借券交易汇总(停).md](接口文档/做市借券交易汇总(停).md) |
| 14 | 全球财经事件 | 233 | [接口文档/全球财经事件.md](接口文档/全球财经事件.md) |
| 15 | 分红送股数据 | 103 | [接口文档/分红送股数据.md](接口文档/分红送股数据.md) |
| 16 | 利润表 | 33 | [接口文档/利润表.md](接口文档/利润表.md) |
| 17 | 券商盈利预测数据 | 292 | [接口文档/券商盈利预测数据.md](接口文档/券商盈利预测数据.md) |
| 18 | 北交所新旧代码对照 | 375 | [接口文档/北交所新旧代码对照.md](接口文档/北交所新旧代码对照.md) |
| 19 | 历史Tick行情 | 314 | [接口文档/历史Tick行情.md](接口文档/历史Tick行情.md) |
| 20 | 历史分钟 | 370 | [接口文档/历史分钟.md](接口文档/历史分钟.md) |
| 21 | 历史分钟行情 | 313 | [接口文档/历史分钟行情.md](接口文档/历史分钟行情.md) |
| 22 | 历史日线 | 27 | [接口文档/历史日线.md](接口文档/历史日线.md) |
| 23 | 合约信息 | 135 | [接口文档/合约信息.md](接口文档/合约信息.md) |
| 24 | 同花顺App热榜数 | 320 | [接口文档/同花顺App热榜数.md](接口文档/同花顺App热榜数.md) |
| 25 | 同花顺涨跌停榜单 | 355 | [接口文档/同花顺涨跌停榜单.md](接口文档/同花顺涨跌停榜单.md) |
| 26 | 同花顺行业概念成分 | 261 | [接口文档/同花顺行业概念成分.md](接口文档/同花顺行业概念成分.md) |
| 27 | 同花顺行业概念板块 | 259 | [接口文档/同花顺行业概念板块.md](接口文档/同花顺行业概念板块.md) |
| 28 | 周/月线复权行情(每日更新) | 365 | [接口文档/周_月线复权行情(每日更新).md](接口文档/周_月线复权行情(每日更新).md) |
| 29 | 周/月线行情(每日更新) | 336 | [接口文档/周_月线行情(每日更新).md](接口文档/周_月线行情(每日更新).md) |
| 30 | 周线行情 | 144 | [接口文档/周线行情.md](接口文档/周线行情.md) |
| 31 | 备用行情 | 255 | [接口文档/备用行情.md](接口文档/备用行情.md) |
| 32 | 复权因子 | 28 | [接口文档/复权因子.md](接口文档/复权因子.md) |
| 33 | 复权行情 | 146 | [接口文档/复权行情.md](接口文档/复权行情.md) |
| 34 | 实时Tick(爬虫) | 315 | [接口文档/实时Tick(爬虫).md](接口文档/实时Tick(爬虫).md) |
| 35 | 实时分钟 | 374 | [接口文档/实时分钟.md](接口文档/实时分钟.md) |
| 36 | 实时分钟行情 | 340 | [接口文档/实时分钟行情.md](接口文档/实时分钟行情.md) |
| 37 | 实时成交(爬虫) | 316 | [接口文档/实时成交(爬虫).md](接口文档/实时成交(爬虫).md) |
| 38 | 实时排名(爬虫) | 317 | [接口文档/实时排名(爬虫).md](接口文档/实时排名(爬虫).md) |
| 39 | 实时日线 | 372 | [接口文档/实时日线.md](接口文档/实时日线.md) |
| 40 | 市场游资最全名录 | 311 | [接口文档/市场游资最全名录.md](接口文档/市场游资最全名录.md) |
| 41 | 开盘竞价成交(当日) | 369 | [接口文档/开盘竞价成交(当日).md](接口文档/开盘竞价成交(当日).md) |
| 42 | 日线行情 | 138 | [接口文档/日线行情.md](接口文档/日线行情.md) |
| 43 | 月线行情 | 145 | [接口文档/月线行情.md](接口文档/月线行情.md) |
| 44 | 榜单数据(开盘啦) | 347 | [接口文档/榜单数据(开盘啦).md](接口文档/榜单数据(开盘啦).md) |
| 45 | 每日停复牌信息 | 214 | [接口文档/每日停复牌信息.md](接口文档/每日停复牌信息.md) |
| 46 | 每日指标 | 32 | [接口文档/每日指标.md](接口文档/每日指标.md) |
| 47 | 每日涨跌停价格 | 183 | [接口文档/每日涨跌停价格.md](接口文档/每日涨跌停价格.md) |
| 48 | 每日结算参数 | 141 | [接口文档/每日结算参数.md](接口文档/每日结算参数.md) |
| 49 | 每日股本(盘前) | 329 | [接口文档/每日股本(盘前).md](接口文档/每日股本(盘前).md) |
| 50 | 沪深市场每日交易统计 | 215 | [接口文档/沪深市场每日交易统计.md](接口文档/沪深市场每日交易统计.md) |
| 51 | 沪深股通十大成交股 | 48 | [接口文档/沪深股通十大成交股.md](接口文档/沪深股通十大成交股.md) |
| 52 | 沪深股通持股明细 | 188 | [接口文档/沪深股通持股明细.md](接口文档/沪深股通持股明细.md) |
| 53 | 涨停最强板块统计 | 357 | [接口文档/涨停最强板块统计.md](接口文档/涨停最强板块统计.md) |
| 54 | 涨跌停和炸板数据 | 298 | [接口文档/涨跌停和炸板数据.md](接口文档/涨跌停和炸板数据.md) |
| 55 | 深圳市场每日交易情况 | 268 | [接口文档/深圳市场每日交易情况.md](接口文档/深圳市场每日交易情况.md) |
| 56 | 游资交易每日明细 | 312 | [接口文档/游资交易每日明细.md](接口文档/游资交易每日明细.md) |
| 57 | 现金流量表 | 44 | [接口文档/现金流量表.md](接口文档/现金流量表.md) |
| 58 | 管理层薪酬和持股 | 194 | [接口文档/管理层薪酬和持股.md](接口文档/管理层薪酬和持股.md) |
| 59 | 财务审计意见 | 80 | [接口文档/财务审计意见.md](接口文档/财务审计意见.md) |
| 60 | 财务指标数据 | 79 | [接口文档/财务指标数据.md](接口文档/财务指标数据.md) |
| 61 | 财报披露日期表 | 162 | [接口文档/财报披露日期表.md](接口文档/财报披露日期表.md) |
| 62 | 资产负债表 | 36 | [接口文档/资产负债表.md](接口文档/资产负债表.md) |
| 63 | 通用行情接口 | 109 | [接口文档/通用行情接口.md](接口文档/通用行情接口.md) |
| 64 | 通达信板块信息 | 376 | [接口文档/通达信板块信息.md](接口文档/通达信板块信息.md) |
| 65 | 通达信板块成分 | 377 | [接口文档/通达信板块成分.md](接口文档/通达信板块成分.md) |
| 66 | 通达信板块行情 | 378 | [接口文档/通达信板块行情.md](接口文档/通达信板块行情.md) |
| 67 | 题材成分(开盘啦) | 351 | [接口文档/题材成分(开盘啦).md](接口文档/题材成分(开盘啦).md) |
| 68 | 题材数据(开盘啦) | 350 | [接口文档/题材数据(开盘啦).md](接口文档/题材数据(开盘啦).md) |
## 外汇数据
**数量**: 2 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 外汇基础信息(海外) | 178 | [接口文档/外汇基础信息(海外).md](接口文档/外汇基础信息(海外).md) |
| 2 | 外汇日线行情 | 179 | [接口文档/外汇日线行情.md](接口文档/外汇日线行情.md) |
## 大模型语料
**数量**: 7 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 上市公司公告 | 176 | [接口文档/上市公司公告.md](接口文档/上市公司公告.md) |
| 2 | 上证e互动问答 | 366 | [接口文档/上证e互动问答.md](接口文档/上证e互动问答.md) |
| 3 | 国家政策库 | 406 | [接口文档/国家政策库.md](接口文档/国家政策库.md) |
| 4 | 新闻快讯(短讯) | 143 | [接口文档/新闻快讯(短讯).md](接口文档/新闻快讯(短讯).md) |
| 5 | 新闻联播文字稿 | 154 | [接口文档/新闻联播文字稿.md](接口文档/新闻联播文字稿.md) |
| 6 | 新闻通讯(长篇) | 195 | [接口文档/新闻通讯(长篇).md](接口文档/新闻通讯(长篇).md) |
| 7 | 深证易互动问答 | 367 | [接口文档/深证易互动问答.md](接口文档/深证易互动问答.md) |
## 宏观经济
**数量**: 10 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | Hibor利率 | 153 | [接口文档/Hibor利率.md](接口文档/Hibor利率.md) |
| 2 | LPR贷款基础利率 | 151 | [接口文档/LPR贷款基础利率.md](接口文档/LPR贷款基础利率.md) |
| 3 | Libor利率 | 152 | [接口文档/Libor利率.md](接口文档/Libor利率.md) |
| 4 | Shibor利率 | 149 | [接口文档/Shibor利率.md](接口文档/Shibor利率.md) |
| 5 | Shibor报价数据 | 150 | [接口文档/Shibor报价数据.md](接口文档/Shibor报价数据.md) |
| 6 | 国内生产总值(GDP) | 227 | [接口文档/国内生产总值(GDP).md](接口文档/国内生产总值(GDP).md) |
| 7 | 广州民间借贷利率 | 174 | [接口文档/广州民间借贷利率.md](接口文档/广州民间借贷利率.md) |
| 8 | 温州民间借贷利率 | 173 | [接口文档/温州民间借贷利率.md](接口文档/温州民间借贷利率.md) |
| 9 | 社融增量(月度) | 310 | [接口文档/社融增量(月度).md](接口文档/社融增量(月度).md) |
| 10 | 货币供应量(月) | 242 | [接口文档/货币供应量(月).md](接口文档/货币供应量(月).md) |
## 指数专题
**数量**: 18 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 东财概念和行业指数行情 | 382 | [接口文档/东财概念和行业指数行情.md](接口文档/东财概念和行业指数行情.md) |
| 2 | 中信行业成分 | 373 | [接口文档/中信行业成分.md](接口文档/中信行业成分.md) |
| 3 | 中信行业指数日行情 | 308 | [接口文档/中信行业指数日行情.md](接口文档/中信行业指数日行情.md) |
| 4 | 南华期货指数行情 | 155 | [接口文档/南华期货指数行情.md](接口文档/南华期货指数行情.md) |
| 5 | 同花顺概念和行业指数行情 | 260 | [接口文档/同花顺概念和行业指数行情.md](接口文档/同花顺概念和行业指数行情.md) |
| 6 | 国际主要指数 | 211 | [接口文档/国际主要指数.md](接口文档/国际主要指数.md) |
| 7 | 大盘指数每日指标 | 128 | [接口文档/大盘指数每日指标.md](接口文档/大盘指数每日指标.md) |
| 8 | 指数周线行情 | 171 | [接口文档/指数周线行情.md](接口文档/指数周线行情.md) |
| 9 | 指数基本信息 | 94 | [接口文档/指数基本信息.md](接口文档/指数基本信息.md) |
| 10 | 指数实时日线 | 403 | [接口文档/指数实时日线.md](接口文档/指数实时日线.md) |
| 11 | 指数成分和权重 | 96 | [接口文档/指数成分和权重.md](接口文档/指数成分和权重.md) |
| 12 | 指数技术面因子(专业版) | 358 | [接口文档/指数技术面因子(专业版).md](接口文档/指数技术面因子(专业版).md) |
| 13 | 指数日线行情 | 95 | [接口文档/指数日线行情.md](接口文档/指数日线行情.md) |
| 14 | 指数月线行情 | 172 | [接口文档/指数月线行情.md](接口文档/指数月线行情.md) |
| 15 | 申万行业分类 | 181 | [接口文档/申万行业分类.md](接口文档/申万行业分类.md) |
| 16 | 申万行业成分(分级) | 335 | [接口文档/申万行业成分(分级).md](接口文档/申万行业成分(分级).md) |
| 17 | 申万行业指数日行情 | 327 | [接口文档/申万行业指数日行情.md](接口文档/申万行业指数日行情.md) |
| 18 | 采购经理指数(PMI) | 325 | [接口文档/采购经理指数(PMI).md](接口文档/采购经理指数(PMI).md) |
## 期权数据
**数量**: 3 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 期权分钟行情 | 341 | [接口文档/期权分钟行情.md](接口文档/期权分钟行情.md) |
| 2 | 期权合约信息 | 158 | [接口文档/期权合约信息.md](接口文档/期权合约信息.md) |
| 3 | 期权日线行情 | 159 | [接口文档/期权日线行情.md](接口文档/期权日线行情.md) |
## 期货数据
**数量**: 6 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 仓单日报 | 140 | [接口文档/仓单日报.md](接口文档/仓单日报.md) |
| 2 | 期货主力与连续合约 | 189 | [接口文档/期货主力与连续合约.md](接口文档/期货主力与连续合约.md) |
| 3 | 期货主要品种交易周报 | 216 | [接口文档/期货主要品种交易周报.md](接口文档/期货主要品种交易周报.md) |
| 4 | 期货合约涨跌停价格 | 368 | [接口文档/期货合约涨跌停价格.md](接口文档/期货合约涨跌停价格.md) |
| 5 | 期货周/月线行情(每日更新) | 337 | [接口文档/期货周_月线行情(每日更新).md](接口文档/期货周_月线行情(每日更新).md) |
| 6 | 每日持仓排名 | 139 | [接口文档/每日持仓排名.md](接口文档/每日持仓排名.md) |
## 港股数据
**数量**: 14 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 港股交易日历 | 250 | [接口文档/港股交易日历.md](接口文档/港股交易日历.md) |
| 2 | 港股分钟行情 | 304 | [接口文档/港股分钟行情.md](接口文档/港股分钟行情.md) |
| 3 | 港股利润表 | 389 | [接口文档/港股利润表.md](接口文档/港股利润表.md) |
| 4 | 港股基础信息 | 191 | [接口文档/港股基础信息.md](接口文档/港股基础信息.md) |
| 5 | 港股复权因子 | 401 | [接口文档/港股复权因子.md](接口文档/港股复权因子.md) |
| 6 | 港股复权行情 | 339 | [接口文档/港股复权行情.md](接口文档/港股复权行情.md) |
| 7 | 港股实时日线 | 383 | [接口文档/港股实时日线.md](接口文档/港股实时日线.md) |
| 8 | 港股日线行情 | 192 | [接口文档/港股日线行情.md](接口文档/港股日线行情.md) |
| 9 | 港股现金流量表 | 391 | [接口文档/港股现金流量表.md](接口文档/港股现金流量表.md) |
| 10 | 港股财务指标数据 | 388 | [接口文档/港股财务指标数据.md](接口文档/港股财务指标数据.md) |
| 11 | 港股资产负债表 | 390 | [接口文档/港股资产负债表.md](接口文档/港股资产负债表.md) |
| 12 | 港股通十大成交股 | 49 | [接口文档/港股通十大成交股.md](接口文档/港股通十大成交股.md) |
| 13 | 港股通每日成交统计 | 196 | [接口文档/港股通每日成交统计.md](接口文档/港股通每日成交统计.md) |
| 14 | 港股通每月成交统计 | 197 | [接口文档/港股通每月成交统计.md](接口文档/港股通每月成交统计.md) |
## 现货数据
**数量**: 2 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 上海黄金基础信息 | 284 | [接口文档/上海黄金基础信息.md](接口文档/上海黄金基础信息.md) |
| 2 | 上海黄金现货日行情 | 285 | [接口文档/上海黄金现货日行情.md](接口文档/上海黄金现货日行情.md) |
## 美股数据
**数量**: 9 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 美股交易日历 | 253 | [接口文档/美股交易日历.md](接口文档/美股交易日历.md) |
| 2 | 美股利润表 | 394 | [接口文档/美股利润表.md](接口文档/美股利润表.md) |
| 3 | 美股基础信息 | 252 | [接口文档/美股基础信息.md](接口文档/美股基础信息.md) |
| 4 | 美股复权因子 | 402 | [接口文档/美股复权因子.md](接口文档/美股复权因子.md) |
| 5 | 美股复权行情 | 338 | [接口文档/美股复权行情.md](接口文档/美股复权行情.md) |
| 6 | 美股日线行情 | 254 | [接口文档/美股日线行情.md](接口文档/美股日线行情.md) |
| 7 | 美股现金流量表 | 396 | [接口文档/美股现金流量表.md](接口文档/美股现金流量表.md) |
| 8 | 美股财务指标数据 | 393 | [接口文档/美股财务指标数据.md](接口文档/美股财务指标数据.md) |
| 9 | 美股资产负债表 | 395 | [接口文档/美股资产负债表.md](接口文档/美股资产负债表.md) |
## 股票数据
**数量**: 39 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | AH股比价 | 399 | [接口文档/AH股比价.md](接口文档/AH股比价.md) |
| 2 | IPO新股上市 | 123 | [接口文档/IPO新股上市.md](接口文档/IPO新股上市.md) |
| 3 | ST股票列表 | 397 | [接口文档/ST股票列表.md](接口文档/ST股票列表.md) |
| 4 | 债券回购日行情 | 256 | [接口文档/债券回购日行情.md](接口文档/债券回购日行情.md) |
| 5 | 券商月度金股 | 267 | [接口文档/券商月度金股.md](接口文档/券商月度金股.md) |
| 6 | 前十大流通股东 | 62 | [接口文档/前十大流通股东.md](接口文档/前十大流通股东.md) |
| 7 | 前十大股东 | 61 | [接口文档/前十大股东.md](接口文档/前十大股东.md) |
| 8 | 大宗交易 | 161 | [接口文档/大宗交易.md](接口文档/大宗交易.md) |
| 9 | 大宗交易 | 271 | [接口文档/大宗交易.md](接口文档/大宗交易.md) |
| 10 | 大宗交易明细 | 272 | [接口文档/大宗交易明细.md](接口文档/大宗交易明细.md) |
| 11 | 机构调研数据 | 275 | [接口文档/机构调研数据.md](接口文档/机构调研数据.md) |
| 12 | 每日筹码分布 | 294 | [接口文档/每日筹码分布.md](接口文档/每日筹码分布.md) |
| 13 | 每日筹码及胜率 | 293 | [接口文档/每日筹码及胜率.md](接口文档/每日筹码及胜率.md) |
| 14 | 沪深港通股票列表 | 398 | [接口文档/沪深港通股票列表.md](接口文档/沪深港通股票列表.md) |
| 15 | 涨停股票连板天梯 | 356 | [接口文档/涨停股票连板天梯.md](接口文档/涨停股票连板天梯.md) |
| 16 | 神奇九转指标 | 364 | [接口文档/神奇九转指标.md](接口文档/神奇九转指标.md) |
| 17 | 股东人数 | 166 | [接口文档/股东人数.md](接口文档/股东人数.md) |
| 18 | 股东增减持 | 175 | [接口文档/股东增减持.md](接口文档/股东增减持.md) |
| 19 | 股权质押明细数据 | 111 | [接口文档/股权质押明细数据.md](接口文档/股权质押明细数据.md) |
| 20 | 股权质押统计数据 | 110 | [接口文档/股权质押统计数据.md](接口文档/股权质押统计数据.md) |
| 21 | 股票列表 | 25 | [接口文档/股票列表.md](接口文档/股票列表.md) |
| 22 | 股票历史列表 | 262 | [接口文档/股票历史列表.md](接口文档/股票历史列表.md) |
| 23 | 股票回购 | 124 | [接口文档/股票回购.md](接口文档/股票回购.md) |
| 24 | 股票开户数据(停) | 164 | [接口文档/股票开户数据(停).md](接口文档/股票开户数据(停).md) |
| 25 | 股票开户数据(旧) | 165 | [接口文档/股票开户数据(旧).md](接口文档/股票开户数据(旧).md) |
| 26 | 股票开盘集合竞价数据 | 353 | [接口文档/股票开盘集合竞价数据.md](接口文档/股票开盘集合竞价数据.md) |
| 27 | 股票技术面因子 | 296 | [接口文档/股票技术面因子.md](接口文档/股票技术面因子.md) |
| 28 | 股票技术面因子(专业版) | 328 | [接口文档/股票技术面因子(专业版).md](接口文档/股票技术面因子(专业版).md) |
| 29 | 股票收盘集合竞价数据 | 354 | [接口文档/股票收盘集合竞价数据.md](接口文档/股票收盘集合竞价数据.md) |
| 30 | 股票曾用名 | 100 | [接口文档/股票曾用名.md](接口文档/股票曾用名.md) |
| 31 | 融资融券交易明细 | 59 | [接口文档/融资融券交易明细.md](接口文档/融资融券交易明细.md) |
| 32 | 融资融券交易汇总 | 58 | [接口文档/融资融券交易汇总.md](接口文档/融资融券交易汇总.md) |
| 33 | 融资融券标的(盘前) | 326 | [接口文档/融资融券标的(盘前).md](接口文档/融资融券标的(盘前).md) |
| 34 | 转融券交易明细(停) | 333 | [接口文档/转融券交易明细(停).md](接口文档/转融券交易明细(停).md) |
| 35 | 转融券交易汇总(停) | 332 | [接口文档/转融券交易汇总(停).md](接口文档/转融券交易汇总(停).md) |
| 36 | 转融资交易汇总 | 331 | [接口文档/转融资交易汇总.md](接口文档/转融资交易汇总.md) |
| 37 | 限售股解禁 | 160 | [接口文档/限售股解禁.md](接口文档/限售股解禁.md) |
| 38 | 龙虎榜机构交易单 | 107 | [接口文档/龙虎榜机构交易单.md](接口文档/龙虎榜机构交易单.md) |
| 39 | 龙虎榜每日统计单 | 106 | [接口文档/龙虎榜每日统计单.md](接口文档/龙虎榜每日统计单.md) |
## 行业经济
**数量**: 8 个接口
| 序号 | 接口名称 | 文档ID | 文档路径 |
|------|---------|--------|----------|
| 1 | 全国电影剧本备案数据 | 156 | [接口文档/全国电影剧本备案数据.md](接口文档/全国电影剧本备案数据.md) |
| 2 | 全国电视剧备案公示数据 | 180 | [接口文档/全国电视剧备案公示数据.md](接口文档/全国电视剧备案公示数据.md) |
| 3 | 台湾电子产业月营收 | 88 | [接口文档/台湾电子产业月营收.md](接口文档/台湾电子产业月营收.md) |
| 4 | 台湾电子产业月营收明细 | 87 | [接口文档/台湾电子产业月营收明细.md](接口文档/台湾电子产业月营收明细.md) |
| 5 | 影院日度票房 | 116 | [接口文档/影院日度票房.md](接口文档/影院日度票房.md) |
| 6 | 电影周度票房 | 114 | [接口文档/电影周度票房.md](接口文档/电影周度票房.md) |
| 7 | 电影日度票房 | 115 | [接口文档/电影日度票房.md](接口文档/电影日度票房.md) |
| 8 | 电影月度票房 | 113 | [接口文档/电影月度票房.md](接口文档/电影月度票房.md) |
---
## 分类统计
| 分类 | 接口数量 |
|------|---------|
| ETF专题 | 7 |
| 债券专题 | 16 |
| 公募基金 | 11 |
| 其他 | 67 |
| 外汇数据 | 2 |
| 大模型语料 | 7 |
| 宏观经济 | 10 |
| 指数专题 | 18 |
| 期权数据 | 3 |
| 期货数据 | 6 |
| 港股数据 | 14 |
| 现货数据 | 2 |
| 美股数据 | 9 |
| 股票数据 | 39 |
| 行业经济 | 8 |
| **合计** | **220** |

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,160 @@
# AH股比价
**文档ID**: 399
**原始链接**: https://tushare.pro/document/2?doc_id=399
---
## AH股比价
接口:stk_ah_comparison,可以通过数据工具调试和查看数据。描述:AH股比价数据,可根据交易日期获取历史权限:5000积分起提示:每天盘后17:00更新,单次请求最大返回1000行数据,可循环提取,本接口数据从20250812开始,由于历史不好补充,只能累积
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>hk_code</td>
<td>str</td>
<td>N</td>
<td>港股股票代码(xxxxx.HK)</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>A股票代码(xxxxxx.SH/SZ/BJ)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:YYYYMMDD下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>hk_code</td>
<td>str</td>
<td>Y</td>
<td>港股股票代码</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>A股股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>hk_name</td>
<td>str</td>
<td>Y</td>
<td>港股股票名称</td>
</tr>
<tr>
<td>hk_pct_chg</td>
<td>float</td>
<td>Y</td>
<td>港股股票涨跌幅</td>
</tr>
<tr>
<td>hk_close</td>
<td>float</td>
<td>Y</td>
<td>港股股票收盘价</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>A股股票名称</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>A股股票收盘价</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>A股股票涨跌幅</td>
</tr>
<tr>
<td>ah_comparison</td>
<td>float</td>
<td>Y</td>
<td>比价(A/H)</td>
</tr>
<tr>
<td>ah_premium</td>
<td>float</td>
<td>Y</td>
<td>溢价(A/H)%</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取20250812日所有的AH股比价数据
df = pro.stk_ah_comparison(trade_date='20250812')
```
数据样例
```
hk_code ts_code trade_date hk_name hk_pct_chg hk_close name close pct_chg ah_comparison ah_premium
0 02068.HK 601068.SH 20250812 中铝国际 0.78 2.60 中铝国际 5.14 0.00 2.16 115.84
1 03993.HK 603993.SH 20250812 洛阳钼业 0.60 10.07 洛阳钼业 9.85 0.31 1.07 6.80
2 06066.HK 601066.SH 20250812 中信建投证券 1.77 13.25 中信建投 26.09 0.66 2.15 114.99
3 06680.HK 300748.SZ 20250812 金力永磁 -5.67 18.30 金力永磁 27.30 -3.05 1.63 62.88
4 02333.HK 601633.SH 20250812 长城汽车 3.55 14.60 长城汽车 22.93 1.82 1.71 71.48
.. ... ... ... ... ... ... ... ... ... ... ...
155 06196.HK 002936.SZ 20250812 郑州银行 1.41 1.44 郑州银行 2.10 0.48 1.59 59.22
156 06818.HK 601818.SH 20250812 中国光大银行 1.61 3.78 光大银行 4.10 0.99 1.18 18.43
157 06693.HK 600988.SH 20250812 赤峰黄金 1.76 25.44 赤峰黄金 24.58 0.24 1.05 5.49
158 02196.HK 600196.SH 20250812 复星医药 2.22 19.77 复星医药 27.70 3.36 1.53 52.98
159 01065.HK 600874.SH 20250812 天津创业环保股份 2.24 4.10 创业环保 6.01 0.00 1.60 60.05
```

View file

@ -0,0 +1,145 @@
# ETF份额规模
**文档ID**: 408
**原始链接**: https://tushare.pro/document/2?doc_id=408
---
### 接口介绍
接口:etf_share_size描述:获取沪深ETF每日份额和规模数据,能体现规模份额的变化,掌握ETF资金动向,同时提供每日净值和收盘价;数据指标是分批入库,建议在每日19点后提取;另外,涉及海外的ETF数据更新会晚一些属于正常情况。限量:单次最大5000条,可根据代码或日期循环提取积分:需要8000积分可以调取,具体请参阅积分获取办法
### 输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>基金代码 (可从ETF基础信息接口提取)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所(SSE上交所 SZSE深交所)</td>
</tr>
</tbody>
</table>
### 输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>ETF代码</td>
</tr>
<tr>
<td>etf_name</td>
<td>str</td>
<td>Y</td>
<td>基金名称</td>
</tr>
<tr>
<td>total_share</td>
<td>float</td>
<td>Y</td>
<td>总份额(万份)</td>
</tr>
<tr>
<td>total_size</td>
<td>float</td>
<td>Y</td>
<td>总规模(万元)</td>
</tr>
<tr>
<td>nav</td>
<td>float</td>
<td>N</td>
<td>基金份额净值(元)</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>N</td>
<td>收盘价(元)</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所(SSE上交所 SZSE深交所 BSE北交所)</td>
</tr>
</tbody>
</table>
### 代码示例
```
#获取”沪深300ETF华夏”ETF2025年以来每个交易日的份额和规模情况
df = pro.etf_share_size(ts_code='510330.SH', start_date='20250101', end_date='20251224')
#获取2025年12月24日上交所的所有ETF份额和规模情况
df = pro.etf_share_size(trade_date='20251224', exchange='SSE')
```
### 数据结果
```
trade_date ts_code etf_name total_share total_size exchange
0 20251224 510330.SH 沪深300ETF华夏 4741854.98 2.287898e+07 SSE
1 20251222 510330.SH 沪深300ETF华夏 4746894.98 2.279127e+07 SSE
2 20251219 510330.SH 沪深300ETF华夏 4756974.98 2.262512e+07 SSE
3 20251218 510330.SH 沪深300ETF华夏 4757514.98 2.253778e+07 SSE
4 20251217 510330.SH 沪深300ETF华夏 4756884.98 2.266418e+07 SSE
.. ... ... ... ... ... ...
232 20250108 510330.SH 沪深300ETF华夏 4032384.98 1.599808e+07 SSE
233 20250107 510330.SH 沪深300ETF华夏 4009164.98 1.592962e+07 SSE
234 20250106 510330.SH 沪深300ETF华夏 3999084.98 1.577239e+07 SSE
235 20250103 510330.SH 沪深300ETF华夏 3994674.98 1.578176e+07 SSE
236 20250102 510330.SH 沪深300ETF华夏 3986754.98 1.593905e+07 SSE
```

View file

@ -0,0 +1,165 @@
# ETF分钟行情
**文档ID**: 387
**原始链接**: https://tushare.pro/document/2?doc_id=387
---
## ETF历史分钟行情
接口:stk_mins描述:获取ETF分钟数据,支持1min/5min/15min/30min/60min行情,提供Python SDK和 http Restful API两种方式限量:单次最大8000行数据,可以通过股票代码和时间循环获取,本接口可以提供超过10年ETF历史分钟数据权限:正式权限请参阅权限说明
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>ETF代码,e.g. 159001.SZ</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>分钟频度(1min/5min/15min/30min/60min)</td>
</tr>
<tr>
<td>start_date</td>
<td>datetime</td>
<td>N</td>
<td>开始日期 格式:2025-06-01 09:00:00</td>
</tr>
<tr>
<td>end_date</td>
<td>datetime</td>
<td>N</td>
<td>结束时间 格式:2025-06-20 19:00:00</td>
</tr>
</tbody></table>
freq参数说明
<table>
<thead>
<tr>
<th>freq</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>1min</td>
<td>1分钟</td>
</tr>
<tr>
<td>5min</td>
<td>5分钟</td>
</tr>
<tr>
<td>15min</td>
<td>15分钟</td>
</tr>
<tr>
<td>30min</td>
<td>30分钟</td>
</tr>
<tr>
<td>60min</td>
<td>60分钟</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>ETF代码</td>
</tr>
<tr>
<td>trade_time</td>
<td>str</td>
<td>Y</td>
<td>交易时间</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价</td>
</tr>
<tr>
<td>vol</td>
<td>int</td>
<td>Y</td>
<td>成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取沪深300ETF华夏510330.SH的历史分钟数据
df = pro.stk_mins(ts_code='510330.SH', freq='1min', start_date='2025-06-20 09:00:00', end_date='2025-06-20 19:00:00')
```
数据样例
```
ts_code trade_time close open high low vol amount
0 510330.SH 2025-06-20 15:00:00 3.991 3.991 3.992 3.990 800600.0 3194805.0
1 510330.SH 2025-06-20 14:59:00 3.991 3.990 3.991 3.989 182500.0 728177.0
2 510330.SH 2025-06-20 14:58:00 3.990 3.992 3.992 3.990 113700.0 453763.0
3 510330.SH 2025-06-20 14:57:00 3.992 3.992 3.992 3.991 17400.0 69460.0
4 510330.SH 2025-06-20 14:56:00 3.992 3.992 3.992 3.991 447500.0 1786373.0
.. ... ... ... ... ... ... ... ...
236 510330.SH 2025-06-20 09:34:00 3.994 3.994 3.995 3.994 2528100.0 10097818.0
237 510330.SH 2025-06-20 09:33:00 3.994 3.991 3.994 3.991 143300.0 572084.0
238 510330.SH 2025-06-20 09:32:00 3.992 3.990 3.993 3.990 1118500.0 4463264.0
239 510330.SH 2025-06-20 09:31:00 3.988 3.984 3.992 3.984 1176100.0 4691600.0
240 510330.SH 2025-06-20 09:30:00 3.983 3.983 3.983 3.983 20700.0 82448.0
```

View file

@ -0,0 +1,126 @@
# ETF基准指数
**文档ID**: 386
**原始链接**: https://tushare.pro/document/2?doc_id=386
---
## ETF基准指数列表
接口:etf_index描述:获取ETF基准指数列表信息限量:单次请求最大返回5000行数据(当前未超过2000个)权限:用户积累8000积分可调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>指数代码</td>
</tr>
<tr>
<td>pub_date</td>
<td>str</td>
<td>N</td>
<td>发布日期(格式:YYYYMMDD)</td>
</tr>
<tr>
<td>base_date</td>
<td>str</td>
<td>N</td>
<td>指数基期(格式:YYYYMMDD)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>指数代码</td>
</tr>
<tr>
<td>indx_name</td>
<td>str</td>
<td>Y</td>
<td>指数全称</td>
</tr>
<tr>
<td>indx_csname</td>
<td>str</td>
<td>Y</td>
<td>指数简称</td>
</tr>
<tr>
<td>pub_party_name</td>
<td>str</td>
<td>Y</td>
<td>指数发布机构</td>
</tr>
<tr>
<td>pub_date</td>
<td>str</td>
<td>Y</td>
<td>指数发布日期</td>
</tr>
<tr>
<td>base_date</td>
<td>str</td>
<td>Y</td>
<td>指数基日</td>
</tr>
<tr>
<td>bp</td>
<td>float</td>
<td>Y</td>
<td>指数基点(点)</td>
</tr>
<tr>
<td>adj_circle</td>
<td>str</td>
<td>Y</td>
<td>指数成份证券调整周期</td>
</tr>
</tbody></table>
接口示例
```
#获取当前ETF跟踪的基准指数列表
df = pro.etf_index(fields='ts_code,indx_name,pub_date,bp')
```
数据示例
```
ts_code indx_name pub_date bp
0 000068.SH 上证自然资源指数 20100528 1000.000000
1 000001.SH 上证综合指数 19910715 100.000000
2 000989.SH 中证全指可选消费指数 20110802 1000.000000
3 000990.CSI 中证全指主要消费指数 20110802 1000.000000
4 000043.SH 上证超级大盘指数 20090423 1000.000000
... ... ... ... ...
1458 932368.CSI 中证800自由现金流指数 20241211 1000.000000
1460 000680.SH 上证科创板综合指数 20250120 1000.000000
1461 000681.SH 上证科创板综合价格指数 20250120 1000.000000
```

View file

@ -0,0 +1,213 @@
# ETF基本信息
**文档ID**: 385
**原始链接**: https://tushare.pro/document/2?doc_id=385
---
## ETF基础信息
接口:etf_basic描述:获取国内ETF基础信息,包括了QDII。数据来源与沪深交易所公开披露信息。限量:单次请求最大放回5000条数据(当前ETF总数未超过2000)权限:用户积8000积分可调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>ETF代码(带.SZ/.SH后缀的6位数字,如:159526.SZ)</td>
</tr>
<tr>
<td>index_code</td>
<td>str</td>
<td>N</td>
<td>跟踪指数代码</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>N</td>
<td>上市日期(格式:YYYYMMDD)</td>
</tr>
<tr>
<td>list_status</td>
<td>str</td>
<td>N</td>
<td>上市状态(L上市 D退市 P待上市)</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所(SH上交所 SZ深交所)</td>
</tr>
<tr>
<td>mgr</td>
<td>str</td>
<td>N</td>
<td>管理人(简称,e.g.华夏基金)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>基金交易代码</td>
</tr>
<tr>
<td>csname</td>
<td>str</td>
<td>Y</td>
<td>ETF中文简称</td>
</tr>
<tr>
<td>extname</td>
<td>str</td>
<td>Y</td>
<td>ETF扩位简称(对应交易所简称)</td>
</tr>
<tr>
<td>cname</td>
<td>str</td>
<td>Y</td>
<td>基金中文全称</td>
</tr>
<tr>
<td>index_code</td>
<td>str</td>
<td>Y</td>
<td>ETF基准指数代码</td>
</tr>
<tr>
<td>index_name</td>
<td>str</td>
<td>Y</td>
<td>ETF基准指数中文全称</td>
</tr>
<tr>
<td>setup_date</td>
<td>str</td>
<td>Y</td>
<td>设立日期(格式:YYYYMMDD)</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期(格式:YYYYMMDD)</td>
</tr>
<tr>
<td>list_status</td>
<td>str</td>
<td>Y</td>
<td>存续状态(L上市 D退市 P待上市)</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所(上交所SH 深交所SZ)</td>
</tr>
<tr>
<td>mgr_name</td>
<td>str</td>
<td>Y</td>
<td>基金管理人简称</td>
</tr>
<tr>
<td>custod_name</td>
<td>str</td>
<td>Y</td>
<td>基金托管人名称</td>
</tr>
<tr>
<td>mgt_fee</td>
<td>float</td>
<td>Y</td>
<td>基金管理人收取的费用</td>
</tr>
<tr>
<td>etf_type</td>
<td>str</td>
<td>Y</td>
<td>基金投资通道类型(境内、QDII)</td>
</tr>
</tbody></table>
接口示例
```
#获取当前所有上市的ETF列表
df = pro.etf_basic(list_status='L', fields='ts_code,extname,index_code,index_name,exchange,mgr_name')
#获取“嘉实基金”所有上市的ETF列表
df = pro.etf_basic(mgr='嘉实基金', list_status='L', fields='ts_code,extname,index_code,index_name,exchange,etf_type')
#获取“嘉实基金”在深交所上市的所有ETF列表
df = pro.etf_basic(mgr='嘉实基金', list_status='L', exchange='SZ', fields='ts_code,extname,index_code,index_name,exchange,etf_type')
#获取以沪深300指数为跟踪指数的所有上市的ETF列表
df = pro.etf_basic(index_code='000300.SH', fields='ts_code,extname,index_code,index_name,exchange,mgr_name')
```
数据示例
```
ts_code extname index_code index_name exchange mgr_name
0 159238.SZ 300ETF增强 000300.SH 沪深300指数 SZ 景顺长城基金
1 159300.SZ 300ETF 000300.SH 沪深300指数 SZ 富国基金
2 159330.SZ 沪深300ETF基金 000300.SH 沪深300指数 SZ 西藏东财基金
3 159393.SZ 沪深300指数ETF 000300.SH 沪深300指数 SZ 万家基金
4 159673.SZ 沪深300ETF鹏华 000300.SH 沪深300指数 SZ 鹏华基金
5 159919.SZ 沪深300ETF 000300.SH 沪深300指数 SZ 嘉实基金
6 159925.SZ 沪深300ETF南方 000300.SH 沪深300指数 SZ 南方基金
7 159927.SZ 鹏华沪深300指数 000300.SH 沪深300指数 SZ 鹏华基金
8 510300.SH 沪深300ETF 000300.SH 沪深300指数 SH 华泰柏瑞基金
9 510310.SH 沪深300ETF易方达 000300.SH 沪深300指数 SH 易方达基金
10 510320.SH 沪深300ETF中金 000300.SH 沪深300指数 SH 中金基金
11 510330.SH 沪深300ETF华夏 000300.SH 沪深300指数 SH 华夏基金
12 510350.SH 沪深300ETF工银 000300.SH 沪深300指数 SH 工银瑞信基金
13 510360.SH 沪深300ETF基金 000300.SH 沪深300指数 SH 广发基金
14 510370.SH 300指数ETF 000300.SH 沪深300指数 SH 兴业基金
15 510380.SH 国寿300ETF 000300.SH 沪深300指数 SH 国寿安保基金
16 510390.SH 沪深300ETF平安 000300.SH 沪深300指数 SH 平安基金
17 515130.SH 沪深300ETF博时 000300.SH 沪深300指数 SH 博时基金
18 515310.SH 沪深300指数ETF 000300.SH 沪深300指数 SH 汇添富基金
19 515330.SH 沪深300ETF天弘 000300.SH 沪深300指数 SH 天弘基金
20 515350.SH 民生加银300ETF 000300.SH 沪深300指数 SH 民生加银基金
21 515360.SH 方正沪深300ETF 000300.SH 沪深300指数 SH 方正富邦基金
22 515380.SH 沪深300ETF泰康 000300.SH 沪深300指数 SH 泰康基金
23 515390.SH 沪深300ETF指数基金 000300.SH 沪深300指数 SH 华安基金
24 515660.SH 沪深300ETF国联安 000300.SH 沪深300指数 SH 国联安基金
25 515930.SH 永赢沪深300ETF 000300.SH 沪深300指数 SH 永赢基金
26 561000.SH 沪深300ETF增强基金 000300.SH 沪深300指数 SH 华安基金
27 561300.SH 300增强ETF 000300.SH 沪深300指数 SH 国泰基金
28 561930.SH 沪深300ETF招商 000300.SH 沪深300指数 SH 招商基金
29 561990.SH 沪深300增强ETF 000300.SH 沪深300指数 SH 招商基金
30 563520.SH 沪深300ETF永赢 000300.SH 沪深300指数 SH 永赢基金
```

View file

@ -0,0 +1,130 @@
# ETF复权因子
**文档ID**: 199
**原始链接**: https://tushare.pro/document/2?doc_id=199
---
## 基金复权因子
接口:fund_adj描述:获取基金复权因子,用于计算基金复权行情限量:单次最大提取2000行记录,可循环提取,数据总量不限制积分:用户积600积分可调取,超过5000积分以上频次相对较高。具体请参阅积分获取办法
复权行情实现参考:
后复权 = 当日最新价 × 当日复权因子前复权 = 当日最新价 ÷ 最新复权因子
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS基金代码(支持多只基金输入)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:yyyymmdd,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>offset</td>
<td>str</td>
<td>N</td>
<td>开始行数</td>
</tr>
<tr>
<td>limit</td>
<td>str</td>
<td>N</td>
<td>最大行数</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>ts基金代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>adj_factor</td>
<td>float</td>
<td>Y</td>
<td>复权因子</td>
</tr>
</tbody></table>
接口使用
```
pro = ts.pro_api()
df = pro.fund_adj(ts_code='513100.SH', start_date='20190101', end_date='20190926')
```
数据示例
```
ts_code trade_date adj_factor
0 513100.SH 20190926 1.0
1 513100.SH 20190925 1.0
2 513100.SH 20190924 1.0
3 513100.SH 20190923 1.0
4 513100.SH 20190920 1.0
5 513100.SH 20190919 1.0
6 513100.SH 20190918 1.0
7 513100.SH 20190917 1.0
8 513100.SH 20190916 1.0
9 513100.SH 20190912 1.0
10 513100.SH 20190911 1.0
11 513100.SH 20190910 1.0
12 513100.SH 20190909 1.0
13 513100.SH 20190906 1.0
14 513100.SH 20190905 1.0
15 513100.SH 20190904 1.0
16 513100.SH 20190903 1.0
17 513100.SH 20190902 1.0
18 513100.SH 20190830 1.0
19 513100.SH 20190829 1.0
20 513100.SH 20190828 1.0
```

View file

@ -0,0 +1,159 @@
# ETF实时日线
**文档ID**: 400
**原始链接**: https://tushare.pro/document/2?doc_id=400
---
## ETF实时日线
接口:rt_etf_k描述:获取ETF实时日k线行情,支持按ETF代码或代码通配符一次性提取全部ETF实时日k线行情积分:本接口是单独开权限的数据,单独申请权限请参考权限列表
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>支持通配符方式,e.g. 5*.SH、15*.SZ、159101.SZ</td>
</tr>
<tr>
<td>topic</td>
<td>str</td>
<td>Y</td>
<td>分类参数,取上海ETF时,需要输入'HQ_FND_TICK',参考下面例子</td>
</tr>
</tbody>
</table>
注:ts_code代码一定要带.SH/.SZ/.BJ后缀
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>ETF代码</td>
</tr>
<tr>
<td>name</td>
<td>None</td>
<td>Y</td>
<td>ETF名称</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨收价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价(最新价)</td>
</tr>
<tr>
<td>vol</td>
<td>int</td>
<td>Y</td>
<td>成交量(股)</td>
</tr>
<tr>
<td>amount</td>
<td>int</td>
<td>Y</td>
<td>成交金额(元)</td>
</tr>
<tr>
<td>num</td>
<td>int</td>
<td>Y</td>
<td>开盘以来成交笔数</td>
</tr>
<tr>
<td>ask_volume1</td>
<td>int</td>
<td>N</td>
<td>委托卖盘(股)</td>
</tr>
<tr>
<td>bid_volume1</td>
<td>int</td>
<td>N</td>
<td>委托买盘(股)</td>
</tr>
<tr>
<td>trade_time</td>
<td>str</td>
<td>N</td>
<td>交易时间</td>
</tr>
</tbody>
</table>
接口示例
```
#获取今日所有深市ETF实时日线和成交笔数
df = pro.rt_etf_k(ts_code='1*.SZ')
#获取今日沪市所有ETF实时日线和成交笔数
df = pro.rt_etf_k(ts_code='5*.SH', topic='HQ_FND_TICK')
```
数据示例
```
ts_code name pre_close high open low close vol amount num
0 520860.SH 港股通科 1.024 1.054 1.048 1.041 1.048 15071600 15780985 307
1 515320.SH 电子50 1.173 1.211 1.184 1.184 1.206 1830600 2191339 98
2 511600.SH 货币ETF 100.008 100.003 100.002 99.999 100.000 12022 1202204 28
3 501075.SH 科创主题 2.350 2.400 2.357 2.357 2.400 4200 10040 11
4 589990.SH 科创板综 1.282 1.311 1.280 1.280 1.305 4178600 5413728 147
.. ... ... ... ... ... ... ... ... ... ...
933 516590.SH 电动汽车 1.244 1.277 1.252 1.252 1.270 1380800 1748398 79
934 502048.SH 50LOF 1.224 1.238 1.235 1.214 1.218 3200 3908 5
935 515850.SH 证券龙头 1.519 1.538 1.523 1.520 1.523 11460000 17484157 688
936 515790.SH 光伏ETF 0.912 0.929 0.919 0.910 0.923 411566128 379094370 14939
937 516190.SH 文娱ETF 1.137 1.154 1.151 1.146 1.151 1031700 1186303 87
```

View file

@ -0,0 +1,156 @@
# ETF日线行情
**文档ID**: 127
**原始链接**: https://tushare.pro/document/2?doc_id=127
---
## ETF日线行情
接口:fund_daily描述:获取ETF行情每日收盘后成交数据,历史超过10年限量:单次最大2000行记录,可以根据ETF代码和日期循环获取历史,总量不限制积分:需要至少5000积分才可以调取,5000积分频次更高,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>基金代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody>
</table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价(元)</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价(元)</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价(元)</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价(元)</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨收盘价(元)</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌额(元)</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅(%)</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量(手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交额(千元)</td>
</tr>
</tbody>
</table>
接口示例
```
pro = ts.pro_api()
#获取”沪深300ETF华夏”ETF2025年以来的行情,并通过fields参数指定输出了部分字段
df = pro.fund_daily(ts_code='510330.SH', start_date='20250101', end_date='20250618', fields='trade_date,open,high,low,close,vol,amount')
```
数据示例
```
trade_date open high low close vol amount
0 20250618 4.008 4.024 3.996 4.017 382896.00 153574.446
1 20250617 4.015 4.022 4.000 4.014 440272.04 176617.125
2 20250616 4.000 4.018 3.996 4.015 423526.00 169788.251
3 20250613 4.023 4.028 3.992 4.004 1216787.53 487632.318
4 20250612 4.023 4.039 4.005 4.032 574727.00 231356.321
.. ... ... ... ... ... ... ...
104 20250108 3.971 3.992 3.908 3.963 3200416.00 1267465.456
105 20250107 3.939 3.974 3.929 3.973 2239739.00 885818.954
106 20250106 3.950 3.964 3.917 3.943 1583794.00 624004.760
107 20250103 4.002 4.013 3.944 3.963 2025111.00 805573.289
108 20250102 4.110 4.117 3.973 4.001 1768592.00 714820.885
```

View file

@ -0,0 +1,168 @@
# Hibor利率
**文档ID**: 153
**原始链接**: https://tushare.pro/document/2?doc_id=153
---
## Hibor利率
接口:hibor描述:Hibor利率限量:单次最大4000行数据,总量不限制,可通过设置开始和结束日期分段获取积分:用户积累120积分可以调取,具体请参阅积分获取办法
HIBOR (Hongkong InterBank Offered Rate),是香港银行同行业拆借利率。指香港货币市场上,银行与银行之间的一年期以下的短期资金借贷利率,从伦敦同业拆借利率(LIBOR)变化出来的。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (日期输入格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>on</td>
<td>float</td>
<td>Y</td>
<td>隔夜</td>
</tr>
<tr>
<td>1w</td>
<td>float</td>
<td>Y</td>
<td>1周</td>
</tr>
<tr>
<td>2w</td>
<td>float</td>
<td>Y</td>
<td>2周</td>
</tr>
<tr>
<td>1m</td>
<td>float</td>
<td>Y</td>
<td>1个月</td>
</tr>
<tr>
<td>2m</td>
<td>float</td>
<td>Y</td>
<td>2个月</td>
</tr>
<tr>
<td>3m</td>
<td>float</td>
<td>Y</td>
<td>3个月</td>
</tr>
<tr>
<td>6m</td>
<td>float</td>
<td>Y</td>
<td>6个月</td>
</tr>
<tr>
<td>12m</td>
<td>float</td>
<td>Y</td>
<td>12个月</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.hibor(start_date='20180101', end_date='20181130')
```
数据样例
```
date on 1w 2w 1m 2m 3m 6m \
0 20181130 1.52500 1.10125 1.08000 1.20286 1.83030 2.03786 2.32821
1 20181129 0.76143 0.95643 1.01036 1.12357 1.80493 2.01018 2.31643
2 20181128 0.66786 0.95607 0.99929 1.10964 1.77104 1.97643 2.30143
3 20181127 0.71357 0.95536 0.99786 1.09321 1.76321 1.98351 2.30374
4 20181126 0.68821 0.92821 0.99107 1.08214 1.75161 1.97742 2.29957
5 20181123 0.68571 0.84000 0.91036 1.08214 1.75304 1.97591 2.30088
6 20181122 0.47161 0.59750 0.76750 1.01214 1.73125 1.96500 2.29250
7 20181121 0.36893 0.56571 0.74429 0.98929 1.71071 1.96569 2.29286
8 20181120 0.38964 0.58214 0.75464 1.01107 1.70839 1.96571 2.28893
9 20181119 0.39672 0.59893 0.77464 1.04143 1.71143 1.96643 2.28643
10 20181116 0.44429 0.60321 0.75214 1.04429 1.71500 1.96750 2.28893
11 20181115 0.39179 0.63571 0.77857 1.04627 1.71722 1.97607 2.28697
12 20181114 0.34571 0.64026 0.78821 1.06393 1.72875 2.00000 2.29554
13 20181113 0.59232 0.82643 0.91643 1.09286 1.77786 2.06920 2.30982
14 20181112 0.53571 0.75419 0.83321 1.03536 1.75734 2.08286 2.29929
15 20181109 0.51571 0.75393 0.83321 1.03464 1.76018 2.08179 2.30283
16 20181108 0.60536 0.75293 0.85179 1.03357 1.75866 2.08107 2.29907
17 20181107 0.58071 0.72679 0.83107 1.04714 1.74804 2.08467 2.30446
18 20181106 0.48714 0.67750 0.78786 1.02536 1.72821 2.08071 2.30589
19 20181105 0.44929 0.68500 0.80214 1.04321 1.72500 2.08179 2.31941
20 20181102 0.45571 0.73542 0.87679 1.10536 1.73732 2.10018 2.33276
12m
0 2.65929
1 2.65500
2 2.65643
3 2.65571
4 2.65446
5 2.65375
6 2.64750
7 2.64618
8 2.63946
9 2.63960
10 2.64321
11 2.64286
12 2.64857
13 2.66286
14 2.65607
15 2.65857
16 2.65357
17 2.65596
18 2.65464
19 2.65857
20 2.67857
```

View file

@ -0,0 +1,162 @@
# IPO新股上市
**文档ID**: 123
**原始链接**: https://tushare.pro/document/2?doc_id=123
---
## IPO新股列表
接口:new_share描述:获取新股上市列表数据限量:单次最大2000条,总量不限制积分:用户需要至少120积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>上网发行开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>上网发行结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>sub_code</td>
<td>str</td>
<td>Y</td>
<td>申购代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>名称</td>
</tr>
<tr>
<td>ipo_date</td>
<td>str</td>
<td>Y</td>
<td>上网发行日期</td>
</tr>
<tr>
<td>issue_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>发行总量(万股)</td>
</tr>
<tr>
<td>market_amount</td>
<td>float</td>
<td>Y</td>
<td>上网发行总量(万股)</td>
</tr>
<tr>
<td>price</td>
<td>float</td>
<td>Y</td>
<td>发行价格</td>
</tr>
<tr>
<td>pe</td>
<td>float</td>
<td>Y</td>
<td>市盈率</td>
</tr>
<tr>
<td>limit_amount</td>
<td>float</td>
<td>Y</td>
<td>个人申购上限(万股)</td>
</tr>
<tr>
<td>funds</td>
<td>float</td>
<td>Y</td>
<td>募集资金(亿元)</td>
</tr>
<tr>
<td>ballot</td>
<td>float</td>
<td>Y</td>
<td>中签率</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.new_share(start_date='20180901', end_date='20181018')
```
数据示例
```
ts_code sub_code name ipo_date issue_date amount market_amount \
0 002939.SZ 002939 长城证券 20181017 None 31034.0 27931.0
1 002940.SZ 002940 昂利康 20181011 20181023 2250.0 2025.0
2 601162.SH 780162 天风证券 20181009 20181019 51800.0 46620.0
3 300694.SZ 300694 蠡湖股份 20180927 20181015 5383.0 4845.0
4 300760.SZ 300760 迈瑞医疗 20180927 20181016 12160.0 10944.0
5 300749.SZ 300749 顶固集创 20180913 20180925 2850.0 2565.0
6 002937.SZ 002937 兴瑞科技 20180912 20180926 4600.0 4140.0
7 601577.SH 780577 长沙银行 20180912 20180926 34216.0 30794.0
8 603583.SH 732583 捷昌驱动 20180911 20180921 3020.0 2718.0
9 002936.SZ 002936 郑州银行 20180907 20180919 60000.0 54000.0
10 300748.SZ 300748 金力永磁 20180906 20180921 4160.0 3744.0
11 603810.SH 732810 丰山集团 20180906 20180917 2000.0 2000.0
12 002938.SZ 002938 鹏鼎控股 20180905 20180918 23114.0 20803.0
price pe limit_amount funds ballot
0 6.31 22.98 9.30 19.582 0.16
1 23.07 22.99 0.90 5.191 0.03
2 1.79 22.86 15.50 0.000 0.25
3 9.89 22.98 2.15 5.324 0.04
4 48.80 22.99 3.60 59.341 0.08
5 12.22 22.99 1.10 3.483 0.03
6 9.94 22.99 1.80 4.572 0.04
7 7.99 6.97 10.20 27.338 0.17
8 29.17 22.99 1.20 8.809 0.03
9 4.59 6.50 18.00 27.540 0.25
10 5.39 22.98 1.20 2.242 0.05
11 25.43 20.39 2.00 5.086 0.02
12 16.07 22.99 6.90 37.145 0.12
```

View file

@ -0,0 +1,116 @@
# LPR贷款基础利率
**文档ID**: 151
**原始链接**: https://tushare.pro/document/2?doc_id=151
---
## LPR贷款基础利率
接口:shibor_lpr描述:LPR贷款基础利率限量:单次最大4000(相当于单次可提取18年历史),总量不限制,可通过设置开始和结束日期分段获取积分:用户积累120积分可以调取,具体请参阅积分获取办法
LPR介绍
贷款基础利率(Loan Prime Rate,简称LPR),是基于报价行自主报出的最优贷款利率计算并发布的贷款市场参考利率。目前,对社会公布1年期贷款基础利率。
LPR报价银行团现由10家商业银行组成。报价银行应符合财务硬约束条件和宏观审慎政策框架要求,系统重要性程度高、市场影响力大、综合实力强,已建立内部收益率曲线和内部转移定价机制,具有较强的自主定价能力,已制定本行贷款基础利率管理办法,以及有利于开展报价工作的其他条件。市场利率定价自律机制依据《贷款基础利率集中报价和发布规则》确定和调整报价行成员,监督和管理贷款基础利率运行,规范报价行与指定发布人行为。
全国银行间同业拆借中心受权贷款基础利率的报价计算和信息发布。每个交易日根据各报价行的报价,剔除最高、最低各1家报价,对其余报价进行加权平均计算后,得出贷款基础利率报价平均利率,并于11:30对外发布。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (日期输入格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>1y</td>
<td>float</td>
<td>Y</td>
<td>1年贷款利率</td>
</tr>
<tr>
<td>5y</td>
<td>float</td>
<td>Y</td>
<td>5年贷款利率</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.shibor_lpr(start_date='20180101', end_date='20181130', fields='date,1y')
```
数据样例
```
date 1y
0 20181130 4.31
1 20181129 4.31
2 20181128 4.31
3 20181127 4.31
4 20181126 4.31
5 20181123 4.31
6 20181122 4.31
7 20181121 4.31
8 20181120 4.31
9 20181119 4.31
10 20181116 4.31
11 20181115 4.31
12 20181114 4.31
13 20181113 4.31
14 20181112 4.31
15 20181109 4.31
16 20181108 4.31
17 20181107 4.31
18 20181106 4.31
19 20181105 4.31
20 20181102 4.31
```

View file

@ -0,0 +1,174 @@
# Libor利率
**文档ID**: 152
**原始链接**: https://tushare.pro/document/2?doc_id=152
---
## Libor拆借利率
接口:libor描述:Libor拆借利率限量:单次最大4000行数据,总量不限制,可通过设置开始和结束日期分段获取积分:用户积累120积分可以调取,具体请参阅积分获取办法
Libor(London Interbank Offered Rate ),即伦敦同业拆借利率,是指伦敦的第一流银行之间短期资金借贷的利率,是国际金融市场中大多数浮动利率的基础利率。作为银行从市场上筹集资金进行转贷的融资成本,贷款协议中议定的LIBOR通常是由几家指定的参考银行,在规定的时间(一般是伦敦时间上午11:00)报价的平均利率。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (日期输入格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>curr_type</td>
<td>str</td>
<td>N</td>
<td>货币代码 (USD美元 EUR欧元 JPY日元 GBP英镑 CHF瑞郎,默认是USD)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>curr_type</td>
<td>str</td>
<td>Y</td>
<td>货币</td>
</tr>
<tr>
<td>on</td>
<td>float</td>
<td>Y</td>
<td>隔夜</td>
</tr>
<tr>
<td>1w</td>
<td>float</td>
<td>Y</td>
<td>1周</td>
</tr>
<tr>
<td>1m</td>
<td>float</td>
<td>Y</td>
<td>1个月</td>
</tr>
<tr>
<td>2m</td>
<td>float</td>
<td>Y</td>
<td>2个月</td>
</tr>
<tr>
<td>3m</td>
<td>float</td>
<td>Y</td>
<td>3个月</td>
</tr>
<tr>
<td>6m</td>
<td>float</td>
<td>Y</td>
<td>6个月</td>
</tr>
<tr>
<td>12m</td>
<td>float</td>
<td>Y</td>
<td>12个月</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.libor(curr_type='USD', start_date='20180101', end_date='20181130')
```
数据样例
```
date curr_type on 1w 1m 2m 3m 6m \
0 20181130 USD 2.17750 2.22131 2.34694 2.51006 2.73613 2.89463
1 20181129 USD 2.18275 2.22881 2.34925 2.51125 2.73813 2.88519
2 20181128 USD 2.18250 2.22450 2.34463 2.49500 2.70663 2.88663
3 20181127 USD 2.17850 2.23494 2.34931 2.49900 2.70600 2.88444
4 20181126 USD 2.18300 2.21900 2.33675 2.49525 2.70681 2.89275
5 20181123 USD 2.17700 2.22188 2.32188 2.49538 2.69119 2.88625
6 20181122 USD NaN 2.22213 2.31488 2.48013 2.68925 2.88725
7 20181121 USD 2.18050 2.22100 2.31513 2.47313 2.67694 2.88588
8 20181120 USD 2.17288 2.21638 2.30550 2.45850 2.65313 2.86325
9 20181119 USD 2.18075 2.21725 2.30025 2.45769 2.64581 2.86575
10 20181116 USD 2.17538 2.21225 2.30088 2.45213 2.64450 2.86263
11 20181115 USD 2.17938 2.21125 2.30250 2.44913 2.64000 2.86019
12 20181114 USD 2.17575 2.20963 2.31038 2.44531 2.62900 2.86344
13 20181113 USD 2.17788 2.21613 2.30650 2.44413 2.61613 2.85500
14 20181112 USD NaN 2.21550 2.30663 2.44525 2.61413 2.85538
15 20181109 USD 2.17500 2.21913 2.31438 2.45513 2.61813 2.85800
16 20181108 USD 2.17988 2.21619 2.31844 2.45863 2.61463 2.85763
17 20181107 USD 2.17725 2.21588 2.31531 2.44550 2.60113 2.84350
18 20181106 USD 2.17663 2.21138 2.31688 2.42863 2.59125 2.84150
19 20181105 USD 2.17525 2.21425 2.31600 2.42950 2.58925 2.83575
20 20181102 USD 2.17463 2.21400 2.31788 2.42625 2.59238 2.82888
12m
0 3.12025
1 3.11869
2 3.13413
3 3.13075
4 3.12838
5 3.12075
6 3.10950
7 3.11038
8 3.09713
9 3.10738
10 3.12363
11 3.11838
12 3.12963
13 3.13206
14 3.13475
15 3.14413
16 3.14075
17 3.12513
18 3.11638
19 3.11688
20 3.10488
```

View file

@ -0,0 +1,118 @@
# ST股票列表
**文档ID**: 397
**原始链接**: https://tushare.pro/document/2?doc_id=397
---
## ST股票列表
接口:stock_st,可以通过数据工具调试和查看数据。描述:获取ST股票列表,可根据交易日期获取历史上每天的ST列表权限:3000积分起提示:每天上午9:20更新,单次请求最大返回1000行数据,可循环提取,本接口数据从20160101开始,太早历史无法补齐
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:YYYYMMDD下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始时间</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束时间</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>Y</td>
<td>类型</td>
</tr>
<tr>
<td>type_name</td>
<td>str</td>
<td>Y</td>
<td>类型名称</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取20250813日所有的ST股票
df = pro.stock_st(trade_date='20250813')
```
数据样例
```
ts_code name trade_date type type_name
0 300313.SZ *ST天山 20250813 ST 风险警示板
1 605081.SH *ST太和 20250813 ST 风险警示板
2 300391.SZ *ST长药 20250813 ST 风险警示板
3 300343.SZ ST联创 20250813 ST 风险警示板
4 300044.SZ ST赛为 20250813 ST 风险警示板
.. ... ... ... ... ...
170 300175.SZ ST朗源 20250813 ST 风险警示板
171 603721.SH *ST天择 20250813 ST 风险警示板
172 600289.SH ST信通 20250813 ST 风险警示板
173 000929.SZ *ST兰黄 20250813 ST 风险警示板
174 000638.SZ *ST万方 20250813 ST 风险警示板
```

View file

@ -0,0 +1,151 @@
# Shibor利率
**文档ID**: 149
**原始链接**: https://tushare.pro/document/2?doc_id=149
---
## Shibor利率数据
接口:shibor描述:shibor利率限量:单次最大2000,总量不限制,可通过设置开始和结束日期分段获取积分:用户积累120积分可以调取,具体请参阅积分获取办法
Shibor利率介绍
上海银行间同业拆放利率(Shanghai Interbank Offered Rate,简称Shibor),以位于上海的全国银行间同业拆借中心为技术平台计算、发布并命名,是由信用等级较高的银行组成报价团自主报出的人民币同业拆出利率计算确定的算术平均利率,是单利、无担保、批发性利率。目前,对社会公布的Shibor品种包括隔夜、1周、2周、1个月、3个月、6个月、9个月及1年。
Shibor报价银行团现由18家商业银行组成。报价银行是公开市场一级交易商或外汇市场做市商,在中国货币市场上人民币交易相对活跃、信息披露比较充分的银行。中国人民银行成立Shibor工作小组,依据《上海银行间同业拆放利率(Shibor)实施准则》确定和调整报价银行团成员、监督和管理Shibor运行、规范报价行与指定发布人行为。
全国银行间同业拆借中心受权Shibor的报价计算和信息发布。每个交易日根据各报价行的报价,剔除最高、最低各4家报价,对其余报价进行算术平均计算后,得出每一期限品种的Shibor,并于11:00对外发布。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (日期输入格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>on</td>
<td>float</td>
<td>Y</td>
<td>隔夜</td>
</tr>
<tr>
<td>1w</td>
<td>float</td>
<td>Y</td>
<td>1周</td>
</tr>
<tr>
<td>2w</td>
<td>float</td>
<td>Y</td>
<td>2周</td>
</tr>
<tr>
<td>1m</td>
<td>float</td>
<td>Y</td>
<td>1个月</td>
</tr>
<tr>
<td>3m</td>
<td>float</td>
<td>Y</td>
<td>3个月</td>
</tr>
<tr>
<td>6m</td>
<td>float</td>
<td>Y</td>
<td>6个月</td>
</tr>
<tr>
<td>9m</td>
<td>float</td>
<td>Y</td>
<td>9个月</td>
</tr>
<tr>
<td>1y</td>
<td>float</td>
<td>Y</td>
<td>1年</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.shibor(start_date='20180101', end_date='20181101')
```
数据样例
```
date on 1w 2w 1m 3m 6m 9m 1y
0 20181101 2.5470 2.6730 2.6910 2.6960 2.9760 3.2970 3.5040 3.5500
1 20181031 2.3700 2.7150 2.7300 2.6890 2.9630 3.2980 3.5040 3.5500
2 20181030 1.5660 2.5980 2.6400 2.6630 2.9570 3.2950 3.5010 3.5500
3 20181029 1.8520 2.6090 2.6510 2.6720 2.9580 3.2970 3.5020 3.5500
4 20181026 2.0670 2.6180 2.6500 2.6730 2.9520 3.2970 3.5020 3.5500
5 20181025 2.2150 2.6300 2.6510 2.6750 2.9480 3.2970 3.5050 3.5520
6 20181024 2.3930 2.6310 2.6530 2.6750 2.9240 3.2960 3.4980 3.5440
7 20181023 2.4510 2.6350 2.6530 2.6720 2.9030 3.2890 3.4880 3.5320
8 20181022 2.4750 2.6320 2.6500 2.6630 2.8710 3.2770 3.4710 3.5160
9 20181019 2.4450 2.6220 2.6480 2.6550 2.8420 3.2670 3.4560 3.5070
10 20181018 2.4270 2.6110 2.6370 2.6510 2.8320 3.2600 3.4530 3.5040
11 20181017 2.3530 2.6040 2.6320 2.6510 2.8180 3.2540 3.4500 3.5050
12 20181016 2.3730 2.6030 2.6330 2.6580 2.8000 3.2530 3.4500 3.5050
13 20181015 2.3770 2.6120 2.6370 2.6680 2.8010 3.2530 3.4510 3.5050
14 20181012 2.4390 2.6150 2.6440 2.6820 2.8000 3.2500 3.4530 3.5050
15 20181011 2.3600 2.6110 2.6500 2.6920 2.8010 3.2510 3.4550 3.5060
16 20181010 2.3980 2.6180 2.6730 2.7050 2.8100 3.2530 3.4590 3.5020
17 20181009 2.5020 2.6330 2.7030 2.7340 2.8160 3.2580 3.4640 3.5040
18 20181008 2.5360 2.6570 2.7660 2.7810 2.8360 3.2690 3.4760 3.5120
19 20180930 2.6530 2.7660 3.4730 2.8020 2.8470 3.2870 3.4890 3.5210
20 20180929 2.0730 2.7830 3.3100 2.8020 2.8460 3.2850 3.4890 3.5210
```

View file

@ -0,0 +1,226 @@
# Shibor报价数据
**文档ID**: 150
**原始链接**: https://tushare.pro/document/2?doc_id=150
---
## Shibor报价数据
接口:shibor_quote描述:Shibor报价数据限量:单次最大4000行数据,总量不限制,可通过设置开始和结束日期分段获取积分:用户积累120积分可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (日期输入格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>bank</td>
<td>str</td>
<td>N</td>
<td>银行名称 (中文名称,例如 农业银行)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>bank</td>
<td>str</td>
<td>Y</td>
<td>报价银行</td>
</tr>
<tr>
<td>on_b</td>
<td>float</td>
<td>Y</td>
<td>隔夜_Bid</td>
</tr>
<tr>
<td>on_a</td>
<td>float</td>
<td>Y</td>
<td>隔夜_Ask</td>
</tr>
<tr>
<td>1w_b</td>
<td>float</td>
<td>Y</td>
<td>1周_Bid</td>
</tr>
<tr>
<td>1w_a</td>
<td>float</td>
<td>Y</td>
<td>1周_Ask</td>
</tr>
<tr>
<td>2w_b</td>
<td>float</td>
<td>Y</td>
<td>2周_Bid</td>
</tr>
<tr>
<td>2w_a</td>
<td>float</td>
<td>Y</td>
<td>2周_Ask</td>
</tr>
<tr>
<td>1m_b</td>
<td>float</td>
<td>Y</td>
<td>1月_Bid</td>
</tr>
<tr>
<td>1m_a</td>
<td>float</td>
<td>Y</td>
<td>1月_Ask</td>
</tr>
<tr>
<td>3m_b</td>
<td>float</td>
<td>Y</td>
<td>3月_Bid</td>
</tr>
<tr>
<td>3m_a</td>
<td>float</td>
<td>Y</td>
<td>3月_Ask</td>
</tr>
<tr>
<td>6m_b</td>
<td>float</td>
<td>Y</td>
<td>6月_Bid</td>
</tr>
<tr>
<td>6m_a</td>
<td>float</td>
<td>Y</td>
<td>6月_Ask</td>
</tr>
<tr>
<td>9m_b</td>
<td>float</td>
<td>Y</td>
<td>9月_Bid</td>
</tr>
<tr>
<td>9m_a</td>
<td>float</td>
<td>Y</td>
<td>9月_Ask</td>
</tr>
<tr>
<td>1y_b</td>
<td>float</td>
<td>Y</td>
<td>1年_Bid</td>
</tr>
<tr>
<td>1y_a</td>
<td>float</td>
<td>Y</td>
<td>1年_Ask</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.shibor_quote(start_date='20180101', end_date='20181101')
```
数据样例
```
date bank on_b on_a 1w_b 1w_a 2w_b 2w_a 1m_b 1m_a \
0 20181101 民生银行 2.540 2.540 2.65 2.65 2.67 2.67 2.680 2.680
1 20181101 国开行 2.570 2.570 2.71 2.71 2.75 2.75 2.690 2.690
2 20181101 邮储银行 2.550 2.550 2.72 2.72 2.72 2.72 2.690 2.690
3 20181101 广发银行 2.560 2.560 2.66 2.66 2.68 2.68 2.720 2.720
4 20181101 华夏银行 2.550 2.550 2.72 2.72 2.73 2.73 2.690 2.690
5 20181101 汇丰中国 2.550 2.550 2.65 2.65 2.68 2.68 2.690 2.690
6 20181101 上海银行 2.560 2.560 2.70 2.70 2.73 2.73 2.690 2.690
7 20181101 北京银行 2.570 2.570 2.67 2.67 2.65 2.65 2.600 2.600
8 20181101 浦发银行 2.560 2.560 2.75 2.75 2.65 2.65 2.700 2.700
9 20181101 兴业银行 2.530 2.530 2.65 2.65 2.60 2.60 2.500 2.500
10 20181101 光大银行 2.540 2.540 2.65 2.65 2.70 2.70 2.720 2.720
11 20181101 中信银行 2.550 2.550 2.65 2.65 2.70 2.70 2.700 2.700
12 20181101 招商银行 2.540 2.540 2.67 2.67 2.65 2.65 2.700 2.700
13 20181101 交通银行 2.540 2.540 2.68 2.68 2.72 2.72 2.690 2.690
14 20181101 建设银行 2.530 2.530 2.67 2.67 2.68 2.68 2.720 2.720
15 20181101 中国银行 2.540 2.540 2.65 2.65 2.66 2.66 2.680 2.680
16 20181101 农业银行 2.550 2.550 2.70 2.70 2.75 2.75 2.760 2.760
17 20181101 工商银行 2.500 2.500 2.68 2.68 2.70 2.70 2.720 2.720
18 20181031 民生银行 2.310 2.310 2.72 2.72 2.73 2.73 2.730 2.730
19 20181031 国开行 2.370 2.370 2.75 2.75 2.76 2.76 2.690 2.690
20 20181031 邮储银行 2.350 2.350 2.73 2.73 2.72 2.72 2.670 2.670
3m_b 3m_a 6m_b 6m_a 9m_b 9m_a 1y_b 1y_a
0 2.960 2.960 3.290 3.290 3.510 3.510 3.550 3.550
1 2.970 2.970 3.320 3.320 3.530 3.530 3.570 3.570
2 2.960 2.960 3.300 3.300 3.500 3.500 3.550 3.550
3 3.000 3.000 3.250 3.250 3.500 3.500 3.550 3.550
4 2.970 2.970 3.300 3.300 3.510 3.510 3.550 3.550
5 2.970 2.970 3.300 3.300 3.500 3.500 3.550 3.550
6 2.960 2.960 3.300 3.300 3.510 3.510 3.550 3.550
7 3.000 3.000 3.400 3.400 3.550 3.550 3.600 3.600
8 2.960 2.960 3.300 3.300 3.500 3.500 3.550 3.550
9 2.950 2.950 3.100 3.100 3.400 3.400 3.500 3.500
10 3.000 3.000 3.300 3.300 3.500 3.500 3.550 3.550
11 3.000 3.000 3.300 3.300 3.550 3.550 3.550 3.550
12 3.100 3.100 3.300 3.300 3.550 3.550 3.550 3.550
13 2.970 2.970 3.300 3.300 3.510 3.510 3.560 3.560
14 3.000 3.000 3.260 3.260 3.500 3.500 3.550 3.550
15 2.940 2.940 3.280 3.280 3.480 3.480 3.520 3.520
16 3.000 3.000 3.300 3.300 3.500 3.500 3.550 3.550
17 2.880 2.880 3.240 3.240 3.420 3.420 3.470 3.470
18 2.970 2.970 3.300 3.300 3.500 3.500 3.550 3.550
19 2.960 2.960 3.320 3.320 3.520 3.520 3.560 3.560
20 2.960 2.960 3.300 3.300 3.500 3.500 3.550 3.550
```

View file

@ -0,0 +1,124 @@
# 上市公司公告
**文档ID**: 176
**原始链接**: https://tushare.pro/document/2?doc_id=176
---
## 上市公司全量公告
接口:anns_d描述:获取全量公告数据,提供pdf下载URL限量:单次最大2000条数,可以跟进日期循环获取全量权限:本接口为单独权限,请参考权限说明
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期(yyyymmdd格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>title</td>
<td>str</td>
<td>Y</td>
<td>标题</td>
</tr>
<tr>
<td>url</td>
<td>str</td>
<td>Y</td>
<td>URL,原文下载链接</td>
</tr>
<tr>
<td>rec_time</td>
<td>datetime</td>
<td>N</td>
<td>发布时间</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.anns_d(ann_date='20230621')
```
数据样例
```
ann_date ts_code name title
0 20230621 600590.SH 泰豪科技 第八届董事会第十五次会议决议公告
1 20230621 300504.SZ 天邑股份 天邑股份:关于回购注销部分限制性股票的公告
2 20230621 002815.SZ 崇达技术 崇达技术:中信建投证券股份有限公司关于崇达技术股份有限公司2022年限制性股票激励计划首次授...
3 20230621 600212.SH 绿能慧充 绿能慧充2022年年度股东大会会议资料
4 20230621 002508.SZ 老板电器 老板电器:关于向激励对象授予股票期权的公告
... ... ... ... ...
1995 20230620 600152.SH 维科技术 维科技术关于向2022年股票期权激励计划激励对象授予预留部分股票期权(第二批次)的公告
1996 20230620 301290.SZ 东星医疗 东星医疗:关于对深圳证券交易所关注函的回复公告
1997 20230620 600998.SH 九州通 九州通关于控股股东2022年非公开发行可交换公司债券(第二、三期)进入换股期的提示性公告
1998 20230620 300371.SZ 汇中股份 汇中股份:关于子公司完成工商变更的公告
1999 20230620 300061.SZ 旗天科技 旗天科技:关于为子公司提供担保的公告
[2000 rows x 4 columns]
```

View file

@ -0,0 +1,189 @@
# 上市公司基本信息
**文档ID**: 112
**原始链接**: https://tushare.pro/document/2?doc_id=112
---
## 上市公司基本信息
接口:stock_company,可以通过数据工具调试和查看数据。描述:获取上市公司基础信息,单次提取4500条,可以根据交易所分批提取积分:用户需要至少120积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所代码 ,SSE上交所 SZSE深交所 BSE北交所</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>com_name</td>
<td>str</td>
<td>Y</td>
<td>公司全称</td>
</tr>
<tr>
<td>com_id</td>
<td>str</td>
<td>Y</td>
<td>统一社会信用代码</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所代码</td>
</tr>
<tr>
<td>chairman</td>
<td>str</td>
<td>Y</td>
<td>法人代表</td>
</tr>
<tr>
<td>manager</td>
<td>str</td>
<td>Y</td>
<td>总经理</td>
</tr>
<tr>
<td>secretary</td>
<td>str</td>
<td>Y</td>
<td>董秘</td>
</tr>
<tr>
<td>reg_capital</td>
<td>float</td>
<td>Y</td>
<td>注册资本(万元)</td>
</tr>
<tr>
<td>setup_date</td>
<td>str</td>
<td>Y</td>
<td>注册日期</td>
</tr>
<tr>
<td>province</td>
<td>str</td>
<td>Y</td>
<td>所在省份</td>
</tr>
<tr>
<td>city</td>
<td>str</td>
<td>Y</td>
<td>所在城市</td>
</tr>
<tr>
<td>introduction</td>
<td>str</td>
<td>N</td>
<td>公司介绍</td>
</tr>
<tr>
<td>website</td>
<td>str</td>
<td>Y</td>
<td>公司主页</td>
</tr>
<tr>
<td>email</td>
<td>str</td>
<td>Y</td>
<td>电子邮件</td>
</tr>
<tr>
<td>office</td>
<td>str</td>
<td>N</td>
<td>办公室</td>
</tr>
<tr>
<td>employees</td>
<td>int</td>
<td>Y</td>
<td>员工人数</td>
</tr>
<tr>
<td>main_business</td>
<td>str</td>
<td>N</td>
<td>主要业务及产品</td>
</tr>
<tr>
<td>business_scope</td>
<td>str</td>
<td>N</td>
<td>经营范围</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
#或者
#pro = ts.pro_api('your token')
df = pro.stock_company(exchange='SZSE', fields='ts_code,chairman,manager,secretary,reg_capital,setup_date,province')
```
数据示例
```
ts_code chairman manager secretary reg_capital setup_date province \
0 000001.SZ 谢永林 胡跃飞 周强 1.717041e+06 19871222 广东
1 000002.SZ 郁亮 祝九胜 朱旭 1.103915e+06 19840530 广东
2 000003.SZ 马钟鸿 马钟鸿 安汪 3.334336e+04 19880208 广东
3 000004.SZ 李林琳 李林琳 徐文苏 8.397668e+03 19860505 广东
4 000005.SZ 丁芃 郑列列 罗晓春 1.058537e+05 19870730 广东
5 000006.SZ 赵宏伟 朱新宏 杜汛 1.349995e+05 19850525 广东
6 000007.SZ 智德宇 智德宇 陈伟彬 3.464480e+04 19830311 广东
7 000008.SZ 王志全 钟岩 王志刚 2.818330e+05 19891011 北京
8 000009.SZ 陈政立 陈政立 郭山清 2.149345e+05 19830706 广东
9 000010.SZ 曾嵘 李德友 金小刚 8.198547e+04 19881231 广东
10 000011.SZ 刘声向 王航军 范维平 5.959791e+04 19830117 广东
11 000012.SZ 陈琳 王健 杨昕宇 2.863277e+05 19840910 广东
12 000013.SZ 厉怒江 阮克竖 刘渝敏 3.033550e+04 19920114 广东
13 000014.SZ 陈勇 温毅 王凡 2.017052e+04 19870727 广东
14 000015.SZ 宿南南 马骧 蒋孝安 1.598761e+05 19880408 广东
15 000016.SZ 刘凤喜 周彬 吴勇军 2.407945e+05 19801001 广东
```

View file

@ -0,0 +1,175 @@
# 上市公司管理层
**文档ID**: 193
**原始链接**: https://tushare.pro/document/2?doc_id=193
---
## 上市公司管理层
接口:stk_managers描述:获取上市公司管理层积分:用户需要2000积分才可以调取,5000积分以上频次相对较高,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码,支持单个或多个股票输入</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>姓名</td>
</tr>
<tr>
<td>gender</td>
<td>str</td>
<td>Y</td>
<td>性别</td>
</tr>
<tr>
<td>lev</td>
<td>str</td>
<td>Y</td>
<td>岗位类别</td>
</tr>
<tr>
<td>title</td>
<td>str</td>
<td>Y</td>
<td>岗位</td>
</tr>
<tr>
<td>edu</td>
<td>str</td>
<td>Y</td>
<td>学历</td>
</tr>
<tr>
<td>national</td>
<td>str</td>
<td>Y</td>
<td>国籍</td>
</tr>
<tr>
<td>birthday</td>
<td>str</td>
<td>Y</td>
<td>出生年月</td>
</tr>
<tr>
<td>begin_date</td>
<td>str</td>
<td>Y</td>
<td>上任日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>离任日期</td>
</tr>
<tr>
<td>resume</td>
<td>str</td>
<td>N</td>
<td>个人简历</td>
</tr>
</tbody></table>
接口用例
```
pro = ts.pro_api()
#获取单个公司高管全部数据
df = pro.stk_managers(ts_code='000001.SZ')
#获取多个公司高管全部数据
df = pro.stk_managers(ts_code='000001.SZ,600000.SH')
```
数据样例
```
ts_code ann_date name gender ... national birthday begin_date end_date
0 000001.SZ 20190604 姚贵平 M ... 中国 1961 20180815 20190604
1 000001.SZ 20190604 姚贵平 M ... 中国 1961 20170629 20190604
2 000001.SZ 20190604 姚贵平 M ... 中国 1961 20180129 20190604
3 000001.SZ 20190309 吴鹏 M ... 中国 1965 20110817 20190309
4 000001.SZ 20190307 孙永桢 F ... 中国 1968 20181025 None
5 000001.SZ 20180816 杨志群 M ... 中国 1970 20180815 None
6 000001.SZ 20180816 郭世邦 M ... 中国 1965 20180815 None
7 000001.SZ 20180405 何之江 M ... 中国 1965 20170513 20180405
8 000001.SZ 20180203 项有志 M ... 中国 1964 20170913 None
9 000001.SZ 20180130 杨如生 M ... 中国 196802 20161107 None
10 000001.SZ 20180130 蔡方方 F ... 中国 1974 20161107 None
11 000001.SZ 20180130 郭田勇 M ... 中国 196808 20161107 None
12 000001.SZ 20180130 郭建 M ... 中国 1964 20161107 None
13 000001.SZ 20180130 杨如生 M ... 中国 196802 20161107 None
14 000001.SZ 20180130 杨如生 M ... 中国 196802 20161107 None
15 000001.SZ 20180130 姚波 M ... 中国 1971 20101227 None
16 000001.SZ 20180130 王春汉 M ... 中国 1951 20160811 None
17 000001.SZ 20180130 郭田勇 M ... 中国 196808 20160811 None
18 000001.SZ 20180130 郭田勇 M ... 中国 196808 20160811 None
19 000001.SZ 20180130 韩小京 M ... 中国 1955 20140121 None
20 000001.SZ 20180130 陈心颖 F ... 新加坡 1977 20140121 None
21 000001.SZ 20180130 蔡方方 F ... 中国 1974 20140121 None
22 000001.SZ 20180130 王松奇 M ... 中国 1952 20140121 None
23 000001.SZ 20180130 王春汉 M ... 中国 1951 20140121 None
24 000001.SZ 20180130 韩小京 M ... 中国 1955 20140121 None
```

View file

@ -0,0 +1,162 @@
# 上海黄金基础信息
**文档ID**: 284
**原始链接**: https://tushare.pro/document/2?doc_id=284
---
## 黄金现货基础信息
接口:sge_basic描述:获取上海黄金交易所现货合约基础信息限量:单次最大100条,当前现货合约数不足20个,可以一次提取全部,不需要循环提取积分:用户积5000积分可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>合约代码 (支持多个,逗号分隔,不输入为获取全部)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>品种代码</td>
</tr>
<tr>
<td>ts_name</td>
<td>str</td>
<td>Y</td>
<td>品种名称</td>
</tr>
<tr>
<td>trade_type</td>
<td>str</td>
<td>Y</td>
<td>交易类型</td>
</tr>
<tr>
<td>t_unit</td>
<td>float</td>
<td>Y</td>
<td>交易单位(克/手)</td>
</tr>
<tr>
<td>p_unit</td>
<td>float</td>
<td>Y</td>
<td>报价单位</td>
</tr>
<tr>
<td>min_change</td>
<td>float</td>
<td>Y</td>
<td>最小变动价位</td>
</tr>
<tr>
<td>price_limit</td>
<td>float</td>
<td>Y</td>
<td>每日价格最大波动限制</td>
</tr>
<tr>
<td>min_vol</td>
<td>int</td>
<td>Y</td>
<td>最小单笔报价量(手)</td>
</tr>
<tr>
<td>max_vol</td>
<td>int</td>
<td>Y</td>
<td>最大单笔报价量(手)</td>
</tr>
<tr>
<td>trade_mode</td>
<td>str</td>
<td>Y</td>
<td>交易期限</td>
</tr>
<tr>
<td>margin_rate</td>
<td>float</td>
<td>Y</td>
<td>保证金比例</td>
</tr>
<tr>
<td>liq_rate</td>
<td>float</td>
<td>Y</td>
<td>违约金比例(%)</td>
</tr>
<tr>
<td>trade_time</td>
<td>str</td>
<td>Y</td>
<td>交易时间</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.sge_basic()
```
或者
```
df = pro.sge_basic(ts_code='Au99.95')
```
数据样例
```
ts_code ts_name min_vol max_vol trade_time
0 Au99.95 黄金9995 1 500 白天:9:00至15:30,夜间:19:50 至次日 02:30
1 Au99.99 黄金9999 1 50000 白天:9:00至15:30,夜间:19:50 至次日 02:30
2 Au(T+D) 黄金延期 1 200 上午:9:00 至 11:30,下午 ...
3 Pt99.95 铂金9995 1 1000 白天:9:00至15:30,夜间:19:50 至次日 02:30
4 Ag(T+D) 白银延期 1 2000 上午:9:00 至 11:30,下午:...
5 Au100g 100克金条 1 1000 白天:9:00至15:30,夜间:19:50 至次日 02:30
6 Au(T+N1) 黄金T+N1 1 2000 上午:9:00 至 11:30,下午:13:30 至 ...
7 Au(T+N2) 黄金T+N2 1 2000 上午:9:00 至 11:30,下午:13:30 至 ...
8 mAu(T+D) 迷你黄金延期 1 2000 上午:9:00 至 11:30,下午:13:30 至 ...
9 iAu99.99 国际板黄金9999 1 50000 白天:9:00至15:30,夜间:19:50 至次日 02:30
10 PGC30g 熊猫金币30克 1 1000 白天:9:00至15:30,夜间:20:00至次日02:30
11 NYAuTN06 沪纽金AuTN06 1 2000 白天:9:00至15:30,夜间:19:50 至次日 02:30
12 NYAuTN12 沪纽金AuTN12 1 2000 白天:9:00至15:30,夜间:19:50 至次日 02:30
```

View file

@ -0,0 +1,179 @@
# 上海黄金现货日行情
**文档ID**: 285
**原始链接**: https://tushare.pro/document/2?doc_id=285
---
## 现货黄金日行情
接口:sge_daily描述:获取上海黄金交易所现货合约日线行情限量:单次最大2000,可循环或者分页提取积分:用户积2000积分可调取,具体请参阅积分获取办法
注:数据由当日9:00至15:30的交易和前一日夜盘的20:00至2:30数据构成,成交量和成交金额为双向计量。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>合约代码,可通过<a href="https://tushare.pro/document/2?doc_id=284">基础信息</a>获得</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>现货合约代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘点(元/克)</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘点(元/克)</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高点(元/克)</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低点(元/克)</td>
</tr>
<tr>
<td>price_avg</td>
<td>float</td>
<td>Y</td>
<td>加权平均价(元/克)</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌点位(元/克)</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量(千克)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额(元)</td>
</tr>
<tr>
<td>oi</td>
<td>float</td>
<td>Y</td>
<td>市场持仓</td>
</tr>
<tr>
<td>settle_vol</td>
<td>float</td>
<td>Y</td>
<td>交收量</td>
</tr>
<tr>
<td>settle_dire</td>
<td>str</td>
<td>Y</td>
<td>持仓方向</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
#获取单日统计数据
df = pro.sge_daily(trade_date='20220311')
#获取某合约指定日期,指定字段输出的数据
df = pro.sge_daily(ts_code='', start_date='20220301', end_date='20220311', fields='ts_code,close,open,vol')
```
数据示例
```
ts_code trade_date close open high low vol settle_dire
0 Au99.95 20220311 403.3000 403.2000 403.3000 403.2000 24.00 None
1 Au99.99 20220311 403.6000 405.9700 408.0000 402.8000 13667.66 None
2 Au(T+D) 20220311 403.2200 405.0100 407.7000 402.5300 27196.00 空支付给多
3 Pt99.95 20220311 227.0400 228.0000 228.0000 226.3000 384.00 None
4 Ag(T+D) 20220311 5.1340 5.1820 5.1850 5.1090 2428664.00 空支付给多
5 Au100g 20220311 403.0300 405.4500 406.0000 402.3600 29.40 None
6 Au(T+N1) 20220311 405.7000 408.0000 408.0000 402.2000 21.80 None
7 Au(T+N2) 20220311 408.1000 411.0000 414.5000 408.0500 91.20 None
8 mAu(T+D) 20220311 403.4400 406.6200 407.7500 402.7500 4367.80 空支付给多
9 iAu99.99 20220311 405.3400 406.3000 408.0000 405.0000 2.06 None
10 PGC30g 20220311 409.3200 410.0000 410.0000 408.9000 0.36 None
11 NYAuTN06 20220311 404.5500 407.8500 408.8000 404.0000 15.80 None
12 NYAuTN12 20220311 409.0500 413.8500 413.8500 408.9000 214.40 None
```

View file

@ -0,0 +1,135 @@
# 上证e互动问答
**文档ID**: 366
**原始链接**: https://tushare.pro/document/2?doc_id=366
---
## 上证E互动
接口:irm_qa_sh,历史数据开始于2023年6月。描述:获取上交所e互动董秘问答文本数据。上证e互动是由上海证券交易所建立、上海证券市场所有参与主体无偿使用的沟通平台,旨在引导和促进上市公司、投资者等各市场参与主体之间的信息沟通,构建集中、便捷的互动渠道。本接口数据记录了以上沟通问答的文本数据。限量:单次请求最大返回3000行数据,可根据股票代码,日期等参数循环提取全部数据权限:用户后120积分可以试用,正式权限为10000积分,或申请单独开权限,请参考权限说明
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>pub_date</td>
<td>str</td>
<td>N</td>
<td>发布开始日期(格式:2025-06-03 16:43:03)</td>
</tr>
<tr>
<td>pub_date</td>
<td>str</td>
<td>N</td>
<td>发布结束日期(格式:2025-06-03 18:43:23)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>公司名称</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>q</td>
<td>str</td>
<td>Y</td>
<td>问题</td>
</tr>
<tr>
<td>a</td>
<td>str</td>
<td>Y</td>
<td>回复</td>
</tr>
<tr>
<td>pub_time</td>
<td>datetime</td>
<td>Y</td>
<td>回复时间</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
#获取2025年2月12日上证e互动的问答文本
df = pro.irm_qa_sh(ann_date='20250212')
```
数据样例
```
ts_code name q a
0 601121.SH 宝地矿业 股价利多因素主要看基本面,关键是业绩,利空因素就是减持和低价增发,目前宝地的业绩难以抵消股东... 尊敬的投资者,您好!衷心感谢您对宝地矿业的关注与鞭策。公司将加快推进重点项目建设,做好生产经...
1 600615.SH 丰华股份 您好!我是一名城市居民,长期关注空气污染问题。想请问贵公司在日常经营过程中,是否采取了有效的... 尊敬的投资者您好!公司不属于重点排污单位。公司高度重视环境保护工作,采取有效措施不断提高环境...
2 600615.SH 丰华股份 公司镁合金等材料在机器人行业应用前景远大。公司是不是可以考虑加大在机器人方面的战略布局? 尊敬的投资者您好!镁合金材料在轻量化方面应用领域宽泛,目前公司的镁合金产品主要应用于交通工具...
3 601121.SH 宝地矿业 如果宝地矿业董事会看好自己公司的投资价值,为什么宁可委托申万宏源证券投资理财,也不用自有资金... 尊敬的投资者,您好。感谢您对宝地矿业的关注与建议。公司始终秉持稳健的财务管理和资金使用原则,...
4 600615.SH 丰华股份 尊敬的董秘您好,据报道人形机器人所使用除peek材料之外,最多的就是镁合金相关材质,请问公司... 尊敬的投资者您好!目前公司没有人形机器人项目储备,感谢您的关注!
.. ... ... ... ...
95 600423.SH 柳化股份 领导您好!我是一名心系环境的普通居民,长期对空气污染问题保持高度关注。请问贵公司在生产过程中... 投资者,您好!公司十分重视环境问题,积极推动节能减排理念,三废排放严格按照国家标准执行,具体...
96 600190.SH ST锦港 公司董事会,你公司2024之前问题很大,涉刑事等众多问题,公司必须发布或配合彻查业绩巨亏问题... 尊敬的投资者,您好!公司对相关事项进展将及时履行信息披露义务,请以公司对外披露的公告为准,感...
97 688120.SH 华海清科 你公司在国内行业的竞争优势有哪些?是否将这些优势转化为了公司的发展成果? 尊敬的投资者您好!公司是一家拥有核心自主知识产权的高端半导体装备制造商,产品主要应用于芯片制...
98 688120.SH 华海清科 你公司被看好或认可的地方在哪里? 尊敬的投资者您好!公司是一家拥有核心自主知识产权的高端半导体装备制造商,产品主要应用于芯片制...
99 600630.SH 龙头股份 请问公司接入微信小店已有一段时间,请问微信小店的销售情况如何? 尊敬的投资者,您好!公司旗下三枪品牌目前已入驻微信第三方平台有赞商城。您可在微信小程序搜索“...
```

View file

@ -0,0 +1,251 @@
# 业绩快报
**文档ID**: 46
**原始链接**: https://tushare.pro/document/2?doc_id=46
---
## 业绩快报
接口:express描述:获取上市公司业绩快报权限:用户需要至少2000积分才可以调取,具体请参阅积分获取办法提示:当前接口只能按单只股票获取其历史数据,如果需要获取某一季度全部上市公司数据,请使用express_vip接口(参数一致),需积攒5000积分。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>revenue</td>
<td>float</td>
<td>营业收入(元)</td>
</tr>
<tr>
<td>operate_profit</td>
<td>float</td>
<td>营业利润(元)</td>
</tr>
<tr>
<td>total_profit</td>
<td>float</td>
<td>利润总额(元)</td>
</tr>
<tr>
<td>n_income</td>
<td>float</td>
<td>净利润(元)</td>
</tr>
<tr>
<td>total_assets</td>
<td>float</td>
<td>总资产(元)</td>
</tr>
<tr>
<td>total_hldr_eqy_exc_min_int</td>
<td>float</td>
<td>股东权益合计(不含少数股东权益)(元)</td>
</tr>
<tr>
<td>diluted_eps</td>
<td>float</td>
<td>每股收益(摊薄)(元)</td>
</tr>
<tr>
<td>diluted_roe</td>
<td>float</td>
<td>净资产收益率(摊薄)(%)</td>
</tr>
<tr>
<td>yoy_net_profit</td>
<td>float</td>
<td>去年同期修正后净利润</td>
</tr>
<tr>
<td>bps</td>
<td>float</td>
<td>每股净资产</td>
</tr>
<tr>
<td>yoy_sales</td>
<td>float</td>
<td>同比增长率:营业收入</td>
</tr>
<tr>
<td>yoy_op</td>
<td>float</td>
<td>同比增长率:营业利润</td>
</tr>
<tr>
<td>yoy_tp</td>
<td>float</td>
<td>同比增长率:利润总额</td>
</tr>
<tr>
<td>yoy_dedu_np</td>
<td>float</td>
<td>同比增长率:归属母公司股东的净利润</td>
</tr>
<tr>
<td>yoy_eps</td>
<td>float</td>
<td>同比增长率:基本每股收益</td>
</tr>
<tr>
<td>yoy_roe</td>
<td>float</td>
<td>同比增减:加权平均净资产收益率</td>
</tr>
<tr>
<td>growth_assets</td>
<td>float</td>
<td>比年初增长率:总资产</td>
</tr>
<tr>
<td>yoy_equity</td>
<td>float</td>
<td>比年初增长率:归属母公司的股东权益</td>
</tr>
<tr>
<td>growth_bps</td>
<td>float</td>
<td>比年初增长率:归属于母公司股东的每股净资产</td>
</tr>
<tr>
<td>or_last_year</td>
<td>float</td>
<td>去年同期营业收入</td>
</tr>
<tr>
<td>op_last_year</td>
<td>float</td>
<td>去年同期营业利润</td>
</tr>
<tr>
<td>tp_last_year</td>
<td>float</td>
<td>去年同期利润总额</td>
</tr>
<tr>
<td>np_last_year</td>
<td>float</td>
<td>去年同期净利润</td>
</tr>
<tr>
<td>eps_last_year</td>
<td>float</td>
<td>去年同期每股收益</td>
</tr>
<tr>
<td>open_net_assets</td>
<td>float</td>
<td>期初净资产</td>
</tr>
<tr>
<td>open_bps</td>
<td>float</td>
<td>期初每股净资产</td>
</tr>
<tr>
<td>perf_summary</td>
<td>str</td>
<td>业绩简要说明</td>
</tr>
<tr>
<td>is_audit</td>
<td>int</td>
<td>是否审计: 1是 0否</td>
</tr>
<tr>
<td>remark</td>
<td>str</td>
<td>备注</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
pro.express(ts_code='600000.SH', start_date='20180101', end_date='20180701', fields='ts_code,ann_date,end_date,revenue,operate_profit,total_profit,n_income,total_assets')
```
获取某一季度全部股票数据
```
df = pro.express_vip(period='20181231',fields='ts_code,ann_date,end_date,revenue,operate_profit,total_profit,n_income,total_assets')
```
数据样例
```
ts_code ann_date end_date revenue operate_profit total_profit n_income total_assets \
0 603535.SH 20180411 20180331 2.064659e+08 3.345047e+07 3.340047e+07 2.672643e+07 1.682111e+09
1 603535.SH 20180208 20171231 1.034262e+09 1.323373e+08 1.440493e+08 1.188325e+08 1.710466e+09
2 603535.SH 20171016 20170930 7.064117e+08 9.509520e+07 9.931530e+07 8.202480e+07 1.672986e+09
```

View file

@ -0,0 +1,175 @@
# 业绩预告
**文档ID**: 45
**原始链接**: https://tushare.pro/document/2?doc_id=45
---
## 业绩预告
接口:forecast,可以通过数据工具调试和查看数据。描述:获取业绩预告数据权限:用户需要至少2000积分才可以调取,具体请参阅积分获取办法提示:当前接口只能按单只股票获取其历史数据,如果需要获取某一季度全部上市公司数据,请使用forecast_vip接口(参数一致),需积攒5000积分。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码(二选一)</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期 (二选一)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报)</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>N</td>
<td>预告类型(预增/预减/扭亏/首亏/续亏/续盈/略增/略减)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>业绩预告类型(预增/预减/扭亏/首亏/续亏/续盈/略增/略减)</td>
</tr>
<tr>
<td>p_change_min</td>
<td>float</td>
<td>预告净利润变动幅度下限(%)</td>
</tr>
<tr>
<td>p_change_max</td>
<td>float</td>
<td>预告净利润变动幅度上限(%)</td>
</tr>
<tr>
<td>net_profit_min</td>
<td>float</td>
<td>预告净利润下限(万元)</td>
</tr>
<tr>
<td>net_profit_max</td>
<td>float</td>
<td>预告净利润上限(万元)</td>
</tr>
<tr>
<td>last_parent_net</td>
<td>float</td>
<td>上年同期归属母公司净利润</td>
</tr>
<tr>
<td>first_ann_date</td>
<td>str</td>
<td>首次公告日</td>
</tr>
<tr>
<td>summary</td>
<td>str</td>
<td>业绩预告摘要</td>
</tr>
<tr>
<td>change_reason</td>
<td>str</td>
<td>业绩变动原因</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
pro.forecast(ann_date='20190131', fields='ts_code,ann_date,end_date,type,p_change_min,p_change_max,net_profit_min')
```
获取某一季度全部股票数据
```
df = pro.forecast_vip(period='20181231',fields='ts_code,ann_date,end_date,type,p_change_min,p_change_max,net_profit_min')
```
数据样例
```
ts_code ann_date end_date type p_change_min p_change_max \
0 000005.SZ 20190131 20181231 预增 618.5600 945.1800
1 000825.SZ 20190131 20181231 略增 3.8500 12.5100
2 000566.SZ 20190131 20181231 预增 50.0000 100.0000
3 000932.SZ 20190131 20181231 预增 60.8864 68.1664
4 000557.SZ 20190131 20181231 预增 66.6800 66.6800
5 600127.SH 20190131 20181231 首亏 -601.5517 -510.3604
6 600159.SH 20190131 20181231 预增 315.0000 315.0000
7 600963.SH 20190131 20181231 略增 2.3800 11.5800
8 002336.SZ 20190131 20181231 续亏 33.1367 47.9952
9 601608.SH 20190131 20181231 预增 228.5900 274.5700
10 600531.SH 20190131 20181231 预减 -61.8800 -54.3200
11 300200.SZ 20190131 20181231 预增 82.4000 112.4000
12 300441.SZ 20190131 20181231 略减 -20.5100 -0.6400
13 300157.SZ 20190131 20181231 扭亏 107.3969 108.5176
14 300052.SZ 20190131 20181231 略减 -30.0000 0.0000
15 002328.SZ 20190131 20181231 略增 0.0000 20.0000
16 300420.SZ 20190131 20181231 预增 61.1500 90.8000
17 300109.SZ 20190131 20181231 续盈 -13.8100 7.7300
18 300479.SZ 20190131 20181231 略减 -35.8400 -6.6700
19 000402.SZ 20190131 20181231 略增 1.0000 10.0000
20 002626.SZ 20190131 20181231 略增 37.1200 47.6600
```

View file

@ -0,0 +1,141 @@
# 东方财富App热榜
**文档ID**: 321
**原始链接**: https://tushare.pro/document/2?doc_id=321
---
## 东方财富热板
接口:dc_hot描述:获取东方财富App热榜数据,包括A股市场、ETF基金、港股市场、美股市场等等,每日盘中提取4次,收盘后4次,最晚22点提取一次。限量:单次最大2000条,可根据日期等参数循环获取全部数据积分:用户积8000积分可调取使用,积分获取办法请参阅积分获取办法注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系东方财富解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>market</td>
<td>str</td>
<td>N</td>
<td>类型(A股市场、ETF基金、港股市场、美股市场)</td>
</tr>
<tr>
<td>hot_type</td>
<td>str</td>
<td>N</td>
<td>热点类型(人气榜、飙升榜)</td>
</tr>
<tr>
<td>is_new</td>
<td>str</td>
<td>N</td>
<td>是否最新(默认Y,如果为N则为盘中和盘后阶段采集,具体时间可参考rank_time字段,状态N每小时更新一次,状态Y更新时间为22:30)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>data_type</td>
<td>str</td>
<td>Y</td>
<td>数据类型</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>ts_name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>rank</td>
<td>int</td>
<td>Y</td>
<td>排行或者热度</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅%</td>
</tr>
<tr>
<td>current_price</td>
<td>float</td>
<td>Y</td>
<td>当前价</td>
</tr>
<tr>
<td>rank_time</td>
<td>str</td>
<td>Y</td>
<td>排行榜获取时间</td>
</tr>
</tbody></table>
接口示例
```
#获取查询月份券商金股
df = pro.dc_hot(trade_date='20240415', market='A股市场',hot_type='人气榜', fields='ts_code,ts_name,rank')
```
数据示例
```
ts_code ts_name rank
0 601099.SH 太平洋 1
1 601995.SH 中金公司 2
2 002235.SZ 安妮股份 3
3 601136.SH 首创证券 4
4 600127.SH 金健米业 5
.. ... ... ...
95 300675.SZ 建科院 96
96 601900.SH 南方传媒 97
97 600280.SH 中央商场 98
98 300898.SZ 熊猫乳品 99
99 600519.SH 贵州茅台 100
```
数据来源

View file

@ -0,0 +1,104 @@
# 东方财富概念成分
**文档ID**: 363
**原始链接**: https://tushare.pro/document/2?doc_id=363
---
## 东方财富板块成分
接口:dc_member描述:获取东方财富板块每日成分数据,可以根据概念板块代码和交易日期,获取历史成分限量:单次最大获取5000条数据,可以通过日期和代码循环获取权限:用户积累6000积分可调取,具体请参阅积分获取办法注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系东方财富解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>板块指数代码</td>
</tr>
<tr>
<td>con_code</td>
<td>str</td>
<td>N</td>
<td>成分股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>概念代码</td>
</tr>
<tr>
<td>con_code</td>
<td>str</td>
<td>Y</td>
<td>成分代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>成分股名称</td>
</tr>
</tbody></table>
接口示例
```
#获取东方财富2025年1月2日的人形机器人概念板块成分列表
df = pro.dc_member(trade_date='20250102', ts_code='BK1184.DC')
```
数据示例
```
trade_date ts_code con_code name
0 20250102 BK1184.DC 002117.SZ 东港股份
1 20250102 BK1184.DC 603662.SH 柯力传感
2 20250102 BK1184.DC 688165.SH 埃夫特-U
3 20250102 BK1184.DC 300660.SZ 江苏雷利
4 20250102 BK1184.DC 873593.BJ 鼎智科技
.. ... ... ... ...
59 20250102 BK1184.DC 002139.SZ 拓邦股份
60 20250102 BK1184.DC 301236.SZ 软通动力
61 20250102 BK1184.DC 601727.SH 上海电气
62 20250102 BK1184.DC 300432.SZ 富临精工
63 20250102 BK1184.DC 300843.SZ 胜蓝股份
```

View file

@ -0,0 +1,160 @@
# 东方财富概念板块
**文档ID**: 362
**原始链接**: https://tushare.pro/document/2?doc_id=362
---
## 东方财富概念板块
接口:dc_index描述:获取东方财富每个交易日的概念板块数据,支持按日期查询限量:单次最大可获取5000条数据,历史数据可根据日期循环获取权限:用户积累6000积分可调取,具体请参阅积分获取办法
注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系东方财富解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>指数代码(支持多个代码同时输入,用逗号分隔)</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>N</td>
<td>板块名称(例如:人形机器人)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>概念代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>概念名称</td>
</tr>
<tr>
<td>leading</td>
<td>str</td>
<td>Y</td>
<td>领涨股票名称</td>
</tr>
<tr>
<td>leading_code</td>
<td>str</td>
<td>Y</td>
<td>领涨股票代码</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>leading_pct</td>
<td>float</td>
<td>Y</td>
<td>领涨股票涨跌幅</td>
</tr>
<tr>
<td>total_mv</td>
<td>float</td>
<td>Y</td>
<td>总市值(万元)</td>
</tr>
<tr>
<td>turnover_rate</td>
<td>float</td>
<td>Y</td>
<td>换手率</td>
</tr>
<tr>
<td>up_num</td>
<td>int</td>
<td>Y</td>
<td>上涨家数</td>
</tr>
<tr>
<td>down_num</td>
<td>int</td>
<td>Y</td>
<td>下降家数</td>
</tr>
</tbody></table>
接口示例
```
#获取东方财富2025年1月3日的概念板块列表
df = pro.dc_index(trade_date='20250103', fields='ts_code,name,turnover_rate,up_num,down_num')
```
数据示例
```
ts_code name turnover_rate up_num down_num
0 BK1186.DC 首发经济 8.3700 4 31
1 BK1185.DC 冰雪经济 4.0800 2 32
2 BK1184.DC 人形机器人 4.0800 2 62
3 BK1183.DC 谷子经济 4.6300 2 55
4 BK1182.DC 智谱AI 5.4000 0 33
.. ... ... ... ... ...
453 BK0498.DC AB股 1.7300 4 67
454 BK0494.DC 节能环保 2.1600 32 378
455 BK0493.DC 新能源 1.4800 19 184
456 BK0492.DC 煤化工 1.7000 16 56
457 BK0490.DC 军工 2.5200 32 465
```

View file

@ -0,0 +1,164 @@
# 东财概念和行业指数行情
**文档ID**: 382
**原始链接**: https://tushare.pro/document/2?doc_id=382
---
## 东财概念板块行情
接口:dc_daily描述:获取东财概念板块、行业指数板块、地域板块行情数据,历史数据开始于2020年限量:单次最大2000条数据,可根据日期参数循环获取权限:用户积累6000积分可调取,具体请参阅积分获取办法注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系东方财富解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>板块代码(格式:xxxxx.DC)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:YYYYMMDD下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>idx_type</td>
<td>str</td>
<td>N</td>
<td>板块类型: 概念板块、行业板块、地域板块</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>板块代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘点位</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘点位</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高点位</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低点位</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌点位</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交额</td>
</tr>
<tr>
<td>swing</td>
<td>float</td>
<td>Y</td>
<td>振幅</td>
</tr>
<tr>
<td>turnover_rate</td>
<td>float</td>
<td>Y</td>
<td>换手率</td>
</tr>
</tbody></table>
接口示例
```
#获取东方财富2025年5月13日概念板块行情
df = pro.dc_daily(trade_date='20250513')
```
数据示例
```
ts_code trade_date close open high low pct_change
0 BK1063.DC 20250513 792.5200 793.5200 795.0400 786.9000 0.8700
1 BK1051.DC 20250513 12408.8600 12510.2500 12573.2800 12350.8900 4.3700
2 BK0816.DC 20250513 65.8600 66.6700 67.0200 65.4500 3.7700
3 BK0547.DC 20250513 12810.7600 12745.7200 12823.3500 12691.3900 0.6000
4 BK1082.DC 20250513 1306.9800 1337.2300 1342.8900 1302.9700 -1.3900
.. ... ... ... ... ... ... ...
430 BK0915.DC 20250513 1136.7400 1159.1800 1162.3600 1133.9400 -1.0200
431 BK1084.DC 20250513 1481.1500 1514.2300 1517.7200 1476.3200 -0.6100
432 BK0957.DC 20250513 1277.3800 1295.2900 1303.0000 1275.1900 -0.3500
433 BK1156.DC 20250513 1350.4700 1356.8500 1372.2800 1344.9400 0.0100
434 BK0881.DC 20250513 1156.1600 1181.2600 1184.1800 1154.0800 -0.5700
```

View file

@ -0,0 +1,204 @@
# 中信行业成分
**文档ID**: 373
**原始链接**: https://tushare.pro/document/2?doc_id=373
---
## 中信行业成分
接口:ci_index_member描述:按三级分类提取中信行业成分,可提供某个分类的所有成分,也可按股票代码提取所属分类,参数灵活限量:单次最大5000行,总量不限制权限:用户需5000积分可调取,积分获取方法请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>l1_code</td>
<td>str</td>
<td>N</td>
<td>一级行业代码</td>
</tr>
<tr>
<td>l2_code</td>
<td>str</td>
<td>N</td>
<td>二级行业代码</td>
</tr>
<tr>
<td>l3_code</td>
<td>str</td>
<td>N</td>
<td>三级行业代码</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>is_new</td>
<td>str</td>
<td>N</td>
<td>是否最新(默认为“Y是”)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>l1_code</td>
<td>str</td>
<td>Y</td>
<td>一级行业代码</td>
</tr>
<tr>
<td>l1_name</td>
<td>str</td>
<td>Y</td>
<td>一级行业名称</td>
</tr>
<tr>
<td>l2_code</td>
<td>str</td>
<td>Y</td>
<td>二级行业代码</td>
</tr>
<tr>
<td>l2_name</td>
<td>str</td>
<td>Y</td>
<td>二级行业名称</td>
</tr>
<tr>
<td>l3_code</td>
<td>str</td>
<td>Y</td>
<td>三级行业代码</td>
</tr>
<tr>
<td>l3_name</td>
<td>str</td>
<td>Y</td>
<td>三级行业名称</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>成分股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>成分股票名称</td>
</tr>
<tr>
<td>in_date</td>
<td>str</td>
<td>Y</td>
<td>纳入日期</td>
</tr>
<tr>
<td>out_date</td>
<td>str</td>
<td>Y</td>
<td>剔除日期</td>
</tr>
<tr>
<td>is_new</td>
<td>str</td>
<td>Y</td>
<td>是否最新Y是N否</td>
</tr>
</tbody></table>
接口示例
```
#获取二级分类元器件的成份股
df = pro.ci_index_member(l2_code='CI005835.CI', fields='l2_code,l1_name,ts_code,name')
#获取000001.SZ所属行业
df = pro.ci_index_member(ts_code='000001.SZ')
```
数据示例
```
l2_code l1_name ts_code name
0 CI005835.CI 电子 301628.SZ 强达电路
1 CI005835.CI 电子 920060.BJ 万源通
2 CI005835.CI 电子 301251.SZ 威尔高
3 CI005835.CI 电子 002552.SZ 宝鼎科技
4 CI005835.CI 电子 301566.SZ 达利凯普
5 CI005835.CI 电子 688519.SH 南亚新材
6 CI005835.CI 电子 603920.SH 世运电路
7 CI005835.CI 电子 603936.SH 博敏电子
8 CI005835.CI 电子 603989.SH 艾华集团
9 CI005835.CI 电子 688020.SH 方邦股份
10 CI005835.CI 电子 300852.SZ 四会富仕
11 CI005835.CI 电子 688655.SH 迅捷兴
12 CI005835.CI 电子 688183.SH 生益电子
13 CI005835.CI 电子 301132.SZ 满坤科技
14 CI005835.CI 电子 001389.SZ 广合科技
15 CI005835.CI 电子 002288.SZ *ST超华(退市)
16 CI005835.CI 电子 600563.SH 法拉电子
17 CI005835.CI 电子 603186.SH 华正新材
18 CI005835.CI 电子 603228.SH 景旺电子
19 CI005835.CI 电子 603328.SH 依顿电子
20 CI005835.CI 电子 000636.SZ 风华高科
21 CI005835.CI 电子 000823.SZ 超声电子
22 CI005835.CI 电子 002134.SZ 天津普林
23 CI005835.CI 电子 002138.SZ 顺络电子
24 CI005835.CI 电子 002199.SZ *ST东晶
25 CI005835.CI 电子 002436.SZ 兴森科技
26 CI005835.CI 电子 002463.SZ 沪电股份
27 CI005835.CI 电子 002484.SZ 江海股份
28 CI005835.CI 电子 002579.SZ 中京电子
29 CI005835.CI 电子 002618.SZ 丹邦退(退市)
30 CI005835.CI 电子 002636.SZ 金安国纪
31 CI005835.CI 电子 300814.SZ 中富电路
32 CI005835.CI 电子 300964.SZ 本川智能
33 CI005835.CI 电子 002815.SZ 崇达技术
34 CI005835.CI 电子 002859.SZ 洁美科技
35 CI005835.CI 电子 002913.SZ 奥士康
36 CI005835.CI 电子 002916.SZ 深南电路
37 CI005835.CI 电子 301366.SZ 一博科技
38 CI005835.CI 电子 300319.SZ 麦捷科技
39 CI005835.CI 电子 300408.SZ 三环集团
40 CI005835.CI 电子 300476.SZ 胜宏科技
41 CI005835.CI 电子 688630.SH 芯碁微装
42 CI005835.CI 电子 300975.SZ 商络电子
43 CI005835.CI 电子 837821.BJ 则成电子
44 CI005835.CI 电子 871981.BJ 晶赛科技
45 CI005835.CI 电子 300657.SZ 弘信电子
46 CI005835.CI 电子 301282.SZ 金禄电子
47 CI005835.CI 电子 300739.SZ 明阳电路
48 CI005835.CI 电子 600183.SH 生益科技
49 CI005835.CI 电子 600237.SH 铜峰电子
50 CI005835.CI 电子 603386.SH 骏亚科技
51 CI005835.CI 电子 605258.SH 协和电子
52 CI005835.CI 电子 300903.SZ 科翔股份
53 CI005835.CI 电子 605058.SH 澳弘电子
54 CI005835.CI 电子 301041.SZ 金百泽
```

View file

@ -0,0 +1,154 @@
# 中信行业指数日行情
**文档ID**: 308
**原始链接**: https://tushare.pro/document/2?doc_id=308
---
## 中信行业指数行情
接口:ci_daily描述:获取中信行业指数日线行情限量:单次最大4000条,可循环提取积分:5000积分可调取,可通过指数代码和日期参数循环获取所有数据
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>行业代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>指数代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘点位</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低点位</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高点位</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘点位</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨日收盘点位</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌点位</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量(万股)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交额(万元)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api('your token')
df = pro.ci_daily(trade_date='20230705', fields='ts_code,trade_date,open,low,high,close')
```
数据示例
```
ts_code trade_date open low high close
0 CI005001.CI 20230705 2757.5662 2736.8198 2764.1863 2754.2617
1 CI005002.CI 20230705 3006.7166 3000.1382 3039.3916 3029.7837
2 CI005003.CI 20230705 6443.6250 6431.1250 6597.5933 6588.1401
3 CI005004.CI 20230705 2675.3940 2672.7278 2693.6438 2676.9941
4 CI005005.CI 20230705 1575.1489 1571.6997 1597.4792 1593.6205
.. ... ... ... ... ... ...
435 CI005920.CI 20230705 6585.6924 6521.1846 6599.1216 6529.9458
436 CI005921.CI 20230705 2759.9133 2753.9324 2781.3979 2757.9863
437 CI005922.CI 20230705 5690.3843 5645.3955 5690.4165 5652.8184
438 CI005923.CI 20230705 5855.1333 5808.8325 5855.1470 5816.7471
439 CI005924.CI 20230705 5782.8662 5737.0601 5782.8984 5744.5962
[440 rows x 6 columns]
```

View file

@ -0,0 +1,134 @@
# 中央结算系统持股明细
**文档ID**: 274
**原始链接**: https://tushare.pro/document/2?doc_id=274
---
## 中央结算系统持股明细
接口:ccass_hold_detail描述:获取中央结算系统机构席位持股明细,数据覆盖全历史,根据交易所披露时间,当日数据在下一交易日早上9点前完成限量:单次最大返回6000条数据,可以循环或分页提取积分:用户积8000积分可调取,每分钟可以请求300次
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码 (e.g. 605009.SH)</td>
</tr>
<tr>
<td>hk_code</td>
<td>str</td>
<td>N</td>
<td>港交所代码 (e.g. 95009)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代号</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>col_participant_id</td>
<td>str</td>
<td>Y</td>
<td>参与者编号</td>
</tr>
<tr>
<td>col_participant_name</td>
<td>str</td>
<td>Y</td>
<td>机构名称</td>
</tr>
<tr>
<td>col_shareholding</td>
<td>str</td>
<td>Y</td>
<td>持股量(股)</td>
</tr>
<tr>
<td>col_shareholding_percent</td>
<td>str</td>
<td>Y</td>
<td>占已发行股份/权证/单位百分比(%)</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.ccass_hold_detail(ts_code='00960.HK', trade_date='20211101', fields='trade_date,ts_code,col_participant_id,col_participant_name,col_shareholding')
```
数据样例
```
trade_date ts_code col_participant_id col_participant_name col_shareholding
0 20211101 00960.HK B01777 大和资本市场香港有限公司 3000
1 20211101 00960.HK B01977 中财证券有限公司 3000
2 20211101 00960.HK B02068 勤丰证券有限公司 3000
3 20211101 00960.HK B01413 京华山一国际(香港)有限公司 2500
4 20211101 00960.HK B02120 利弗莫尔证券有限公司 2500
.. ... ... ... ... ...
164 20211101 00960.HK B01459 奕丰证券(香港)有限公司 3000
165 20211101 00960.HK B01508 西证(香港)证券经纪有限公司 3000
166 20211101 00960.HK B01511 达利证券有限公司 3000
167 20211101 00960.HK B01657 日盛嘉富证券国际有限公司 3000
168 20211101 00960.HK B01712 华生证券有限公司 3000
```

View file

@ -0,0 +1,129 @@
# 中央结算系统持股统计
**文档ID**: 295
**原始链接**: https://tushare.pro/document/2?doc_id=295
---
## 中央结算系统持股汇总
接口:ccass_hold描述:获取中央结算系统持股汇总数据,覆盖全部历史数据,根据交易所披露时间,当日数据在下一交易日早上9点前完成入库限量:单次最大5000条数据,可循环或分页提供全部积分:用户120积分可以试用看数据,5000积分每分钟可以请求300次,8000积分以上可以请求500次每分钟,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码 (e.g. 605009.SH)</td>
</tr>
<tr>
<td>hk_code</td>
<td>str</td>
<td>N</td>
<td>港交所代码 (e.g. 95009)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代号</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>shareholding</td>
<td>str</td>
<td>Y</td>
<td>于中央结算系统的持股量(股)<br/>Shareholding in CCASS</td>
</tr>
<tr>
<td>hold_nums</td>
<td>str</td>
<td>Y</td>
<td>参与者数目(个)</td>
</tr>
<tr>
<td>hold_ratio</td>
<td>str</td>
<td>Y</td>
<td>占于上交所上市及交易的A股总数的百分比(%)<br/>% of the total number of A shares listed and traded on the SSE</td>
</tr>
</tbody></table>
Note:
- The total number of A shares listed and traded on the SSE of the relevant SSE-listed company used for calculating the percentage of shareholding may not have taken into account any change in connection with or as a result of any corporate actions of the relevant company and hence, may not be up-to-date. The percentage of shareholding is for reference only.
- The total number of A shares listed and traded on the SSE of the relevant SSE-listed company used for calculating the percentage of shareholding may not be equal to the actual total number of issued shares of that company.
接口用法
```
pro = ts.pro_api()
df = pro.ccass_hold(ts_code='00960.HK')
```
数据样例
```
trade_date ts_code name shareholding hold_nums hold_ratio
0 20220519 00960.HK 龍湖集團 4576163843 182 75.30
1 20220518 00960.HK 龍湖集團 4576043843 182 75.30
2 20220517 00960.HK 龍湖集團 4575955343 180 75.30
3 20220516 00960.HK 龍湖集團 4575905343 179 75.30
4 20220513 00960.HK 龍湖集團 4575905343 181 75.30
```

View file

@ -0,0 +1,133 @@
# 主营业务构成
**文档ID**: 81
**原始链接**: https://tushare.pro/document/2?doc_id=81
---
## 主营业务构成
接口:fina_mainbz描述:获得上市公司主营业务构成,分地区和产品两种方式权限:用户需要至少2000积分才可以调取,具体请参阅积分获取办法,单次最大提取100行,总量不限制,可循环获取。提示:当前接口只能按单只股票获取其历史数据,如果需要获取某一季度全部上市公司数据,请使用fina_mainbz_vip接口(参数一致),需积攒5000积分。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(每个季度最后一天的日期,比如20171231表示年报)</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>N</td>
<td>类型:P按产品 D按地区 I按行业(请输入大写字母P或者D)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>报告期开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>报告期结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS代码</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>bz_item</td>
<td>str</td>
<td>主营业务来源</td>
</tr>
<tr>
<td>bz_sales</td>
<td>float</td>
<td>主营业务收入(元)</td>
</tr>
<tr>
<td>bz_profit</td>
<td>float</td>
<td>主营业务利润(元)</td>
</tr>
<tr>
<td>bz_cost</td>
<td>float</td>
<td>主营业务成本(元)</td>
</tr>
<tr>
<td>curr_type</td>
<td>str</td>
<td>货币代码</td>
</tr>
<tr>
<td>update_flag</td>
<td>str</td>
<td>是否更新</td>
</tr>
</tbody></table>
代码示例
```
pro = ts.pro_api()
df = pro.fina_mainbz(ts_code='000627.SZ', type='P')
```
获取某一季度全部股票数据
```
df = pro.fina_mainbz_vip(period='20181231', type='P' ,fields='ts_code,end_date,bz_item,bz_sales')
```
数据样例
```
ts_code end_date bz_item bz_sales bz_profit bz_cost curr_type
0 000627.SZ 20171231 其他产品 1.847507e+08 None None CNY
1 000627.SZ 20171231 其他主营业务 1.847507e+08 None None CNY
2 000627.SZ 20171231 聚丙烯 6.629111e+07 None None CNY
3 000627.SZ 20171231 原料药产品 2.685909e+08 None None CNY
4 000627.SZ 20171231 保险业务 5.288595e+10 None None CNY
```

View file

@ -0,0 +1,169 @@
# 交易日历
**文档ID**: 137
**原始链接**: https://tushare.pro/document/2?doc_id=137
---
## 交易日历
接口:trade_cal描述:获取各大期货交易所交易日历数据积分:需2000积分才可以提取数据
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所 SHFE 上期所 DCE 大商所 CFFEX中金所 CZCE郑商所 INE上海国际能源交易所</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>is_open</td>
<td>int</td>
<td>N</td>
<td>是否交易 0休市 1交易</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所 同参数部分描述</td>
</tr>
<tr>
<td>cal_date</td>
<td>str</td>
<td>Y</td>
<td>日历日期</td>
</tr>
<tr>
<td>is_open</td>
<td>int</td>
<td>Y</td>
<td>是否交易 0休市 1交易</td>
</tr>
<tr>
<td>pretrade_date</td>
<td>str</td>
<td>N</td>
<td>上一个交易日</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api('your token')
df = pro.trade_cal(exchange='DCE', start_date='20180101', end_date='20181231')
```
或者
```
df = pro.query('trade_cal', exchange='DCE', start_date='20180101', end_date='20181231')
```
数据样例
```
exchange cal_date is_open
0 DCE 20180101 0
1 DCE 20180102 1
2 DCE 20180103 1
3 DCE 20180104 1
4 DCE 20180105 1
5 DCE 20180106 0
6 DCE 20180107 0
7 DCE 20180108 1
8 DCE 20180109 1
9 DCE 20180110 1
10 DCE 20180111 1
11 DCE 20180112 1
12 DCE 20180113 0
13 DCE 20180114 0
14 DCE 20180115 1
15 DCE 20180116 1
16 DCE 20180117 1
17 DCE 20180118 1
18 DCE 20180119 1
19 DCE 20180120 0
20 DCE 20180121 0
21 DCE 20180122 1
22 DCE 20180123 1
23 DCE 20180124 1
24 DCE 20180125 1
25 DCE 20180126 1
26 DCE 20180127 0
27 DCE 20180128 0
28 DCE 20180129 1
29 DCE 20180130 1
.. ... ... ...
335 DCE 20181202 0
336 DCE 20181203 1
337 DCE 20181204 1
338 DCE 20181205 1
339 DCE 20181206 1
340 DCE 20181207 1
341 DCE 20181208 0
342 DCE 20181209 0
343 DCE 20181210 1
344 DCE 20181211 1
345 DCE 20181212 1
346 DCE 20181213 1
347 DCE 20181214 1
348 DCE 20181215 0
349 DCE 20181216 0
350 DCE 20181217 1
351 DCE 20181218 1
352 DCE 20181219 1
353 DCE 20181220 1
354 DCE 20181221 1
355 DCE 20181222 0
356 DCE 20181223 0
357 DCE 20181224 1
358 DCE 20181225 1
359 DCE 20181226 1
360 DCE 20181227 1
361 DCE 20181228 1
362 DCE 20181229 0
363 DCE 20181230 0
364 DCE 20181231 1
```

View file

@ -0,0 +1,205 @@
# 仓单日报
**文档ID**: 140
**原始链接**: https://tushare.pro/document/2?doc_id=140
---
## 仓单日报
接口:fut_wsr描述:获取仓单日报数据,了解各仓库/厂库的仓单变化限量:单次最大1000,总量不限制积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>symbol</td>
<td>str</td>
<td>N</td>
<td>产品代码</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所代码</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>symbol</td>
<td>str</td>
<td>Y</td>
<td>产品代码</td>
</tr>
<tr>
<td>fut_name</td>
<td>str</td>
<td>Y</td>
<td>产品名称</td>
</tr>
<tr>
<td>warehouse</td>
<td>str</td>
<td>Y</td>
<td>仓库名称</td>
</tr>
<tr>
<td>wh_id</td>
<td>str</td>
<td>N</td>
<td>仓库编号</td>
</tr>
<tr>
<td>pre_vol</td>
<td>int</td>
<td>Y</td>
<td>昨日仓单量</td>
</tr>
<tr>
<td>vol</td>
<td>int</td>
<td>Y</td>
<td>今日仓单量</td>
</tr>
<tr>
<td>vol_chg</td>
<td>int</td>
<td>Y</td>
<td>增减量</td>
</tr>
<tr>
<td>area</td>
<td>str</td>
<td>N</td>
<td>地区</td>
</tr>
<tr>
<td>year</td>
<td>str</td>
<td>N</td>
<td>年度</td>
</tr>
<tr>
<td>grade</td>
<td>str</td>
<td>N</td>
<td>等级</td>
</tr>
<tr>
<td>brand</td>
<td>str</td>
<td>N</td>
<td>品牌</td>
</tr>
<tr>
<td>place</td>
<td>str</td>
<td>N</td>
<td>产地</td>
</tr>
<tr>
<td>pd</td>
<td>int</td>
<td>N</td>
<td>升贴水</td>
</tr>
<tr>
<td>is_ct</td>
<td>str</td>
<td>N</td>
<td>是否折算仓单</td>
</tr>
<tr>
<td>unit</td>
<td>str</td>
<td>Y</td>
<td>单位</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>交易所</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api('your token')
df = pro.fut_wsr(trade_date='20181113', symbol='ZN')
```
数据示例
```
trade_date symbol fut_name warehouse pre_vol vol vol_chg unit
0 20181113 ZN 锌 上海裕强 4960 4960 0 吨
1 20181113 ZN 锌 上港物流 702 702 0 吨
2 20181113 ZN 锌 上港物流苏州 0 0 0 吨
3 20181113 ZN 锌 中储吴淞 0 0 0 吨
4 20181113 ZN 锌 中储大场 0 0 0 吨
5 20181113 ZN 锌 中储晟世 0 0 0 吨
6 20181113 ZN 锌 中金圣源 428 353 -75 吨
7 20181113 ZN 锌 全胜物流 2882 2882 0 吨
8 20181113 ZN 锌 南储仓储 25 25 0 吨
9 20181113 ZN 锌 同盛松江 0 0 0 吨
10 20181113 ZN 锌 国储837处 0 0 0 吨
11 20181113 ZN 锌 国储天威 0 0 0 吨
12 20181113 ZN 锌 国能物流常州 200 200 0 吨
13 20181113 ZN 锌 外运华东张华浜 0 0 0 吨
14 20181113 ZN 锌 宁波九龙仓 0 0 0 吨
15 20181113 ZN 锌 广储830三水西 0 0 0 吨
16 20181113 ZN 锌 康运萧山 0 0 0 吨
17 20181113 ZN 锌 无锡国联 0 0 0 吨
18 20181113 ZN 锌 期晟公司 449 226 -223 吨
19 20181113 ZN 锌 浙江康运 25 25 0 吨
20 20181113 ZN 锌 百金汇物流 0 0 0 吨
21 20181113 ZN 锌 裕强闵行 0 0 0 吨
```

View file

@ -0,0 +1,198 @@
# 债券回购日行情
**文档ID**: 256
**原始链接**: https://tushare.pro/document/2?doc_id=256
---
## 债券回购日行情
接口:repo_daily描述:债券回购日行情限量:单次最大2000条,可多次提取,总量不限制权限:用户需要累积2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>repo_maturity</td>
<td>str</td>
<td>Y</td>
<td>期限品种</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>前收盘(%)</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价(%)</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价(%)</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价(%)</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价(%)</td>
</tr>
<tr>
<td>weight</td>
<td>float</td>
<td>Y</td>
<td>加权价(%)</td>
</tr>
<tr>
<td>weight_r</td>
<td>float</td>
<td>Y</td>
<td>加权价(利率债)(%)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额(万元)</td>
</tr>
<tr>
<td>num</td>
<td>int</td>
<td>Y</td>
<td>成交笔数(笔)</td>
</tr>
</tbody></table>
接口使用
```
pro = ts.pro_api()
#获取2020年8月4日债券回购日行情
df = pro.repo_daily(trade_date='20200804')
```
数据样例
```
ts_code trade_date repo_maturity weight amount
0 131800.SZ 20200804 R-003 2.02150000 42783.000000
1 131801.SZ 20200804 R-007 2.23240000 618050.300000
2 131802.SZ 20200804 R-014 2.24820000 59506.300000
3 131803.SZ 20200804 R-028 2.35080000 21210.700000
4 131805.SZ 20200804 R-091 2.35550000 2566.000000
5 131806.SZ 20200804 R-182 2.10840000 113.200000
6 131809.SZ 20200804 R-004 2.06990000 24218.900000
7 131810.SZ 20200804 R-001 2.03600000 10748048.000000
8 131811.SZ 20200804 R-002 2.01270000 39459.200000
9 131981.SZ 20200804 RR-001 6.70000000 1000.000000
10 131982.SZ 20200804 RR-007 6.05000000 22800.000000
11 131983.SZ 20200804 RR-014 5.82000000 18500.000000
12 131985.SZ 20200804 RR-1M 7.00000000 4900.000000
13 204001.SH 20200804 GC001 2.10000000 85393260.000000
14 204002.SH 20200804 GC002 2.09200000 488300.000000
15 204003.SH 20200804 GC003 2.11900000 1260240.000000
16 204004.SH 20200804 GC004 2.16500000 352040.000000
17 204007.SH 20200804 GC007 2.21200000 13110650.000000
18 204014.SH 20200804 GC014 2.25900000 2318820.000000
19 204028.SH 20200804 GC028 2.32100000 1204850.000000
20 204091.SH 20200804 GC091 2.41500000 16330.000000
21 204182.SH 20200804 GC182 2.25800000 80.000000
22 206001.SH 20200804 R001 4.00300000 66518.000000
23 206007.SH 20200804 R007 4.36600000 530473.000000
24 206014.SH 20200804 R014 5.16900000 344245.000000
25 206021.SH 20200804 R021 5.97600000 17976.000000
26 206030.SH 20200804 R1M 5.33200000 56671.000000
27 206090.SH 20200804 R3M 7.59900000 9285.000000
28 207007.SH 20200804 TPR007 2.29900000 37500.000000
29 DR001.IB 20200804 DR001 1.90740000 196463895.000000
30 DR007.IB 20200804 DR007 2.11440000 8751142.000000
31 DR014.IB 20200804 DR014 1.99320000 2810816.000000
32 DR021.IB 20200804 DR021 2.08610000 1800794.000000
33 DR1M.IB 20200804 DR1M 2.02160000 239369.000000
34 DR3M.IB 20200804 DR3M 2.58500000 49956.000000
35 DR6M.IB 20200804 DR6M 2.60000000 10000.000000
36 OR001.IB 20200804 OR001 1.91850000 2677840.000000
37 OR007.IB 20200804 OR007 2.05950000 358750.000000
38 OR014.IB 20200804 OR014 2.41020000 129650.000000
39 OR021.IB 20200804 OR021 1.76630000 42000.000000
40 OR1M.IB 20200804 OR1M 2.36910000 34000.000000
41 R001.IB 20200804 R001 1.96000000 350750823.000000
42 R007.IB 20200804 R007 2.17850000 42502804.000000
43 R014.IB 20200804 R014 2.24390000 8123663.000000
44 R021.IB 20200804 R021 1.97400000 6072093.000000
45 R1M.IB 20200804 R1M 2.44950000 1163185.000000
46 R2M.IB 20200804 R2M 3.91140000 37170.000000
47 R3M.IB 20200804 R3M 2.92950000 88436.000000
48 R4M.IB 20200804 R4M 6.50000000 1750.000000
49 R6M.IB 20200804 R6M 2.60000000 10000.000000
```

View file

@ -0,0 +1,129 @@
# 做市借券交易汇总(停)
**文档ID**: 334
**原始链接**: https://tushare.pro/document/2?doc_id=334
---
## 做市借券交易汇总
接口:slb_len_mm描述:做市借券交易汇总限量:单次最大可以提取5000行数据,可循环获取所有历史积分:2000积分每分钟请求200次,5000积分500次请求
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期(YYYYMMDD)</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>ope_inv</td>
<td>float</td>
<td>Y</td>
<td>期初余量(万股)</td>
</tr>
<tr>
<td>lent_qnt</td>
<td>float</td>
<td>Y</td>
<td>融出数量(万股)</td>
</tr>
<tr>
<td>cls_inv</td>
<td>float</td>
<td>Y</td>
<td>期末余量(万股)</td>
</tr>
<tr>
<td>end_bal</td>
<td>float</td>
<td>Y</td>
<td>期末余额(万元)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.slb_len_mm(trade_date='20240620')
```
数据示例
```
trade_date ts_code name ope_inv lent_qnt cls_inv end_bal
0 20240620 688002.SH 睿创微纳 18.49 None 18.49 558.21
1 20240620 688005.SH 容百科技 12.24 None 12.24 309.06
2 20240620 688006.SH 杭可科技 6.92 None 6.92 129.89
3 20240620 688007.SH 光峰科技 9.66 None 9.66 167.99
4 20240620 688008.SH 澜起科技 38.13 None 38.13 2138.33
.. ... ... ... ... ... ... ...
126 20240620 688789.SH 宏华数科 1.49 None 1.49 155.14
127 20240620 688798.SH XD艾为电 3.41 None 3.41 200.54
128 20240620 688819.SH 天能股份 15.77 None 15.77 395.51
129 20240620 688981.SH 中芯国际 57.08 None 57.08 2785.50
130 20240620 689009.SH 九号公司 12.84 None 12.84 535.81
```

View file

@ -0,0 +1,118 @@
# 全国电影剧本备案数据
**文档ID**: 156
**原始链接**: https://tushare.pro/document/2?doc_id=156
---
## 全国电影剧本备案数据
接口:film_record描述:获取全国电影剧本备案的公示数据限量:单次最大500,总量不限制数据权限:用户需要至少120积分才可以调取,积分越多调取频次越高,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公布日期 (至少输入一个参数,格式:YYYYMMDD,日期不连续,定期公布)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>rec_no</td>
<td>str</td>
<td>Y</td>
<td>备案号</td>
</tr>
<tr>
<td>film_name</td>
<td>str</td>
<td>Y</td>
<td>影片名称</td>
</tr>
<tr>
<td>rec_org</td>
<td>str</td>
<td>Y</td>
<td>备案单位</td>
</tr>
<tr>
<td>script_writer</td>
<td>str</td>
<td>Y</td>
<td>编剧</td>
</tr>
<tr>
<td>rec_result</td>
<td>str</td>
<td>Y</td>
<td>备案结果</td>
</tr>
<tr>
<td>rec_area</td>
<td>str</td>
<td>Y</td>
<td>备案地(备案时间)</td>
</tr>
<tr>
<td>classified</td>
<td>str</td>
<td>Y</td>
<td>影片分类</td>
</tr>
<tr>
<td>date_range</td>
<td>str</td>
<td>Y</td>
<td>备案日期区间</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>备案结果发布时间</td>
</tr>
</tbody></table>
接口使用
```
pro = ts.pro_api()
#或者
#pro = ts.pro_api('your token')
df = pro.film_record(start_date='20181014', end_date='20181214')
```
数据示例

View file

@ -0,0 +1,227 @@
# 全国电视剧备案公示数据
**文档ID**: 180
**原始链接**: https://tushare.pro/document/2?doc_id=180
---
## 全国拍摄制作电视剧备案公示数据
接口:teleplay_record描述:获取2009年以来全国拍摄制作电视剧备案公示数据限量:单次最大1000,总量不限制数据权限:用户需要至少积分600才可以调取,积分越多调取频次越高,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>report_date</td>
<td>str</td>
<td>N</td>
<td>备案月份(YYYYMM)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>备案开始月份(YYYYMM)</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>备案结束月份(YYYYMM)</td>
</tr>
<tr>
<td>org</td>
<td>str</td>
<td>N</td>
<td>备案机构</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>N</td>
<td>电视剧名称</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>电视剧名称</td>
</tr>
<tr>
<td>classify</td>
<td>str</td>
<td>Y</td>
<td>题材</td>
</tr>
<tr>
<td>types</td>
<td>str</td>
<td>Y</td>
<td>体裁</td>
</tr>
<tr>
<td>org</td>
<td>str</td>
<td>Y</td>
<td>报备机构</td>
</tr>
<tr>
<td>report_date</td>
<td>str</td>
<td>Y</td>
<td>报备时间</td>
</tr>
<tr>
<td>license_key</td>
<td>str</td>
<td>Y</td>
<td>许可证号</td>
</tr>
<tr>
<td>episodes</td>
<td>str</td>
<td>Y</td>
<td>集数</td>
</tr>
<tr>
<td>shooting_date</td>
<td>str</td>
<td>Y</td>
<td>拍摄时间</td>
</tr>
<tr>
<td>prod_cycle</td>
<td>str</td>
<td>Y</td>
<td>制作周期</td>
</tr>
<tr>
<td>content</td>
<td>str</td>
<td>Y</td>
<td>内容提要</td>
</tr>
<tr>
<td>pro_opi</td>
<td>str</td>
<td>Y</td>
<td>省级管理部门备案意见</td>
</tr>
<tr>
<td>dept_opi</td>
<td>str</td>
<td>Y</td>
<td>相关部门意见</td>
</tr>
<tr>
<td>remarks</td>
<td>str</td>
<td>Y</td>
<td>备注</td>
</tr>
</tbody></table>
接口使用
```
pro = ts.pro_api()
#按备案月份查询
df = pro.teleplay_record(report_date='201905')
df = pro.teleplay_record(start_date='201905', end_date='201906')
#按备案机构查询
df = pro.teleplay_record(org='上海新文化传媒集团股份有限公司')
#按电视剧名称查询
df = pro.teleplay_record(name='三体')
```
数据样例
```
name classify types org report_date license_key \
0 新大头儿子和小头爸爸Ⅳ 当代青少 喜剧 怡光国际经济文化集团有限公司 201905 甲第260号
1 两岸青年 当代都市 一般 九洲音像出版公司 201905 甲第045号
2 温暖如冰 当代都市 一般 北京雅泽文化发展有限公司 201905 (京)字第7270号
3 从开始到现在 当代都市 一般 北京好故事影业有限公司 201905 (京)字第13150号
4 黑咖啡也可以很甜 当代都市 一般 北京版映科技有限公司 201905 (京)字第8580号
5 社工服务社 当代都市 一般 北京天沐文化传媒有限公司 201905 (京)字第07874号
6 出水牡丹 当代都市 一般 北京天星亿源影视文化股份有限公司 201905 (京)字第1113号
7 了不起的女孩 当代都市 一般 北京爱奇艺科技有限公司 201905 (京)字第01938号
8 年轻的朋友来相会 当代都市 一般 北京主题传奇文化传媒有限公司 201905 (京)字第6101号
9 京杭大运河 近代革命 一般 北京东方视辉影视传媒有限公司 201905 (京)字第9703号
10 航天梦 当代其它 一般 北京亿铭方略文化传媒有限公司 201905 (京)字第13069号
11 裁剪人生 当代都市 一般 北京紫葩国际文化传媒有限公司 201905 (京)字第08683号
12 爱情是碗油泼面 当代都市 一般 北京版映科技有限公司 201905 (京)字第8580号
13 流动紫禁城 近代传奇 一般 北京华谊兄弟娱乐投资有限公司 201905 (京)字第2217号
14 大海 当代都市 一般 北京兄弟映画影视传媒有限公司 201905 (京)字第1805号
15 浑河之魂 近代革命 一般 北京凌云飞扬文化传媒有限公司 201905 (京)字第3814号
16 允许回忆 当代都市 一般 昆仑映画影视文化传媒(北京)有限公司 201905 (京)字第2793号
17 四十而获 当代都市 一般 北京十分乐观影视文化传媒有限公司 201905 (京)字第08259号
18 像爱人一样拥抱你 当代都市 一般 北京思德睿文化传媒有限公司 201905 (京)字第6317号
episodes shooting_date prod_cycle \
0 50 2019.6 3个月
1 40 2019.3 10个月
2 30 2020.12 4个月
3 45 2019.12 18个月
4 20 2019.1 3个月
5 40 2019.11 24个月
6 46 2019.8 12个月
7 36 2019.4 5个月
8 36 2019.11 5个月
9 51 2019.8 9个月
10 40 2019.9 6个月
11 30 2019.8 7个月
12 20 2019.9 3个月
13 46 2019.1 12个月
14 40 2019.12 6个月
15 45 2019.1 12个月
16 36 2019.8 3个月
17 40 2019.12 3个月
18 40 2020.6 18个月
content pro_opi \
0 在本部中快乐的大头儿子仍旧过着幸福的生活,温柔贤淑的围裙妈妈、风趣幽默的小头爸爸一如既往地伴... 同意备案,报请总局电视剧管理司公示。
1 大陆惠台政策的推行,掀起了台湾同胞到大陆求职创业的热潮。顺应热潮,刘欣然等一批台湾青年来到了... 同意备案,报请总局电视剧管理司公示。
2 九十年代末,因父亲失业,八岁的赵晓臻不得不放弃芭蕾,进入体校。由于自身条件较好,经过几年刻苦... 同意备案,报请总局电视剧管理司公示。
3 苏白和石普生1985年的同一天出生在北京人民医院。十年后,苏母的突然遇难、苏父因无法承受压力... 同意备案,报请总局电视剧管理司公示。
4 阳光帅气的杜新尧是一家咖啡店做甜品师,甜美可爱的音乐主播宫海默是这家店的常客。杜新尧被宫海默... 同意备案,报请总局电视剧管理司公示。
5 广州滨江大学工商管理系的马路在毕业后机缘巧合下来到深圳一家社工组织当社工,通过一年时间马路从... 同意备案,报请总局电视剧管理司公示。
6 原某市花样游泳队主力队员李丹退役后出任该市花样游泳队的主教练,并把一个叫美美的17岁姑娘带进... 同意备案,报请总局电视剧管理司公示。
7 陆可和沈思怡是两个性格迥异的女孩却是对方最亲密的朋友。毕业时两人因沈思怡霸道的性格关系破裂,... 同意备案,报请总局电视剧管理司公示。
8 1980年,来自祖国天南海北的六个年轻人走进同一所大学,成为了同届同学。但就在大学第二年,同... 同意备案,报请总局电视剧管理司公示。
9 京杭大运河上的北通州,连家船商贩天惠民从嘉兴南湖带商人到枣庄时受伤,回通州以看护燃灯塔为生。... 同意备案,报请总局电视剧管理司公示。
10 半个世纪以来,以任新华为代表的航天人,他们在中国一穷二白的基础上,经历种种坎坷,克服重重困难... 同意备案,报请总局电视剧管理司公示。
11 阿朵平静而快乐的生活,被彻底打破了。阿朵得知已过世的自己崇拜喜爱的阿莎姨是自己的生母。对母亲... 同意备案,报请总局电视剧管理司公示。
12 北漂三年的小米回到了自己的老家西安,并不能很好的适应这里的一切。找了一个多月的工作,高不成低... 同意备案,报请总局电视剧管理司公示。
13 1932年,日本人逼近平津,珍藏在故宫内的数以百万计的国宝将落入敌手。院长易培基和副院长马衡... 同意备案,报请总局电视剧管理司公示。
14 大学乐团的小提琴手林曦悦自小学习小提琴,却因为父亲的去世,中断了音乐之路。机缘巧合参与了乐爱... 同意备案,报请总局电视剧管理司公示。
15 史新幼年时,与义父柳雄及义妹柳月相依为命,后与柳月结为夫妻并双双加入抗日队伍。在一次战斗中,... 同意备案,报请总局电视剧管理司公示。
16 2005年9月,九中十六班迎来了又一届高一新生,体育特长生江向云,喜欢画漫画的山临青,各科全... 同意备案,报请总局电视剧管理司公示。
17 四个步入40岁的中年男性在面对生活中的种种压力,深陷中年危机。马丁在健康与事业受到双重打击后... 同意备案,报请总局电视剧管理司公示。
18 岳柯、任朗、施丞宇是同住在一个屋檐下的室友,三个男人都将面临而立之年的到来,然而一个夜晚打破... 同意备案,报请总局电视剧管理司公示。
```

View file

@ -0,0 +1,171 @@
# 全球财经事件
**文档ID**: 233
**原始链接**: https://tushare.pro/document/2?doc_id=233
---
## 财经日历
接口:eco_cal描述:获取全球财经日历、包括经济事件数据更新限量:单次最大获取100行数据积分:2000积分可调取
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期(YYYYMMDD格式)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>currency</td>
<td>str</td>
<td>N</td>
<td>货币代码</td>
</tr>
<tr>
<td>country</td>
<td>str</td>
<td>N</td>
<td>国家(比如:中国、美国)</td>
</tr>
<tr>
<td>event</td>
<td>str</td>
<td>N</td>
<td>事件 (支持模糊匹配: *非农*)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>time</td>
<td>str</td>
<td>Y</td>
<td>时间</td>
</tr>
<tr>
<td>currency</td>
<td>str</td>
<td>Y</td>
<td>货币代码</td>
</tr>
<tr>
<td>country</td>
<td>str</td>
<td>Y</td>
<td>国家</td>
</tr>
<tr>
<td>event</td>
<td>str</td>
<td>Y</td>
<td>经济事件</td>
</tr>
<tr>
<td>value</td>
<td>str</td>
<td>Y</td>
<td>今值</td>
</tr>
<tr>
<td>pre_value</td>
<td>str</td>
<td>Y</td>
<td>前值</td>
</tr>
<tr>
<td>fore_value</td>
<td>str</td>
<td>Y</td>
<td>预测值</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
#获取指定日期全球经济日历
df = pro.eco_cal(date='20200403')
#获取中国经济事件
df = pro.eco_cal(country='中国')
#获取美国非农数据
df = pro.eco_cal(event='美国季调后非农*', fields='date,time,country,event,value,pre_value,fore_value')
```
数据示例
```
date time country event value pre_value fore_value
0 20200410 09:30 中国 中国PPI年率(%)(年度)(三月) -0.4% -1.1%
1 20200410 09:30 中国 中国CPI月率(%)(月度)(三月) 0.8% -0.7%
2 20200410 09:30 中国 中国CPI年率(%)(年度)(三月) 5.2% 4.9%
3 20200407 15:00 中国 中国外汇储备(美元) 3.107T
4 20200403 09:45 中国 中国财新服务业PMI(三月) 43.0 26.5
.. ... ... ... ... ... ... ...
95 20200229 09:00 中国 中国官方非制造业PMI(二月) 29.6 54.1
96 20200229 09:00 中国 中国官方制造业PMI(二月) 35.7 50.0 46.0
97 20200229 09:00 中国 中国官方综合PMI(二月) 28.9 53.0
98 20200308 00:17 中国 中国贸易帐(美元)(二月) 47.21B 12.75B
99 20200308 00:17 中国 中国进口年率-美元计价(%)(年度)(二月) 16.5% -9.0%
```
美国非农数据:
```
date time country event value pre_value fore_value
0 20200403 20:30 美国 美国季调后非农就业人口变动(三月) -701K 275K -100K
1 20200403 20:30 美国 美国季调后非农就业人口变动(三月) 273K -100K
2 20200403 20:30 美国 美国季调后非农就业人口变动(三月) 273K -124K
3 20200403 20:30 美国 美国季调后非农就业人口变动(三月) 273K -100K
4 20200403 20:30 美国 美国季调后非农就业人口变动(三月) 273K -123K
.. ... ... ... ... ... ... ...
95 20190308 21:30 美国 美国季调后非农就业人口变动(二月) 304K 181K
96 20190308 21:30 美国 美国季调后非农就业人口变动(二月) 304K 180K
97 20190308 21:30 美国 美国季调后非农就业人口变动(二月) 304K 185K
98 20190308 21:30 美国 美国季调后非农就业人口变动(二月) 304K 180K
99 20190308 21:30 美国 美国季调后非农就业人口变动(二月) 304K 185K
```

View file

@ -0,0 +1,187 @@
# 分红送股数据
**文档ID**: 103
**原始链接**: https://tushare.pro/document/2?doc_id=103
---
## 分红送股
接口:dividend描述:分红送股数据权限:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日</td>
</tr>
<tr>
<td>record_date</td>
<td>str</td>
<td>N</td>
<td>股权登记日期</td>
</tr>
<tr>
<td>ex_date</td>
<td>str</td>
<td>N</td>
<td>除权除息日</td>
</tr>
<tr>
<td>imp_ann_date</td>
<td>str</td>
<td>N</td>
<td>实施公告日</td>
</tr>
</tbody></table>
以上参数至少有一个不能为空
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>分红年度</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>预案公告日</td>
</tr>
<tr>
<td>div_proc</td>
<td>str</td>
<td>Y</td>
<td>实施进度</td>
</tr>
<tr>
<td>stk_div</td>
<td>float</td>
<td>Y</td>
<td>每股送转</td>
</tr>
<tr>
<td>stk_bo_rate</td>
<td>float</td>
<td>Y</td>
<td>每股送股比例</td>
</tr>
<tr>
<td>stk_co_rate</td>
<td>float</td>
<td>Y</td>
<td>每股转增比例</td>
</tr>
<tr>
<td>cash_div</td>
<td>float</td>
<td>Y</td>
<td>每股分红(税后)</td>
</tr>
<tr>
<td>cash_div_tax</td>
<td>float</td>
<td>Y</td>
<td>每股分红(税前)</td>
</tr>
<tr>
<td>record_date</td>
<td>str</td>
<td>Y</td>
<td>股权登记日</td>
</tr>
<tr>
<td>ex_date</td>
<td>str</td>
<td>Y</td>
<td>除权除息日</td>
</tr>
<tr>
<td>pay_date</td>
<td>str</td>
<td>Y</td>
<td>派息日</td>
</tr>
<tr>
<td>div_listdate</td>
<td>str</td>
<td>Y</td>
<td>红股上市日</td>
</tr>
<tr>
<td>imp_ann_date</td>
<td>str</td>
<td>Y</td>
<td>实施公告日</td>
</tr>
<tr>
<td>base_date</td>
<td>str</td>
<td>N</td>
<td>基准日</td>
</tr>
<tr>
<td>base_share</td>
<td>float</td>
<td>N</td>
<td>基准股本(万)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.dividend(ts_code='600848.SH', fields='ts_code,div_proc,stk_div,record_date,ex_date')
```
数据样例
```
ts_code div_proc stk_div record_date ex_date
0 600848.SH 实施 0.10 19950606 19950607
1 600848.SH 实施 0.10 19970707 19970708
2 600848.SH 实施 0.15 19960701 19960702
3 600848.SH 实施 0.10 19980706 19980707
4 600848.SH 预案 0.00 None None
5 600848.SH 实施 0.00 20180522 20180523
```

View file

@ -0,0 +1,749 @@
# 利润表
**文档ID**: 33
**原始链接**: https://tushare.pro/document/2?doc_id=33
---
## 利润表
接口:income,可以通过数据工具调试和查看数据。描述:获取上市公司财务利润表数据积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法提示:当前接口只能按单只股票获取其历史数据,如果需要获取某一季度全部上市公司数据,请使用income_vip接口(参数一致),需积攒5000积分。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>f_ann_date</td>
<td>str</td>
<td>N</td>
<td>实际公告日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(每个季度最后一天的日期,比如20171231表示年报,20170630半年报,20170930三季报)</td>
</tr>
<tr>
<td>report_type</td>
<td>str</td>
<td>N</td>
<td>报告类型,参考文档最下方说明</td>
</tr>
<tr>
<td>comp_type</td>
<td>str</td>
<td>N</td>
<td>公司类型(1一般工商业2银行3保险4证券)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期</td>
</tr>
<tr>
<td>f_ann_date</td>
<td>str</td>
<td>Y</td>
<td>实际公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>报告期</td>
</tr>
<tr>
<td>report_type</td>
<td>str</td>
<td>Y</td>
<td>报告类型 见底部表</td>
</tr>
<tr>
<td>comp_type</td>
<td>str</td>
<td>Y</td>
<td>公司类型(1一般工商业2银行3保险4证券)</td>
</tr>
<tr>
<td>end_type</td>
<td>str</td>
<td>Y</td>
<td>报告期类型</td>
</tr>
<tr>
<td>basic_eps</td>
<td>float</td>
<td>Y</td>
<td>基本每股收益</td>
</tr>
<tr>
<td>diluted_eps</td>
<td>float</td>
<td>Y</td>
<td>稀释每股收益</td>
</tr>
<tr>
<td>total_revenue</td>
<td>float</td>
<td>Y</td>
<td>营业总收入</td>
</tr>
<tr>
<td>revenue</td>
<td>float</td>
<td>Y</td>
<td>营业收入</td>
</tr>
<tr>
<td>int_income</td>
<td>float</td>
<td>Y</td>
<td>利息收入</td>
</tr>
<tr>
<td>prem_earned</td>
<td>float</td>
<td>Y</td>
<td>已赚保费</td>
</tr>
<tr>
<td>comm_income</td>
<td>float</td>
<td>Y</td>
<td>手续费及佣金收入</td>
</tr>
<tr>
<td>n_commis_income</td>
<td>float</td>
<td>Y</td>
<td>手续费及佣金净收入</td>
</tr>
<tr>
<td>n_oth_income</td>
<td>float</td>
<td>Y</td>
<td>其他经营净收益</td>
</tr>
<tr>
<td>n_oth_b_income</td>
<td>float</td>
<td>Y</td>
<td>加:其他业务净收益</td>
</tr>
<tr>
<td>prem_income</td>
<td>float</td>
<td>Y</td>
<td>保险业务收入</td>
</tr>
<tr>
<td>out_prem</td>
<td>float</td>
<td>Y</td>
<td>减:分出保费</td>
</tr>
<tr>
<td>une_prem_reser</td>
<td>float</td>
<td>Y</td>
<td>提取未到期责任准备金</td>
</tr>
<tr>
<td>reins_income</td>
<td>float</td>
<td>Y</td>
<td>其中:分保费收入</td>
</tr>
<tr>
<td>n_sec_tb_income</td>
<td>float</td>
<td>Y</td>
<td>代理买卖证券业务净收入</td>
</tr>
<tr>
<td>n_sec_uw_income</td>
<td>float</td>
<td>Y</td>
<td>证券承销业务净收入</td>
</tr>
<tr>
<td>n_asset_mg_income</td>
<td>float</td>
<td>Y</td>
<td>受托客户资产管理业务净收入</td>
</tr>
<tr>
<td>oth_b_income</td>
<td>float</td>
<td>Y</td>
<td>其他业务收入</td>
</tr>
<tr>
<td>fv_value_chg_gain</td>
<td>float</td>
<td>Y</td>
<td>加:公允价值变动净收益</td>
</tr>
<tr>
<td>invest_income</td>
<td>float</td>
<td>Y</td>
<td>加:投资净收益</td>
</tr>
<tr>
<td>ass_invest_income</td>
<td>float</td>
<td>Y</td>
<td>其中:对联营企业和合营企业的投资收益</td>
</tr>
<tr>
<td>forex_gain</td>
<td>float</td>
<td>Y</td>
<td>加:汇兑净收益</td>
</tr>
<tr>
<td>total_cogs</td>
<td>float</td>
<td>Y</td>
<td>营业总成本</td>
</tr>
<tr>
<td>oper_cost</td>
<td>float</td>
<td>Y</td>
<td>减:营业成本</td>
</tr>
<tr>
<td>int_exp</td>
<td>float</td>
<td>Y</td>
<td>减:利息支出</td>
</tr>
<tr>
<td>comm_exp</td>
<td>float</td>
<td>Y</td>
<td>减:手续费及佣金支出</td>
</tr>
<tr>
<td>biz_tax_surchg</td>
<td>float</td>
<td>Y</td>
<td>减:营业税金及附加</td>
</tr>
<tr>
<td>sell_exp</td>
<td>float</td>
<td>Y</td>
<td>减:销售费用</td>
</tr>
<tr>
<td>admin_exp</td>
<td>float</td>
<td>Y</td>
<td>减:管理费用</td>
</tr>
<tr>
<td>fin_exp</td>
<td>float</td>
<td>Y</td>
<td>减:财务费用</td>
</tr>
<tr>
<td>assets_impair_loss</td>
<td>float</td>
<td>Y</td>
<td>减:资产减值损失</td>
</tr>
<tr>
<td>prem_refund</td>
<td>float</td>
<td>Y</td>
<td>退保金</td>
</tr>
<tr>
<td>compens_payout</td>
<td>float</td>
<td>Y</td>
<td>赔付总支出</td>
</tr>
<tr>
<td>reser_insur_liab</td>
<td>float</td>
<td>Y</td>
<td>提取保险责任准备金</td>
</tr>
<tr>
<td>div_payt</td>
<td>float</td>
<td>Y</td>
<td>保户红利支出</td>
</tr>
<tr>
<td>reins_exp</td>
<td>float</td>
<td>Y</td>
<td>分保费用</td>
</tr>
<tr>
<td>oper_exp</td>
<td>float</td>
<td>Y</td>
<td>营业支出</td>
</tr>
<tr>
<td>compens_payout_refu</td>
<td>float</td>
<td>Y</td>
<td>减:摊回赔付支出</td>
</tr>
<tr>
<td>insur_reser_refu</td>
<td>float</td>
<td>Y</td>
<td>减:摊回保险责任准备金</td>
</tr>
<tr>
<td>reins_cost_refund</td>
<td>float</td>
<td>Y</td>
<td>减:摊回分保费用</td>
</tr>
<tr>
<td>other_bus_cost</td>
<td>float</td>
<td>Y</td>
<td>其他业务成本</td>
</tr>
<tr>
<td>operate_profit</td>
<td>float</td>
<td>Y</td>
<td>营业利润</td>
</tr>
<tr>
<td>non_oper_income</td>
<td>float</td>
<td>Y</td>
<td>加:营业外收入</td>
</tr>
<tr>
<td>non_oper_exp</td>
<td>float</td>
<td>Y</td>
<td>减:营业外支出</td>
</tr>
<tr>
<td>nca_disploss</td>
<td>float</td>
<td>Y</td>
<td>其中:减:非流动资产处置净损失</td>
</tr>
<tr>
<td>total_profit</td>
<td>float</td>
<td>Y</td>
<td>利润总额</td>
</tr>
<tr>
<td>income_tax</td>
<td>float</td>
<td>Y</td>
<td>所得税费用</td>
</tr>
<tr>
<td>n_income</td>
<td>float</td>
<td>Y</td>
<td>净利润(含少数股东损益)</td>
</tr>
<tr>
<td>n_income_attr_p</td>
<td>float</td>
<td>Y</td>
<td>净利润(不含少数股东损益)</td>
</tr>
<tr>
<td>minority_gain</td>
<td>float</td>
<td>Y</td>
<td>少数股东损益</td>
</tr>
<tr>
<td>oth_compr_income</td>
<td>float</td>
<td>Y</td>
<td>其他综合收益</td>
</tr>
<tr>
<td>t_compr_income</td>
<td>float</td>
<td>Y</td>
<td>综合收益总额</td>
</tr>
<tr>
<td>compr_inc_attr_p</td>
<td>float</td>
<td>Y</td>
<td>归属于母公司(或股东)的综合收益总额</td>
</tr>
<tr>
<td>compr_inc_attr_m_s</td>
<td>float</td>
<td>Y</td>
<td>归属于少数股东的综合收益总额</td>
</tr>
<tr>
<td>ebit</td>
<td>float</td>
<td>Y</td>
<td>息税前利润</td>
</tr>
<tr>
<td>ebitda</td>
<td>float</td>
<td>Y</td>
<td>息税折旧摊销前利润</td>
</tr>
<tr>
<td>insurance_exp</td>
<td>float</td>
<td>Y</td>
<td>保险业务支出</td>
</tr>
<tr>
<td>undist_profit</td>
<td>float</td>
<td>Y</td>
<td>年初未分配利润</td>
</tr>
<tr>
<td>distable_profit</td>
<td>float</td>
<td>Y</td>
<td>可分配利润</td>
</tr>
<tr>
<td>rd_exp</td>
<td>float</td>
<td>Y</td>
<td>研发费用</td>
</tr>
<tr>
<td>fin_exp_int_exp</td>
<td>float</td>
<td>Y</td>
<td>财务费用:利息费用</td>
</tr>
<tr>
<td>fin_exp_int_inc</td>
<td>float</td>
<td>Y</td>
<td>财务费用:利息收入</td>
</tr>
<tr>
<td>transfer_surplus_rese</td>
<td>float</td>
<td>Y</td>
<td>盈余公积转入</td>
</tr>
<tr>
<td>transfer_housing_imprest</td>
<td>float</td>
<td>Y</td>
<td>住房周转金转入</td>
</tr>
<tr>
<td>transfer_oth</td>
<td>float</td>
<td>Y</td>
<td>其他转入</td>
</tr>
<tr>
<td>adj_lossgain</td>
<td>float</td>
<td>Y</td>
<td>调整以前年度损益</td>
</tr>
<tr>
<td>withdra_legal_surplus</td>
<td>float</td>
<td>Y</td>
<td>提取法定盈余公积</td>
</tr>
<tr>
<td>withdra_legal_pubfund</td>
<td>float</td>
<td>Y</td>
<td>提取法定公益金</td>
</tr>
<tr>
<td>withdra_biz_devfund</td>
<td>float</td>
<td>Y</td>
<td>提取企业发展基金</td>
</tr>
<tr>
<td>withdra_rese_fund</td>
<td>float</td>
<td>Y</td>
<td>提取储备基金</td>
</tr>
<tr>
<td>withdra_oth_ersu</td>
<td>float</td>
<td>Y</td>
<td>提取任意盈余公积金</td>
</tr>
<tr>
<td>workers_welfare</td>
<td>float</td>
<td>Y</td>
<td>职工奖金福利</td>
</tr>
<tr>
<td>distr_profit_shrhder</td>
<td>float</td>
<td>Y</td>
<td>可供股东分配的利润</td>
</tr>
<tr>
<td>prfshare_payable_dvd</td>
<td>float</td>
<td>Y</td>
<td>应付优先股股利</td>
</tr>
<tr>
<td>comshare_payable_dvd</td>
<td>float</td>
<td>Y</td>
<td>应付普通股股利</td>
</tr>
<tr>
<td>capit_comstock_div</td>
<td>float</td>
<td>Y</td>
<td>转作股本的普通股股利</td>
</tr>
<tr>
<td>net_after_nr_lp_correct</td>
<td>float</td>
<td>N</td>
<td>扣除非经常性损益后的净利润(更正前)</td>
</tr>
<tr>
<td>credit_impa_loss</td>
<td>float</td>
<td>N</td>
<td>信用减值损失</td>
</tr>
<tr>
<td>net_expo_hedging_benefits</td>
<td>float</td>
<td>N</td>
<td>净敞口套期收益</td>
</tr>
<tr>
<td>oth_impair_loss_assets</td>
<td>float</td>
<td>N</td>
<td>其他资产减值损失</td>
</tr>
<tr>
<td>total_opcost</td>
<td>float</td>
<td>N</td>
<td>营业总成本(二)</td>
</tr>
<tr>
<td>amodcost_fin_assets</td>
<td>float</td>
<td>N</td>
<td>以摊余成本计量的金融资产终止确认收益</td>
</tr>
<tr>
<td>oth_income</td>
<td>float</td>
<td>N</td>
<td>其他收益</td>
</tr>
<tr>
<td>asset_disp_income</td>
<td>float</td>
<td>N</td>
<td>资产处置收益</td>
</tr>
<tr>
<td>continued_net_profit</td>
<td>float</td>
<td>N</td>
<td>持续经营净利润</td>
</tr>
<tr>
<td>end_net_profit</td>
<td>float</td>
<td>N</td>
<td>终止经营净利润</td>
</tr>
<tr>
<td>update_flag</td>
<td>str</td>
<td>Y</td>
<td>更新标识</td>
</tr>
</tbody></table>
接口使用说明
```
pro = ts.pro_api()
df = pro.income(ts_code='600000.SH', start_date='20180101', end_date='20180730', fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,basic_eps,diluted_eps')
```
获取某一季度全部股票数据
```
df = pro.income_vip(period='20181231',fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,basic_eps,diluted_eps')
```
数据样例
```
ts_code ann_date f_ann_date end_date report_type comp_type basic_eps diluted_eps \
0 600000.SH 20180428 20180428 20180331 1 2 0.46 0.46
1 600000.SH 20180428 20180428 20180331 1 2 0.46 0.46
2 600000.SH 20180428 20180428 20171231 1 2 1.84 1.84
```
主要报表类型说明
<table>
<thead>
<tr>
<th>代码</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>合并报表</td>
<td>上市公司最新报表(默认)</td>
</tr>
<tr>
<td>2</td>
<td>单季合并</td>
<td>单一季度的合并报表</td>
</tr>
<tr>
<td>3</td>
<td>调整单季合并表</td>
<td>调整后的单季合并报表(如果有)</td>
</tr>
<tr>
<td>4</td>
<td>调整合并报表</td>
<td>本年度公布上年同期的财务报表数据,报告期为上年度</td>
</tr>
<tr>
<td>5</td>
<td>调整前合并报表</td>
<td>数据发生变更,将原数据进行保留,即调整前的原数据</td>
</tr>
<tr>
<td>6</td>
<td>母公司报表</td>
<td>该公司母公司的财务报表数据</td>
</tr>
<tr>
<td>7</td>
<td>母公司单季表</td>
<td>母公司的单季度表</td>
</tr>
<tr>
<td>8</td>
<td>母公司调整单季表</td>
<td>母公司调整后的单季表</td>
</tr>
<tr>
<td>9</td>
<td>母公司调整表</td>
<td>该公司母公司的本年度公布上年同期的财务报表数据</td>
</tr>
<tr>
<td>10</td>
<td>母公司调整前报表</td>
<td>母公司调整之前的原始财务报表数据</td>
</tr>
<tr>
<td>11</td>
<td>母公司调整前合并报表</td>
<td>母公司调整之前合并报表原数据</td>
</tr>
<tr>
<td>12</td>
<td>母公司调整前报表</td>
<td>母公司报表发生变更前保留的原数据</td>
</tr>
</tbody></table>

View file

@ -0,0 +1,91 @@
# 券商月度金股
**文档ID**: 267
**原始链接**: https://tushare.pro/document/2?doc_id=267
---
## 券商每月荐股
接口:broker_recommend描述:获取券商月度金股,一般1日~3日内更新当月数据限量:单次最大1000行数据,可循环提取积分:积分达到6000即可调用,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>month</td>
<td>str</td>
<td>Y</td>
<td>月度(YYYYMM)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>month</td>
<td>str</td>
<td>Y</td>
<td>月度</td>
</tr>
<tr>
<td>broker</td>
<td>str</td>
<td>Y</td>
<td>券商</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票简称</td>
</tr>
</tbody></table>
接口示例
```
#获取查询月份券商金股
df = pro.broker_recommend(month='202106')
```
数据示例
```
month broker ts_code name
0 202106 东兴证券 000066.SZ 中国长城
1 202106 东兴证券 000708.SZ 中信特钢
2 202106 东兴证券 002304.SZ 洋河股份
3 202106 东兴证券 003816.SZ 中国广核
4 202106 东兴证券 300196.SZ 长海股份
.. ... ... ... ...
263 202106 长城证券 600096.SH 云天化
264 202106 长城证券 600809.SH 山西汾酒
265 202106 长城证券 603596.SH 伯特利
266 202106 长城证券 603885.SH 吉祥航空
267 202106 长城证券 605068.SH 明新旭腾
```

View file

@ -0,0 +1,224 @@
# 券商盈利预测数据
**文档ID**: 292
**原始链接**: https://tushare.pro/document/2?doc_id=292
---
## 卖方盈利预测数据
接口:report_rc描述:获取券商(卖方)每天研报的盈利预测数据,数据从2010年开始,每晚19~22点更新当日数据限量:单次最大3000条,可分页和循环提取所有数据权限:本接口120积分可以试用,每天10次请求,正式权限需8000积分,每天可请求100000次,10000积分以上无总量限制。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>report_date</td>
<td>str</td>
<td>N</td>
<td>报告日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>报告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>报告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>report_date</td>
<td>str</td>
<td>Y</td>
<td>研报日期</td>
</tr>
<tr>
<td>report_title</td>
<td>str</td>
<td>Y</td>
<td>报告标题</td>
</tr>
<tr>
<td>report_type</td>
<td>str</td>
<td>Y</td>
<td>报告类型</td>
</tr>
<tr>
<td>classify</td>
<td>str</td>
<td>Y</td>
<td>报告分类</td>
</tr>
<tr>
<td>org_name</td>
<td>str</td>
<td>Y</td>
<td>机构名称</td>
</tr>
<tr>
<td>author_name</td>
<td>str</td>
<td>Y</td>
<td>作者</td>
</tr>
<tr>
<td>quarter</td>
<td>str</td>
<td>Y</td>
<td>预测报告期</td>
</tr>
<tr>
<td>op_rt</td>
<td>float</td>
<td>Y</td>
<td>预测营业收入(万元)</td>
</tr>
<tr>
<td>op_pr</td>
<td>float</td>
<td>Y</td>
<td>预测营业利润(万元)</td>
</tr>
<tr>
<td>tp</td>
<td>float</td>
<td>Y</td>
<td>预测利润总额(万元)</td>
</tr>
<tr>
<td>np</td>
<td>float</td>
<td>Y</td>
<td>预测净利润(万元)</td>
</tr>
<tr>
<td>eps</td>
<td>float</td>
<td>Y</td>
<td>预测每股收益(元)</td>
</tr>
<tr>
<td>pe</td>
<td>float</td>
<td>Y</td>
<td>预测市盈率</td>
</tr>
<tr>
<td>rd</td>
<td>float</td>
<td>Y</td>
<td>预测股息率</td>
</tr>
<tr>
<td>roe</td>
<td>float</td>
<td>Y</td>
<td>预测净资产收益率</td>
</tr>
<tr>
<td>ev_ebitda</td>
<td>float</td>
<td>Y</td>
<td>预测EV/EBITDA</td>
</tr>
<tr>
<td>rating</td>
<td>str</td>
<td>Y</td>
<td>卖方评级</td>
</tr>
<tr>
<td>max_price</td>
<td>float</td>
<td>Y</td>
<td>预测最高目标价</td>
</tr>
<tr>
<td>min_price</td>
<td>float</td>
<td>Y</td>
<td>预测最低目标价</td>
</tr>
<tr>
<td>imp_dg</td>
<td>str</td>
<td>N</td>
<td>机构关注度</td>
</tr>
<tr>
<td>create_time</td>
<td>datetime</td>
<td>N</td>
<td>TS数据更新时间</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.report_rc(ts_code='', report_date='20220429')
```
数据样例
```
ts_code name report_date classify org_name quarter eps pe
0 000733.SZ 振华科技 20220429 一般报告 安信证券 2024Q4 6.7800 14.2000
1 000858.SZ 五粮液 20220429 一般报告 华西证券 2022Q4 6.9800 23.7700
2 000858.SZ 五粮液 20220429 一般报告 华西证券 2023Q4 8.2200 20.1800
3 000858.SZ 五粮液 20220429 一般报告 华西证券 2024Q4 9.5800 17.3100
4 000858.SZ 五粮液 20220429 一般报告 信达证券 2022Q4 7.1100 23.3100
... ... ... ... ... ... ... ... ...
2552 688385.SH 复旦微电 20220429 一般报告 方正证券 2022Q4 0.9100 62.7000
2553 688385.SH 复旦微电 20220429 一般报告 方正证券 2023Q4 1.1600 49.1900
2554 688385.SH 复旦微电 20220429 一般报告 方正证券 2024Q4 1.5800 36.3200
2555 000733.SZ 振华科技 20220429 一般报告 安信证券 2022Q4 4.3000 22.4000
2556 000733.SZ 振华科技 20220429 一般报告 安信证券 2023Q4 5.4100 17.8000
```

View file

@ -0,0 +1,143 @@
# 前十大流通股东
**文档ID**: 62
**原始链接**: https://tushare.pro/document/2?doc_id=62
---
## 前十大流通股东
接口:top10_floatholders描述:获取上市公司前十大流通股东数据积分:需2000积分以上才可以调取本接口,5000积分以上频次会更高
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(YYYYMMDD格式,一般为每个季度最后一天)</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>报告期开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>报告期结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>holder_name</td>
<td>str</td>
<td>股东名称</td>
</tr>
<tr>
<td>hold_amount</td>
<td>float</td>
<td>持有数量(股)</td>
</tr>
<tr>
<td>hold_ratio</td>
<td>float</td>
<td>占总股本比例(%)</td>
</tr>
<tr>
<td>hold_float_ratio</td>
<td>float</td>
<td>占流通股本比例(%)</td>
</tr>
<tr>
<td>hold_change</td>
<td>float</td>
<td>持股变动</td>
</tr>
<tr>
<td>holder_type</td>
<td>str</td>
<td>股东类型</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.top10_floatholders(ts_code='600000.SH', start_date='20170101', end_date='20171231')
```
或者
```
df = pro.query('top10_floatholders', ts_code='600000.SH', start_date='20170101', end_date='20171231')
```
数据样例
```
ts_code ann_date end_date holder_name hold_amount
0 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-资本金 1.763232e+09
1 600000.SH 20180428 20171231 上海国际集团有限公司 5.489319e+09
2 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-传统 2.779437e+09
3 600000.SH 20180428 20171231 中国证券金融股份有限公司 1.216979e+09
4 600000.SH 20180428 20171231 梧桐树投资平台有限责任公司 8.861313e+08
5 600000.SH 20180428 20171231 上海上国投资产管理有限公司 1.395571e+09
6 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-万能H 1.270429e+09
7 600000.SH 20180428 20171231 上海国鑫投资发展有限公司 5.392559e+08
8 600000.SH 20180428 20171231 中央汇金资产管理有限责任公司 3.985214e+08
9 600000.SH 20180428 20171231 中国移动通信集团广东有限公司 5.334893e+09
```

View file

@ -0,0 +1,143 @@
# 前十大股东
**文档ID**: 61
**原始链接**: https://tushare.pro/document/2?doc_id=61
---
## 前十大股东
接口:top10_holders描述:获取上市公司前十大股东数据,包括持有数量和比例等信息积分:需2000积分以上才可以调取本接口,5000积分以上频次会更高
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS代码</td>
</tr>
<tr>
<td>period</td>
<td>str</td>
<td>N</td>
<td>报告期(YYYYMMDD格式,一般为每个季度最后一天)</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>报告期开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>报告期结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS股票代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>holder_name</td>
<td>str</td>
<td>股东名称</td>
</tr>
<tr>
<td>hold_amount</td>
<td>float</td>
<td>持有数量(股)</td>
</tr>
<tr>
<td>hold_ratio</td>
<td>float</td>
<td>占总股本比例(%)</td>
</tr>
<tr>
<td>hold_float_ratio</td>
<td>float</td>
<td>占流通股本比例(%)</td>
</tr>
<tr>
<td>hold_change</td>
<td>float</td>
<td>持股变动</td>
</tr>
<tr>
<td>holder_type</td>
<td>str</td>
<td>股东类型</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.top10_holders(ts_code='600000.SH', start_date='20170101', end_date='20171231')
```
或者
```
df = pro.query('top10_holders', ts_code='600000.SH', start_date='20170101', end_date='20171231')
```
数据样例
```
ts_code ann_date end_date holder_name hold_amount hold_ratio
0 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-传统 2.779437e+09 9.47
1 600000.SH 20180428 20171231 上海国鑫投资发展有限公司 9.455690e+08 3.22
2 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-万能H 1.270429e+09 4.33
3 600000.SH 20180428 20171231 富德生命人寿保险股份有限公司-资本金 1.763232e+09 6.01
4 600000.SH 20180428 20171231 上海国际集团有限公司 6.331323e+09 21.57
5 600000.SH 20180428 20171231 中国移动通信集团广东有限公司 5.334893e+09 18.18
6 600000.SH 20180428 20171231 中国证券金融股份有限公司 1.216979e+09 4.15
7 600000.SH 20180428 20171231 梧桐树投资平台有限责任公司 8.861313e+08 3.02
8 600000.SH 20180428 20171231 中央汇金资产管理有限责任公司 3.985214e+08 1.36
9 600000.SH 20180428 20171231 上海上国投资产管理有限公司 1.395571e+09 4.75
```

View file

@ -0,0 +1,92 @@
# 北交所新旧代码对照
**文档ID**: 375
**原始链接**: https://tushare.pro/document/2?doc_id=375
---
## 北交所新旧代码对照表
接口:bse_mapping描述:获取北交所股票代码变更后新旧代码映射表数据限量:单次最大1000条(本接口总数据量300以内)积分:120积分即可调取
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>o_code</td>
<td>str</td>
<td>N</td>
<td>旧代码</td>
</tr>
<tr>
<td>n_code</td>
<td>str</td>
<td>N</td>
<td>新代码</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>o_code</td>
<td>str</td>
<td>Y</td>
<td>原代码</td>
</tr>
<tr>
<td>n_code</td>
<td>str</td>
<td>Y</td>
<td>新代码</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
</tbody></table>
接口示例
```
#获取方大新材新旧代码对照数据
df = pro.bse_mapping(o_code='838163.BJ')
#获取全部变更的股票代码对照表
df = pro.bse_mapping()
```
数据示例
```
name o_code n_code list_date
0 方大新材 838163.BJ 920163.BJ 20200727
```

View file

@ -0,0 +1,381 @@
# 南华期货指数行情
**文档ID**: 155
**原始链接**: https://tushare.pro/document/2?doc_id=155
---
## 南华期货指数日线行情
接口:index_daily描述:获取南华指数每日行情,指数行情也可以通过通用行情接口获取数据.权限:用户需要累积2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>指数代码(南华期货指数以 .NH 结尾,具体请参考本文最下方)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期 (日期格式:YYYYMMDD,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>None</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>TS指数代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>交易日</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>收盘点位</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>开盘点位</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>最高点位</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>最低点位</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>昨日收盘点</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>涨跌点</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>成交量(手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>成交额(千元)</td>
</tr>
</tbody></table>
接口使用
```
pro = ts.pro_api()
#获取南华沪铜指数
df = pro.index_daily(ts_code='CU.NH', start_date='20180101', end_date='20181201')
```
数据样例
```
ts_code trade_date close open high low pre_close \
0 CU.NH 20181130 3928.773 3918.501 3928.773 3907.438 3916.130
1 CU.NH 20181129 3916.130 3891.634 3936.675 3880.572 3894.005
2 CU.NH 20181128 3894.005 3863.978 3895.585 3841.853 3862.398
3 CU.NH 20181127 3862.398 3905.068 3906.648 3844.224 3895.585
4 CU.NH 20181126 3895.585 3895.585 3907.438 3875.831 3903.487
5 CU.NH 20181123 3903.487 3915.340 3937.465 3897.956 3916.920
6 CU.NH 20181122 3916.920 3919.291 3927.983 3892.425 3904.277
7 CU.NH 20181121 3904.277 3931.143 3950.898 3851.335 3917.710
8 CU.NH 20181120 3917.710 3939.045 3953.268 3914.550 3933.514
9 CU.NH 20181119 3933.514 3909.018 3944.577 3903.487 3917.710
10 CU.NH 20181116 3917.710 3916.130 3932.724 3904.277 3912.969
11 CU.NH 20181115 3912.969 3869.509 3917.710 3865.559 3857.657
12 CU.NH 20181114 3857.657 3878.992 3899.536 3849.755 3879.782
13 CU.NH 20181113 3879.782 3866.349 3882.152 3845.804 3865.559
14 CU.NH 20181112 3865.559 3877.411 3884.523 3853.706 3886.103
15 CU.NH 20181109 3886.103 3889.264 3916.130 3877.411 3901.117
16 CU.NH 20181108 3901.117 3921.661 3926.402 3896.376 3909.018
```
<table>
<thead>
<tr>
<th>指数代码</th>
<th>指数名称</th>
</tr>
</thead>
<tbody><tr>
<td>NHAI.NH</td>
<td>南华农产品指数</td>
</tr>
<tr>
<td>NHCI.NH</td>
<td>南华商品指数</td>
</tr>
<tr>
<td>NHECI.NH</td>
<td>南华能化指数</td>
</tr>
<tr>
<td>NHFI.NH</td>
<td>南华黑色指数</td>
</tr>
<tr>
<td>NHII.NH</td>
<td>南华工业品指数</td>
</tr>
<tr>
<td>NHMI.NH</td>
<td>南华金属指数</td>
</tr>
<tr>
<td>NHNFI.NH</td>
<td>南华有色金属</td>
</tr>
<tr>
<td>NHPMI.NH</td>
<td>南华贵金属指数</td>
</tr>
<tr>
<td>A.NH</td>
<td>南华连大豆指数</td>
</tr>
<tr>
<td>AG.NH</td>
<td>南华沪银指数</td>
</tr>
<tr>
<td>AL.NH</td>
<td>南华沪铝指数</td>
</tr>
<tr>
<td>AP.NH</td>
<td>南华郑苹果指数</td>
</tr>
<tr>
<td>AU.NH</td>
<td>南华沪黄金指数</td>
</tr>
<tr>
<td>BB.NH</td>
<td>南华连胶合板指数</td>
</tr>
<tr>
<td>BU.NH</td>
<td>南华沪石油沥青指数</td>
</tr>
<tr>
<td>C.NH</td>
<td>南华连玉米指数</td>
</tr>
<tr>
<td>CF.NH</td>
<td>南华郑棉花指数</td>
</tr>
<tr>
<td>CS.NH</td>
<td>南华连玉米淀粉指数</td>
</tr>
<tr>
<td>CU.NH</td>
<td>南华沪铜指数</td>
</tr>
<tr>
<td>CY.NH</td>
<td>南华棉纱指数</td>
</tr>
<tr>
<td>ER.NH</td>
<td>南华郑籼稻指数</td>
</tr>
<tr>
<td>FB.NH</td>
<td>南华连纤维板指数</td>
</tr>
<tr>
<td>FG.NH</td>
<td>南华郑玻璃指数</td>
</tr>
<tr>
<td>FU.NH</td>
<td>南华沪燃油指数</td>
</tr>
<tr>
<td>HC.NH</td>
<td>南华沪热轧卷板指数</td>
</tr>
<tr>
<td>I.NH</td>
<td>南华连铁矿石指数</td>
</tr>
<tr>
<td>J.NH</td>
<td>南华连焦炭指数</td>
</tr>
<tr>
<td>JD.NH</td>
<td>南华连鸡蛋指数</td>
</tr>
<tr>
<td>JM.NH</td>
<td>南华连焦煤指数</td>
</tr>
<tr>
<td>JR.NH</td>
<td>南华郑粳稻指数</td>
</tr>
<tr>
<td>L.NH</td>
<td>南华连乙烯指数</td>
</tr>
<tr>
<td>LR.NH</td>
<td>南华郑晚籼稻指数</td>
</tr>
<tr>
<td>M.NH</td>
<td>南华连豆粕指数</td>
</tr>
<tr>
<td>ME.NH</td>
<td>南华郑甲醇指数</td>
</tr>
<tr>
<td>NI.NH</td>
<td>南华沪镍指数</td>
</tr>
<tr>
<td>P.NH</td>
<td>南华连棕油指数</td>
</tr>
<tr>
<td>PB.NH</td>
<td>南华沪铅指数</td>
</tr>
<tr>
<td>PP.NH</td>
<td>南华连聚丙烯指数</td>
</tr>
<tr>
<td>RB.NH</td>
<td>南华沪螺钢指数</td>
</tr>
<tr>
<td>RM.NH</td>
<td>南华郑菜籽粕指数</td>
</tr>
<tr>
<td>RO.NH</td>
<td>南华郑菜油指数</td>
</tr>
<tr>
<td>RS.NH</td>
<td>南华郑油菜籽指数</td>
</tr>
<tr>
<td>RU.NH</td>
<td>南华沪天胶指数</td>
</tr>
<tr>
<td>SC.NH</td>
<td>南华原油指数</td>
</tr>
<tr>
<td>SF.NH</td>
<td>南华郑硅铁指数</td>
</tr>
<tr>
<td>SM.NH</td>
<td>南华郑锰硅指数</td>
</tr>
<tr>
<td>SN.NH</td>
<td>南华沪锡指数</td>
</tr>
<tr>
<td>SP.NH</td>
<td>南华纸浆指数</td>
</tr>
<tr>
<td>SR.NH</td>
<td>南华郑白糖指数</td>
</tr>
<tr>
<td>TA.NH</td>
<td>南华郑精对苯二甲酸指数</td>
</tr>
<tr>
<td>TC.NH</td>
<td>南华郑动力煤指数</td>
</tr>
<tr>
<td>V.NH</td>
<td>南华连聚氯乙烯指数</td>
</tr>
<tr>
<td>WR.NH</td>
<td>南华沪线材指数</td>
</tr>
<tr>
<td>WS.NH</td>
<td>南华郑强麦指数</td>
</tr>
<tr>
<td>Y.NH</td>
<td>南华连豆油指数</td>
</tr>
<tr>
<td>ZN.NH</td>
<td>南华沪锌指数</td>
</tr>
</tbody></table>

View file

@ -0,0 +1,126 @@
# 历史Tick行情
**文档ID**: 314
**原始链接**: https://tushare.pro/document/2?doc_id=314
---
## 期货Tick行情数据
获取全市场期货合约的Tick高频行情,当前不提供API方式获取,只提供csv网盘交付,近10年历史数据,一次性网盘拷贝(支持按交易所按日期定制),每天增量更新。tick行情属于单独的数据服务内容,不在积分权限范畴,有需求的用户请微信联系:waditu_a ,联系时请注明期货tick数据。
数据字段内容说明
<table>
<thead>
<tr>
<th>字段</th>
<th>类型</th>
<th>中文含义</th>
<th>样例</th>
</tr>
</thead>
<tbody><tr>
<td>InstrumentID</td>
<td>string</td>
<td>合约ID</td>
<td>cu2310</td>
</tr>
<tr>
<td>BidPrice1</td>
<td>float</td>
<td>买一价</td>
<td>68190.000000</td>
</tr>
<tr>
<td>BidVolume1</td>
<td>int</td>
<td>买一量</td>
<td>4</td>
</tr>
<tr>
<td>AskPrice1</td>
<td>float</td>
<td>卖一价</td>
<td>68212.000000</td>
</tr>
<tr>
<td>AskVolume1</td>
<td>int</td>
<td>卖一量</td>
<td>2</td>
</tr>
<tr>
<td>LastPrice</td>
<td>float</td>
<td>最新价</td>
<td>68210.000000</td>
</tr>
<tr>
<td>Volume</td>
<td>int</td>
<td>成交量</td>
<td>3223</td>
</tr>
<tr>
<td>Turnover</td>
<td>float</td>
<td>成交金额</td>
<td>382577245.000000</td>
</tr>
<tr>
<td>OpenInterest</td>
<td>int</td>
<td>持仓量</td>
<td>203332.000000</td>
</tr>
<tr>
<td>UpperLimitPrice</td>
<td>float</td>
<td>涨停价</td>
<td>68210.000000</td>
</tr>
<tr>
<td>LowerLimitPrice</td>
<td>float</td>
<td>跌停价</td>
<td>62210.000000</td>
</tr>
<tr>
<td>OpenPrice</td>
<td>float</td>
<td>今开盘</td>
<td>68010.000000</td>
</tr>
<tr>
<td>PreSettlementPrice</td>
<td>float</td>
<td>昨结算价</td>
<td>68110.000000</td>
</tr>
<tr>
<td>PreClosePrice</td>
<td>float</td>
<td>昨收盘价</td>
<td>68113.000000</td>
</tr>
<tr>
<td>PreOpenInterest</td>
<td>int</td>
<td>昨持仓量</td>
<td>3232343.000000</td>
</tr>
<tr>
<td>TradingDay</td>
<td>string</td>
<td>交易日期</td>
<td>20230925</td>
</tr>
<tr>
<td>UpdateTime</td>
<td>string</td>
<td>更新时间</td>
<td>10:00:00.500</td>
</tr>
</tbody></table>
文件样例

View file

@ -0,0 +1,165 @@
# 历史分钟
**文档ID**: 370
**原始链接**: https://tushare.pro/document/2?doc_id=370
---
## 股票历史分钟行情
接口:stk_mins描述:获取A股分钟数据,支持1min/5min/15min/30min/60min行情,提供Python SDK和 http Restful API两种方式限量:单次最大8000行数据,可以通过股票代码和时间循环获取,本接口可以提供超过10年历史分钟数据权限:需单独开权限,正式权限请参阅权限说明
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码,e.g. 600000.SH</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>分钟频度(1min/5min/15min/30min/60min)</td>
</tr>
<tr>
<td>start_date</td>
<td>datetime</td>
<td>N</td>
<td>开始日期 格式:2023-08-25 09:00:00</td>
</tr>
<tr>
<td>end_date</td>
<td>datetime</td>
<td>N</td>
<td>结束时间 格式:2023-08-25 19:00:00</td>
</tr>
</tbody></table>
freq参数说明
<table>
<thead>
<tr>
<th>freq</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>1min</td>
<td>1分钟</td>
</tr>
<tr>
<td>5min</td>
<td>5分钟</td>
</tr>
<tr>
<td>15min</td>
<td>15分钟</td>
</tr>
<tr>
<td>30min</td>
<td>30分钟</td>
</tr>
<tr>
<td>60min</td>
<td>60分钟</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_time</td>
<td>str</td>
<td>Y</td>
<td>交易时间</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价</td>
</tr>
<tr>
<td>vol</td>
<td>int</td>
<td>Y</td>
<td>成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取浦发银行60000.SH的历史分钟数据
df = pro.stk_mins(ts_code='600000.SH', freq='1min', start_date='2023-08-25 09:00:00', end_date='2023-08-25 19:00:00')
```
数据样例
```
ts_code trade_time close open high low vol amount
0 600000.SH 2023-08-25 15:00:00 7.05 7.05 7.05 7.05 235500.0 1660275.0
1 600000.SH 2023-08-25 14:59:00 7.05 7.05 7.05 7.05 0.0 0.0
2 600000.SH 2023-08-25 14:58:00 7.05 7.05 7.05 7.05 0.0 0.0
3 600000.SH 2023-08-25 14:57:00 7.05 7.06 7.06 7.05 51800.0 365491.0
4 600000.SH 2023-08-25 14:56:00 7.05 7.05 7.06 7.04 92700.0 653831.0
.. ... ... ... ... ... ... ... ...
236 600000.SH 2023-08-25 09:34:00 7.01 7.02 7.02 7.00 120500.0 845311.0
237 600000.SH 2023-08-25 09:33:00 7.01 7.01 7.02 7.00 126000.0 883188.0
238 600000.SH 2023-08-25 09:32:00 7.01 7.02 7.02 6.99 236699.0 1659260.0
239 600000.SH 2023-08-25 09:31:00 7.02 6.99 7.02 6.97 807500.0 5649956.0
240 600000.SH 2023-08-25 09:30:00 6.99 6.99 6.99 6.99 103700.0 724863.0
```

View file

@ -0,0 +1,172 @@
# 历史分钟行情
**文档ID**: 313
**原始链接**: https://tushare.pro/document/2?doc_id=313
---
## 期货历史分钟行情
接口:ft_mins描述:获取全市场期货合约分钟数据,支持1min/5min/15min/30min/60min行情,提供Python SDK和 http Restful API两种方式,如果需要主力合约分钟,请先通过主力mapping接口获取对应的合约代码后提取分钟。限量:单次最大8000行数据,可以通过期货合约代码和时间循环获取,本接口可以提供超过10年历史分钟数据。权限:120积分可以调取2次接口查看数据,正式权限请参阅权限说明。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码,e.g.CU2310.SHF</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>分钟频度(1min/5min/15min/30min/60min)</td>
</tr>
<tr>
<td>start_date</td>
<td>datetime</td>
<td>N</td>
<td>开始日期 格式:2023-08-25 09:00:00</td>
</tr>
<tr>
<td>end_date</td>
<td>datetime</td>
<td>N</td>
<td>结束时间 格式:2023-08-25 19:00:00</td>
</tr>
</tbody></table>
freq参数说明
<table>
<thead>
<tr>
<th>freq</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>1min</td>
<td>1分钟</td>
</tr>
<tr>
<td>5min</td>
<td>5分钟</td>
</tr>
<tr>
<td>15min</td>
<td>15分钟</td>
</tr>
<tr>
<td>30min</td>
<td>30分钟</td>
</tr>
<tr>
<td>60min</td>
<td>60分钟</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_time</td>
<td>str</td>
<td>Y</td>
<td>交易时间</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价(元)</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价(元)</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价(元)</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价(元)</td>
</tr>
<tr>
<td>vol</td>
<td>int</td>
<td>Y</td>
<td>成交量(手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额(元)</td>
</tr>
<tr>
<td>oi</td>
<td>float</td>
<td>Y</td>
<td>持仓量(手)</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.df = pro.ft_mins(ts_code='CU2310.SHF', freq='1min', start_date='2023-08-25 09:00:00', end_date='2023-08-25 19:00:00')
```
数据样例
```
ts_code trade_time open close high low vol amount oi
0 CU2310.SHF 2023-08-25 15:00:00 68920.0 68930.0 68940.0 68910.0 373.0 128543250.0 146733.0
1 CU2310.SHF 2023-08-25 14:59:00 68910.0 68920.0 68930.0 68910.0 300.0 103379650.0 146751.0
2 CU2310.SHF 2023-08-25 14:58:00 68930.0 68920.0 68940.0 68910.0 207.0 71340500.0 146777.0
3 CU2310.SHF 2023-08-25 14:57:00 68910.0 68930.0 68930.0 68910.0 317.0 109246900.0 146812.0
4 CU2310.SHF 2023-08-25 14:56:00 68900.0 68910.0 68920.0 68900.0 237.0 81659550.0 146852.0
.. ... ... ... ... ... ... ... ... ...
220 CU2310.SHF 2023-08-25 09:05:00 68750.0 68760.0 68770.0 68740.0 103.0 35412050.0 145101.0
221 CU2310.SHF 2023-08-25 09:04:00 68750.0 68750.0 68770.0 68730.0 232.0 79741550.0 145105.0
222 CU2310.SHF 2023-08-25 09:03:00 68740.0 68750.0 68750.0 68720.0 205.0 70453700.0 145087.0
223 CU2310.SHF 2023-08-25 09:02:00 68710.0 68740.0 68740.0 68690.0 278.0 95514550.0 145132.0
224 CU2310.SHF 2023-08-25 09:01:00 68680.0 68710.0 68740.0 68680.0 868.0 298156350.0 145178.0
[225 rows x 9 columns]
```

View file

@ -0,0 +1,161 @@
# 历史日线
**文档ID**: 27
**原始链接**: https://tushare.pro/document/2?doc_id=27
---
## A股日线行情
接口:daily,可以通过数据工具调试和查看数据数据说明:交易日每天15点~16点之间入库。本接口是未复权行情,停牌期间不提供数据调取说明:基础积分每分钟内可调取500次,每次6000条数据,一次请求相当于提取一个股票23年历史描述:获取股票行情数据,或通过通用行情接口获取数据,包含了前后复权数据
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码(支持多个股票同时提取,逗号分隔)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期(YYYYMMDD)</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期(YYYYMMDD)</td>
</tr>
</tbody>
</table>
注:日期都填YYYYMMDD格式,比如20181010
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>交易日期</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>开盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>最低价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>收盘价</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>昨收价【除权价】</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>涨跌额</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>涨跌幅 【基于除权后的昨收计算的涨跌幅:(今收-除权昨收)/除权昨收 】</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>成交量 (手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>成交额 (千元)</td>
</tr>
</tbody>
</table>
接口示例
```
pro = ts.pro_api()
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
#多个股票
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20180701', end_date='20180718')
```
或者
```
df = pro.query('daily', ts_code='000001.SZ', start_date='20180701', end_date='20180718')
```
也可以通过日期取历史某一天的全部历史
```
df = pro.daily(trade_date='20180810')
```
数据样例
```
ts_code trade_date open high low close pre_close change pct_chg vol amount
0 000001.SZ 20180718 8.75 8.85 8.69 8.70 8.72 -0.02 -0.23 525152.77 460697.377
1 000001.SZ 20180717 8.74 8.75 8.66 8.72 8.73 -0.01 -0.11 375356.33 326396.994
2 000001.SZ 20180716 8.85 8.90 8.69 8.73 8.88 -0.15 -1.69 689845.58 603427.713
3 000001.SZ 20180713 8.92 8.94 8.82 8.88 8.88 0.00 0.00 603378.21 535401.175
4 000001.SZ 20180712 8.60 8.97 8.58 8.88 8.64 0.24 2.78 1140492.31 1008658.828
5 000001.SZ 20180711 8.76 8.83 8.68 8.78 8.98 -0.20 -2.23 851296.70 744765.824
6 000001.SZ 20180710 9.02 9.02 8.89 8.98 9.03 -0.05 -0.55 896862.02 803038.965
7 000001.SZ 20180709 8.69 9.03 8.68 9.03 8.66 0.37 4.27 1409954.60 1255007.609
8 000001.SZ 20180706 8.61 8.78 8.45 8.66 8.60 0.06 0.70 988282.69 852071.526
9 000001.SZ 20180705 8.62 8.73 8.55 8.60 8.61 -0.01 -0.12 835768.77 722169.579
```

View file

@ -0,0 +1,301 @@
# 可转债发行
**文档ID**: 186
**原始链接**: https://tushare.pro/document/2?doc_id=186
---
## 可转债发行
接口:cb_issue描述:获取可转债发行数据限量:单次最大2000,可多次提取,总量不限制积分:用户需要至少2000积分才可以调取,5000积分以上频次相对较高,积分越多权限越大,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>发行公告日</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>发行公告日</td>
</tr>
<tr>
<td>res_ann_date</td>
<td>str</td>
<td>Y</td>
<td>发行结果公告日</td>
</tr>
<tr>
<td>plan_issue_size</td>
<td>float</td>
<td>Y</td>
<td>计划发行总额(元)</td>
</tr>
<tr>
<td>issue_size</td>
<td>float</td>
<td>Y</td>
<td>发行总额(元)</td>
</tr>
<tr>
<td>issue_price</td>
<td>float</td>
<td>Y</td>
<td>发行价格</td>
</tr>
<tr>
<td>issue_type</td>
<td>str</td>
<td>Y</td>
<td>发行方式</td>
</tr>
<tr>
<td>issue_cost</td>
<td>float</td>
<td>N</td>
<td>发行费用(元)</td>
</tr>
<tr>
<td>onl_code</td>
<td>str</td>
<td>Y</td>
<td>网上申购代码</td>
</tr>
<tr>
<td>onl_name</td>
<td>str</td>
<td>Y</td>
<td>网上申购简称</td>
</tr>
<tr>
<td>onl_date</td>
<td>str</td>
<td>Y</td>
<td>网上发行日期</td>
</tr>
<tr>
<td>onl_size</td>
<td>float</td>
<td>Y</td>
<td>网上发行总额(张)</td>
</tr>
<tr>
<td>onl_pch_vol</td>
<td>float</td>
<td>Y</td>
<td>网上发行有效申购数量(张)</td>
</tr>
<tr>
<td>onl_pch_num</td>
<td>int</td>
<td>Y</td>
<td>网上发行有效申购户数</td>
</tr>
<tr>
<td>onl_pch_excess</td>
<td>float</td>
<td>Y</td>
<td>网上发行超额认购倍数</td>
</tr>
<tr>
<td>onl_winning_rate</td>
<td>float</td>
<td>N</td>
<td>网上发行中签率(%)</td>
</tr>
<tr>
<td>shd_ration_code</td>
<td>str</td>
<td>Y</td>
<td>老股东配售代码</td>
</tr>
<tr>
<td>shd_ration_name</td>
<td>str</td>
<td>Y</td>
<td>老股东配售简称</td>
</tr>
<tr>
<td>shd_ration_date</td>
<td>str</td>
<td>Y</td>
<td>老股东配售日</td>
</tr>
<tr>
<td>shd_ration_record_date</td>
<td>str</td>
<td>Y</td>
<td>老股东配售股权登记日</td>
</tr>
<tr>
<td>shd_ration_pay_date</td>
<td>str</td>
<td>Y</td>
<td>老股东配售缴款日</td>
</tr>
<tr>
<td>shd_ration_price</td>
<td>float</td>
<td>Y</td>
<td>老股东配售价格</td>
</tr>
<tr>
<td>shd_ration_ratio</td>
<td>float</td>
<td>Y</td>
<td>老股东配售比例</td>
</tr>
<tr>
<td>shd_ration_size</td>
<td>float</td>
<td>Y</td>
<td>老股东配售数量(张)</td>
</tr>
<tr>
<td>shd_ration_vol</td>
<td>float</td>
<td>N</td>
<td>老股东配售有效申购数量(张)</td>
</tr>
<tr>
<td>shd_ration_num</td>
<td>int</td>
<td>N</td>
<td>老股东配售有效申购户数</td>
</tr>
<tr>
<td>shd_ration_excess</td>
<td>float</td>
<td>N</td>
<td>老股东配售超额认购倍数</td>
</tr>
<tr>
<td>offl_size</td>
<td>float</td>
<td>Y</td>
<td>网下发行总额(张)</td>
</tr>
<tr>
<td>offl_deposit</td>
<td>float</td>
<td>N</td>
<td>网下发行定金比例(%)</td>
</tr>
<tr>
<td>offl_pch_vol</td>
<td>float</td>
<td>N</td>
<td>网下发行有效申购数量(张)</td>
</tr>
<tr>
<td>offl_pch_num</td>
<td>int</td>
<td>N</td>
<td>网下发行有效申购户数</td>
</tr>
<tr>
<td>offl_pch_excess</td>
<td>float</td>
<td>N</td>
<td>网下发行超额认购倍数</td>
</tr>
<tr>
<td>offl_winning_rate</td>
<td>float</td>
<td>N</td>
<td>网下发行中签率</td>
</tr>
<tr>
<td>lead_underwriter</td>
<td>str</td>
<td>N</td>
<td>主承销商</td>
</tr>
<tr>
<td>lead_underwriter_vol</td>
<td>float</td>
<td>N</td>
<td>主承销商包销数量(张)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
#获取可转债发行数据
df = pro.cb_issue(ann_date='20190612')
#获取可转债发行数据,自定义字段
df = pro.cb_issue(fields='ts_code,ann_date,issue_size')
```
数据示例
```
ts_code ann_date issue_size
0 110072.SH 20200814 33.7000
1 113600.SH 20200811 5.9500
2 113598.SH 20200729 3.3000
3 113038.SH 20200729 50.0000
4 128125.SZ 20200728 4.5000
.. ... ... ...
489 100009.SH 20000223 13.5000
490 125302.SZ 19990727 15.0000
491 125301.SZ 19980826 2.0000
492 100001.SH 19980730 1.5000
493 125009.SZ None 5.0000
```

View file

@ -0,0 +1,290 @@
# 可转债基础信息
**文档ID**: 185
**原始链接**: https://tushare.pro/document/2?doc_id=185
---
## 可转债基本信息
接口:cb_basic描述:获取可转债基本信息限量:单次最大2000,总量不限制权限:用户需要至少2000积分才可以调取,但有流量控制,5000积分以上频次相对较高,积分越多权限越大,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>转债代码</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>N</td>
<td>上市日期</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>上市地点</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>bond_full_name</td>
<td>str</td>
<td>Y</td>
<td>转债名称</td>
</tr>
<tr>
<td>bond_short_name</td>
<td>str</td>
<td>Y</td>
<td>转债简称</td>
</tr>
<tr>
<td>cb_code</td>
<td>str</td>
<td>Y</td>
<td>转股申报代码</td>
</tr>
<tr>
<td>stk_code</td>
<td>str</td>
<td>Y</td>
<td>正股代码</td>
</tr>
<tr>
<td>stk_short_name</td>
<td>str</td>
<td>Y</td>
<td>正股简称</td>
</tr>
<tr>
<td>maturity</td>
<td>float</td>
<td>Y</td>
<td>发行期限(年)</td>
</tr>
<tr>
<td>par</td>
<td>float</td>
<td>Y</td>
<td>面值</td>
</tr>
<tr>
<td>issue_price</td>
<td>float</td>
<td>Y</td>
<td>发行价格</td>
</tr>
<tr>
<td>issue_size</td>
<td>float</td>
<td>Y</td>
<td>发行总额(元)</td>
</tr>
<tr>
<td>remain_size</td>
<td>float</td>
<td>Y</td>
<td>债券余额(元)</td>
</tr>
<tr>
<td>value_date</td>
<td>str</td>
<td>Y</td>
<td>起息日期</td>
</tr>
<tr>
<td>maturity_date</td>
<td>str</td>
<td>Y</td>
<td>到期日期</td>
</tr>
<tr>
<td>rate_type</td>
<td>str</td>
<td>Y</td>
<td>利率类型</td>
</tr>
<tr>
<td>coupon_rate</td>
<td>float</td>
<td>Y</td>
<td>票面利率(%)</td>
</tr>
<tr>
<td>add_rate</td>
<td>float</td>
<td>Y</td>
<td>补偿利率(%)</td>
</tr>
<tr>
<td>pay_per_year</td>
<td>int</td>
<td>Y</td>
<td>年付息次数</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
<tr>
<td>delist_date</td>
<td>str</td>
<td>Y</td>
<td>摘牌日</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>上市地点</td>
</tr>
<tr>
<td>conv_start_date</td>
<td>str</td>
<td>Y</td>
<td>转股起始日</td>
</tr>
<tr>
<td>conv_end_date</td>
<td>str</td>
<td>Y</td>
<td>转股截止日</td>
</tr>
<tr>
<td>conv_stop_date</td>
<td>str</td>
<td>Y</td>
<td>停止转股日(提前到期)</td>
</tr>
<tr>
<td>first_conv_price</td>
<td>float</td>
<td>Y</td>
<td>初始转股价</td>
</tr>
<tr>
<td>conv_price</td>
<td>float</td>
<td>Y</td>
<td>最新转股价</td>
</tr>
<tr>
<td>rate_clause</td>
<td>str</td>
<td>Y</td>
<td>利率说明</td>
</tr>
<tr>
<td>put_clause</td>
<td>str</td>
<td>N</td>
<td>赎回条款</td>
</tr>
<tr>
<td>maturity_put_price</td>
<td>str</td>
<td>N</td>
<td>到期赎回价格(含税)</td>
</tr>
<tr>
<td>call_clause</td>
<td>str</td>
<td>N</td>
<td>回售条款</td>
</tr>
<tr>
<td>reset_clause</td>
<td>str</td>
<td>N</td>
<td>特别向下修正条款</td>
</tr>
<tr>
<td>conv_clause</td>
<td>str</td>
<td>N</td>
<td>转股条款</td>
</tr>
<tr>
<td>guarantor</td>
<td>str</td>
<td>N</td>
<td>担保人</td>
</tr>
<tr>
<td>guarantee_type</td>
<td>str</td>
<td>N</td>
<td>担保方式</td>
</tr>
<tr>
<td>issue_rating</td>
<td>str</td>
<td>N</td>
<td>发行信用等级</td>
</tr>
<tr>
<td>newest_rating</td>
<td>str</td>
<td>N</td>
<td>最新信用等级</td>
</tr>
<tr>
<td>rating_comp</td>
<td>str</td>
<td>N</td>
<td>最新评级机构</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api(your token)
#获取可转债基础信息列表
df = pro.cb_basic(fields="ts_code,bond_short_name,stk_code,stk_short_name,list_date,delist_date")
```
数据示例
```
ts_code bond_short_name stk_code stk_short_name list_date delist_date
0 125002.SZ 万科转债 000002.SZ 万科A 2002-06-28 2004-04-30
1 125009.SZ 宝安转券 000009.SZ 中国宝安 1993-02-10 1996-01-01
2 125069.SZ 侨城转债 000069.SZ 华侨城A 2004-01-16 2005-04-29
3 125301.SZ 丝绸转债 000301.SZ 东方盛虹 1998-09-15 2003-08-28
4 126301.SZ 丝绸转2 000301.SZ 东方盛虹 2002-09-24 2006-09-18
```

View file

@ -0,0 +1,624 @@
# 可转债技术面因子(专业版)
**文档ID**: 392
**原始链接**: https://tushare.pro/document/2?doc_id=392
---
## 可转债技术因子(专业版)
接口:cb_factor_pro描述:获取可转债每日技术面因子数据,用于跟踪可转债当前走势情况,数据由Tushare社区自产,覆盖全历史;输出参数_bfq表示不复权,_qfq表示前复权 _hfq表示后复权,描述中说明了因子的默认传参,如需要特殊参数或者更多因子可以联系管理员评估限量:单次调取最多返回10000条数据,可以通过日期参数循环积分:5000积分每分钟可以请求30次,8000积分以上每分钟500次,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>可转债代码</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨收价</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌额</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅 (未复权,如果是复权请用 通用行情接口 )</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量 (手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额(万元)</td>
</tr>
<tr>
<td>asi_bfq</td>
<td>float</td>
<td>Y</td>
<td>振动升降指标-OPEN, CLOSE, HIGH, LOW, M1=26, M2=10</td>
</tr>
<tr>
<td>asit_bfq</td>
<td>float</td>
<td>Y</td>
<td>振动升降指标-OPEN, CLOSE, HIGH, LOW, M1=26, M2=10</td>
</tr>
<tr>
<td>atr_bfq</td>
<td>float</td>
<td>Y</td>
<td>真实波动N日平均值-CLOSE, HIGH, LOW, N=20</td>
</tr>
<tr>
<td>bbi_bfq</td>
<td>float</td>
<td>Y</td>
<td>BBI多空指标-CLOSE, M1=3, M2=6, M3=12, M4=20</td>
</tr>
<tr>
<td>bias1_bfq</td>
<td>float</td>
<td>Y</td>
<td>BIAS乖离率-CLOSE, L1=6, L2=12, L3=24</td>
</tr>
<tr>
<td>bias2_bfq</td>
<td>float</td>
<td>Y</td>
<td>BIAS乖离率-CLOSE, L1=6, L2=12, L3=24</td>
</tr>
<tr>
<td>bias3_bfq</td>
<td>float</td>
<td>Y</td>
<td>BIAS乖离率-CLOSE, L1=6, L2=12, L3=24</td>
</tr>
<tr>
<td>boll_lower_bfq</td>
<td>float</td>
<td>Y</td>
<td>BOLL指标,布林带-CLOSE, N=20, P=2</td>
</tr>
<tr>
<td>boll_mid_bfq</td>
<td>float</td>
<td>Y</td>
<td>BOLL指标,布林带-CLOSE, N=20, P=2</td>
</tr>
<tr>
<td>boll_upper_bfq</td>
<td>float</td>
<td>Y</td>
<td>BOLL指标,布林带-CLOSE, N=20, P=2</td>
</tr>
<tr>
<td>brar_ar_bfq</td>
<td>float</td>
<td>Y</td>
<td>BRAR情绪指标-OPEN, CLOSE, HIGH, LOW, M1=26</td>
</tr>
<tr>
<td>brar_br_bfq</td>
<td>float</td>
<td>Y</td>
<td>BRAR情绪指标-OPEN, CLOSE, HIGH, LOW, M1=26</td>
</tr>
<tr>
<td>cci_bfq</td>
<td>float</td>
<td>Y</td>
<td>顺势指标又叫CCI指标-CLOSE, HIGH, LOW, N=14</td>
</tr>
<tr>
<td>cr_bfq</td>
<td>float</td>
<td>Y</td>
<td>CR价格动量指标-CLOSE, HIGH, LOW, N=20</td>
</tr>
<tr>
<td>dfma_dif_bfq</td>
<td>float</td>
<td>Y</td>
<td>平行线差指标-CLOSE, N1=10, N2=50, M=10</td>
</tr>
<tr>
<td>dfma_difma_bfq</td>
<td>float</td>
<td>Y</td>
<td>平行线差指标-CLOSE, N1=10, N2=50, M=10</td>
</tr>
<tr>
<td>dmi_adx_bfq</td>
<td>float</td>
<td>Y</td>
<td>动向指标-CLOSE, HIGH, LOW, M1=14, M2=6</td>
</tr>
<tr>
<td>dmi_adxr_bfq</td>
<td>float</td>
<td>Y</td>
<td>动向指标-CLOSE, HIGH, LOW, M1=14, M2=6</td>
</tr>
<tr>
<td>dmi_mdi_bfq</td>
<td>float</td>
<td>Y</td>
<td>动向指标-CLOSE, HIGH, LOW, M1=14, M2=6</td>
</tr>
<tr>
<td>dmi_pdi_bfq</td>
<td>float</td>
<td>Y</td>
<td>动向指标-CLOSE, HIGH, LOW, M1=14, M2=6</td>
</tr>
<tr>
<td>downdays</td>
<td>float</td>
<td>Y</td>
<td>连跌天数</td>
</tr>
<tr>
<td>updays</td>
<td>float</td>
<td>Y</td>
<td>连涨天数</td>
</tr>
<tr>
<td>dpo_bfq</td>
<td>float</td>
<td>Y</td>
<td>区间震荡线-CLOSE, M1=20, M2=10, M3=6</td>
</tr>
<tr>
<td>madpo_bfq</td>
<td>float</td>
<td>Y</td>
<td>区间震荡线-CLOSE, M1=20, M2=10, M3=6</td>
</tr>
<tr>
<td>ema_bfq_10</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=10</td>
</tr>
<tr>
<td>ema_bfq_20</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=20</td>
</tr>
<tr>
<td>ema_bfq_250</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=250</td>
</tr>
<tr>
<td>ema_bfq_30</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=30</td>
</tr>
<tr>
<td>ema_bfq_5</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=5</td>
</tr>
<tr>
<td>ema_bfq_60</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=60</td>
</tr>
<tr>
<td>ema_bfq_90</td>
<td>float</td>
<td>Y</td>
<td>指数移动平均-N=90</td>
</tr>
<tr>
<td>emv_bfq</td>
<td>float</td>
<td>Y</td>
<td>简易波动指标-HIGH, LOW, VOL, N=14, M=9</td>
</tr>
<tr>
<td>maemv_bfq</td>
<td>float</td>
<td>Y</td>
<td>简易波动指标-HIGH, LOW, VOL, N=14, M=9</td>
</tr>
<tr>
<td>expma_12_bfq</td>
<td>float</td>
<td>Y</td>
<td>EMA指数平均数指标-CLOSE, N1=12, N2=50</td>
</tr>
<tr>
<td>expma_50_bfq</td>
<td>float</td>
<td>Y</td>
<td>EMA指数平均数指标-CLOSE, N1=12, N2=50</td>
</tr>
<tr>
<td>kdj_bfq</td>
<td>float</td>
<td>Y</td>
<td>KDJ指标-CLOSE, HIGH, LOW, N=9, M1=3, M2=3</td>
</tr>
<tr>
<td>kdj_d_bfq</td>
<td>float</td>
<td>Y</td>
<td>KDJ指标-CLOSE, HIGH, LOW, N=9, M1=3, M2=3</td>
</tr>
<tr>
<td>kdj_k_bfq</td>
<td>float</td>
<td>Y</td>
<td>KDJ指标-CLOSE, HIGH, LOW, N=9, M1=3, M2=3</td>
</tr>
<tr>
<td>ktn_down_bfq</td>
<td>float</td>
<td>Y</td>
<td>肯特纳交易通道, N选20日,ATR选10日-CLOSE, HIGH, LOW, N=20, M=10</td>
</tr>
<tr>
<td>ktn_mid_bfq</td>
<td>float</td>
<td>Y</td>
<td>肯特纳交易通道, N选20日,ATR选10日-CLOSE, HIGH, LOW, N=20, M=10</td>
</tr>
<tr>
<td>ktn_upper_bfq</td>
<td>float</td>
<td>Y</td>
<td>肯特纳交易通道, N选20日,ATR选10日-CLOSE, HIGH, LOW, N=20, M=10</td>
</tr>
<tr>
<td>lowdays</td>
<td>float</td>
<td>Y</td>
<td>LOWRANGE(LOW)表示当前最低价是近多少周期内最低价的最小值</td>
</tr>
<tr>
<td>topdays</td>
<td>float</td>
<td>Y</td>
<td>TOPRANGE(HIGH)表示当前最高价是近多少周期内最高价的最大值</td>
</tr>
<tr>
<td>ma_bfq_10</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=10</td>
</tr>
<tr>
<td>ma_bfq_20</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=20</td>
</tr>
<tr>
<td>ma_bfq_250</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=250</td>
</tr>
<tr>
<td>ma_bfq_30</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=30</td>
</tr>
<tr>
<td>ma_bfq_5</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=5</td>
</tr>
<tr>
<td>ma_bfq_60</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=60</td>
</tr>
<tr>
<td>ma_bfq_90</td>
<td>float</td>
<td>Y</td>
<td>简单移动平均-N=90</td>
</tr>
<tr>
<td>macd_bfq</td>
<td>float</td>
<td>Y</td>
<td>MACD指标-CLOSE, SHORT=12, LONG=26, M=9</td>
</tr>
<tr>
<td>macd_dea_bfq</td>
<td>float</td>
<td>Y</td>
<td>MACD指标-CLOSE, SHORT=12, LONG=26, M=9</td>
</tr>
<tr>
<td>macd_dif_bfq</td>
<td>float</td>
<td>Y</td>
<td>MACD指标-CLOSE, SHORT=12, LONG=26, M=9</td>
</tr>
<tr>
<td>mass_bfq</td>
<td>float</td>
<td>Y</td>
<td>梅斯线-HIGH, LOW, N1=9, N2=25, M=6</td>
</tr>
<tr>
<td>ma_mass_bfq</td>
<td>float</td>
<td>Y</td>
<td>梅斯线-HIGH, LOW, N1=9, N2=25, M=6</td>
</tr>
<tr>
<td>mfi_bfq</td>
<td>float</td>
<td>Y</td>
<td>MFI指标是成交量的RSI指标-CLOSE, HIGH, LOW, VOL, N=14</td>
</tr>
<tr>
<td>mtm_bfq</td>
<td>float</td>
<td>Y</td>
<td>动量指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>mtmma_bfq</td>
<td>float</td>
<td>Y</td>
<td>动量指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>obv_bfq</td>
<td>float</td>
<td>Y</td>
<td>能量潮指标-CLOSE, VOL</td>
</tr>
<tr>
<td>psy_bfq</td>
<td>float</td>
<td>Y</td>
<td>投资者对股市涨跌产生心理波动的情绪指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>psyma_bfq</td>
<td>float</td>
<td>Y</td>
<td>投资者对股市涨跌产生心理波动的情绪指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>roc_bfq</td>
<td>float</td>
<td>Y</td>
<td>变动率指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>maroc_bfq</td>
<td>float</td>
<td>Y</td>
<td>变动率指标-CLOSE, N=12, M=6</td>
</tr>
<tr>
<td>rsi_bfq_12</td>
<td>float</td>
<td>Y</td>
<td>RSI指标-CLOSE, N=12</td>
</tr>
<tr>
<td>rsi_bfq_24</td>
<td>float</td>
<td>Y</td>
<td>RSI指标-CLOSE, N=24</td>
</tr>
<tr>
<td>rsi_bfq_6</td>
<td>float</td>
<td>Y</td>
<td>RSI指标-CLOSE, N=6</td>
</tr>
<tr>
<td>taq_down_bfq</td>
<td>float</td>
<td>Y</td>
<td>唐安奇通道(海龟)交易指标-HIGH, LOW, 20</td>
</tr>
<tr>
<td>taq_mid_bfq</td>
<td>float</td>
<td>Y</td>
<td>唐安奇通道(海龟)交易指标-HIGH, LOW, 20</td>
</tr>
<tr>
<td>taq_up_bfq</td>
<td>float</td>
<td>Y</td>
<td>唐安奇通道(海龟)交易指标-HIGH, LOW, 20</td>
</tr>
<tr>
<td>trix_bfq</td>
<td>float</td>
<td>Y</td>
<td>三重指数平滑平均线-CLOSE, M1=12, M2=20</td>
</tr>
<tr>
<td>trma_bfq</td>
<td>float</td>
<td>Y</td>
<td>三重指数平滑平均线-CLOSE, M1=12, M2=20</td>
</tr>
<tr>
<td>vr_bfq</td>
<td>float</td>
<td>Y</td>
<td>VR容量比率-CLOSE, VOL, M1=26</td>
</tr>
<tr>
<td>wr_bfq</td>
<td>float</td>
<td>Y</td>
<td>W&amp;R 威廉指标-CLOSE, HIGH, LOW, N=10, N1=6</td>
</tr>
<tr>
<td>wr1_bfq</td>
<td>float</td>
<td>Y</td>
<td>W&amp;R 威廉指标-CLOSE, HIGH, LOW, N=10, N1=6</td>
</tr>
<tr>
<td>xsii_td1_bfq</td>
<td>float</td>
<td>Y</td>
<td>薛斯通道II-CLOSE, HIGH, LOW, N=102, M=7</td>
</tr>
<tr>
<td>xsii_td2_bfq</td>
<td>float</td>
<td>Y</td>
<td>薛斯通道II-CLOSE, HIGH, LOW, N=102, M=7</td>
</tr>
<tr>
<td>xsii_td3_bfq</td>
<td>float</td>
<td>Y</td>
<td>薛斯通道II-CLOSE, HIGH, LOW, N=102, M=7</td>
</tr>
<tr>
<td>xsii_td4_bfq</td>
<td>float</td>
<td>Y</td>
<td>薛斯通道II-CLOSE, HIGH, LOW, N=102, M=7</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取鹤21转债113632.SH所以有历史因子数据
df = pro.cb_factor_pro(ts_code=113632.SH')
#获取交易日期为20250724当天所有可转债的因子数据
df = pro.hk_income(trade_date='20250724')
```
数据样例
```
ts_code trade_date open ... xsii_td2_bfq xsii_td3_bfq xsii_td4_bfq
0 113632.SH 20250724 129.050 ... 125.93711 133.15621 115.73390
1 113632.SH 20250723 129.323 ... 125.15884 132.97290 115.57458
2 113632.SH 20250722 128.783 ... 124.46147 132.83027 115.45061
3 113632.SH 20250721 126.404 ... 123.75651 132.68214 115.32186
4 113632.SH 20250718 126.229 ... 123.16743 132.56631 115.22119
.. ... ... ... ... ... ... ...
873 113632.SH 20211215 130.950 ... 128.94497 139.66710 121.39290
874 113632.SH 20211214 131.010 ... NaN 140.18070 121.83930
875 113632.SH 20211213 133.890 ... NaN 141.11160 122.64840
876 113632.SH 20211210 129.990 ... NaN 143.65820 124.86180
877 113632.SH 20211209 127.000 ... NaN 140.12720 121.79280
```

View file

@ -0,0 +1,99 @@
# 可转债票面利率
**文档ID**: 305
**原始链接**: https://tushare.pro/document/2?doc_id=305
---
## 可转债票面利率
接口:cb_rate描述:获取可转债票面利率限量:单次最大2000,总量不限制权限:用户需要至少5000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码,支持多值输入</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>rate_freq</td>
<td>int</td>
<td>N</td>
<td>付息频率(次/年)</td>
</tr>
<tr>
<td>rate_start_date</td>
<td>str</td>
<td>N</td>
<td>付息开始日期</td>
</tr>
<tr>
<td>rate_end_date</td>
<td>str</td>
<td>N</td>
<td>付息结束日期</td>
</tr>
<tr>
<td>coupon_rate</td>
<td>float</td>
<td>N</td>
<td>票面利率(%)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api(your token)
#获取可转债基础信息列表
df = pro.cb_rate(ts_code='123046.SZ,127064.SZ',fields="ts_code,rate_freq,rate_start_date,rate_end_date,coupon_rate")
```
数据示例
```
ts_code rate_freq rate_start_date rate_end_date coupon_rate
0 123046.SZ 1 20200319 20210318 0.500000
1 123046.SZ 1 20210319 20220318 0.700000
2 123046.SZ 1 20220319 20230318 1.000000
3 123046.SZ 1 20230319 20240318 1.500000
4 123046.SZ 1 20240319 20250318 2.500000
5 123046.SZ 1 20250319 20260318 3.000000
6 127064.SZ 1 20220519 20230518 0.200000
7 127064.SZ 1 20230519 20240518 0.400000
8 127064.SZ 1 20240519 20250518 0.600000
9 127064.SZ 1 20250519 20260518 1.500000
10 127064.SZ 1 20260519 20270518 1.800000
11 127064.SZ 1 20270519 20280518 2.000000
```

View file

@ -0,0 +1,212 @@
# 可转债行情
**文档ID**: 187
**原始链接**: https://tushare.pro/document/2?doc_id=187
---
## 可转债行情
接口:cb_daily描述:获取可转债行情限量:单次最大2000条,可多次提取,总量不限制积分:用户需要至少2000积分才可以调取,5000积分以上频次相对较高,积分越多权限越大,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨收盘价(元)</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘价(元)</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高价(元)</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低价(元)</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘价(元)</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌(元)</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅(%)</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量(手)</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>成交金额(万元)</td>
</tr>
<tr>
<td>bond_value</td>
<td>float</td>
<td>N</td>
<td>纯债价值</td>
</tr>
<tr>
<td>bond_over_rate</td>
<td>float</td>
<td>N</td>
<td>纯债溢价率(%)</td>
</tr>
<tr>
<td>cb_value</td>
<td>float</td>
<td>N</td>
<td>转股价值</td>
</tr>
<tr>
<td>cb_over_rate</td>
<td>float</td>
<td>N</td>
<td>转股溢价率(%)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
#获取可转债行情
df = pro.cb_daily(trade_date='20190719', fields='ts_code,trade_date, pre_close,open,high,low,close')
```
数据示例
```
ts_code trade_date pre_close open high low close \
0 110030.SH 20190719 104.700 104.710 104.960 104.540 104.660
1 113008.SH 20190719 112.600 113.390 113.600 112.800 113.200
2 110031.SH 20190719 107.500 107.500 107.940 107.380 107.520
3 123001.SZ 20190719 114.300 115.500 120.780 114.884 118.879
4 110033.SH 20190719 111.910 111.640 112.500 111.640 112.200
5 110034.SH 20190719 102.360 102.230 102.500 102.230 102.320
6 113009.SH 20190719 107.500 108.000 108.200 107.790 107.800
7 128010.SZ 20190719 100.900 100.900 101.300 100.897 101.000
8 128012.SZ 20190719 97.021 97.013 97.200 97.007 97.029
9 127003.SZ 20190719 101.850 101.850 102.896 101.850 102.399
10 128013.SZ 20190719 96.500 96.307 96.647 96.306 96.500
11 113011.SH 20190719 109.680 109.780 110.990 109.780 110.530
12 113012.SH 20190719 101.330 101.710 103.000 101.590 101.810
13 128014.SZ 20190719 97.000 97.498 97.498 97.103 97.158
14 127004.SZ 20190719 92.252 92.256 92.450 92.256 92.262
15 128015.SZ 20190719 92.799 92.799 93.060 92.790 92.920
16 113013.SH 20190719 113.840 113.860 114.770 113.860 114.060
17 128016.SZ 20190719 114.000 114.125 114.742 112.021 113.800
18 113014.SH 20190719 96.910 96.790 97.230 96.780 96.880
19 128017.SZ 20190719 109.501 109.501 111.880 109.011 109.501
20 113015.SH 20190719 130.070 131.500 132.800 130.000 131.250
change pct_chg vol amount
0 -0.040 -0.0382 3576.0 374.1486
1 0.600 0.5329 5347.0 605.9335
2 0.020 0.0186 16.0 1.7213
3 4.579 4.0061 85105.8 10134.7401
4 0.290 0.2591 5453.0 611.6870
5 -0.040 -0.0391 3330.0 340.9462
6 0.300 0.2791 9004.0 972.8459
7 0.100 0.0991 2037.3 205.7750
8 0.008 0.0082 4909.5 476.4216
9 0.549 0.5390 3961.0 405.5685
10 0.000 0.0000 6175.4 596.0637
11 0.850 0.7750 140352.0 15524.5109
12 0.480 0.4737 2005.0 204.9667
13 0.158 0.1629 174.0 16.9261
14 0.010 0.0108 3853.0 355.7765
15 0.121 0.1304 9438.1 877.6806
16 0.220 0.1933 19904.0 2278.7127
17 -0.200 -0.1754 21462.9 2434.8231
18 -0.030 -0.0310 1750.0 169.4889
19 0.000 0.0000 364.2 40.3436
20 1.180 0.9072 30730.0 4047.7157
```

View file

@ -0,0 +1,153 @@
# 可转债赎回信息
**文档ID**: 269
**原始链接**: https://tushare.pro/document/2?doc_id=269
---
## 可转债赎回信息
接口:cb_call,可以通过数据工具调试和查看数据。描述:获取可转债到期赎回、强制赎回等信息。数据来源于公开披露渠道,供个人和机构研究使用,请不要用于数据商业目的。限量:单次最大2000条数据,可以根据日期循环提取,本接口需5000积分。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>转债代码,支持多值输入</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>N</td>
<td>公告日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>call_type</td>
<td>str</td>
<td>Y</td>
<td>赎回类型:到赎、强赎</td>
</tr>
<tr>
<td>is_call</td>
<td>str</td>
<td>Y</td>
<td>是否赎回:已满足强赎条件、公告提示强赎、公告实施强赎、公告到期赎回、公告不强赎</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>公告/提示日期</td>
</tr>
<tr>
<td>call_date</td>
<td>str</td>
<td>Y</td>
<td>赎回日期</td>
</tr>
<tr>
<td>call_price</td>
<td>float</td>
<td>Y</td>
<td>赎回价格(含税,元/张)</td>
</tr>
<tr>
<td>call_price_tax</td>
<td>float</td>
<td>Y</td>
<td>赎回价格(扣税,元/张)</td>
</tr>
<tr>
<td>call_vol</td>
<td>float</td>
<td>Y</td>
<td>赎回债券数量(张)</td>
</tr>
<tr>
<td>call_amount</td>
<td>float</td>
<td>Y</td>
<td>赎回金额(万元)</td>
</tr>
<tr>
<td>payment_date</td>
<td>str</td>
<td>Y</td>
<td>行权后款项到账日</td>
</tr>
<tr>
<td>call_reg_date</td>
<td>str</td>
<td>Y</td>
<td>赎回登记日</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api('your token')
#获取可转债行情
df = pro.cb_call(fields='ts_code,call_type,is_call,ann_date,call_date,call_price')
```
数据示例
```
ts_code call_type is_call ann_date call_date call_price
0 123069.SZ 强赎 公告不强赎 20210821 None None
1 113621.SH 强赎 公告不强赎 20210821 None None
2 113528.SH 强赎 公告不强赎 20210821 None None
3 113012.SH 强赎 公告强赎 20210818 20210903 100.6700
4 128113.SZ 强赎 公告不强赎 20210818 None None
.. ... ... ... ... ... ...
466 125069.SZ 强赎 公告强赎 20050429 20050422 101.8000
467 125630.SZ 强赎 公告不强赎 20040624 None None
468 100009.SH 强赎 公告强赎 20040511 20040423 100.1300
469 125002.SZ 强赎 公告强赎 20040430 20040423 101.5000
470 125629.SZ 强赎 公告强赎 20040414 20040406 105.0000
```

View file

@ -0,0 +1,103 @@
# 可转债转股价变动
**文档ID**: 246
**原始链接**: https://tushare.pro/document/2?doc_id=246
---
## 可转债转股价变动
接口:cb_price_chg描述:获取可转债转股价变动限量:单次最大2000,总量不限制权限:本接口需单独开权限(跟积分没关系),具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码,支持多值输入</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码</td>
</tr>
<tr>
<td>bond_short_name</td>
<td>str</td>
<td>Y</td>
<td>转债简称</td>
</tr>
<tr>
<td>publish_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期</td>
</tr>
<tr>
<td>change_date</td>
<td>str</td>
<td>Y</td>
<td>变动日期</td>
</tr>
<tr>
<td>convert_price_initial</td>
<td>float</td>
<td>Y</td>
<td>初始转股价格</td>
</tr>
<tr>
<td>convertprice_bef</td>
<td>float</td>
<td>Y</td>
<td>修正前转股价格</td>
</tr>
<tr>
<td>convertprice_aft</td>
<td>float</td>
<td>Y</td>
<td>修正后转股价格</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api(your token)
#获取可转债转股价变动
df = pro.cb_price_chg(ts_code="113556.SH,128114.SZ,128110.SZ",fields="ts_code,bond_short_name,change_date,convert_price_initial,convertprice_bef,convertprice_aft")
```
数据示例
```
ts_code bond_short_name change_date convert_price_initial convertprice_bef convertprice_aft
0 113556.SH 至纯转债 20191220 29.4700 None None
1 113556.SH 至纯转债 20200629 29.4700 29.4700 29.3800
2 128110.SZ 永兴转债 20200609 17.1600 None None
3 128114.SZ 正邦转债 20200617 16.0900 None None
```

View file

@ -0,0 +1,176 @@
# 可转债转股结果
**文档ID**: 247
**原始链接**: https://tushare.pro/document/2?doc_id=247
---
## 可转债转股结果
接口:cb_share描述:获取可转债转股结果限量:单次最大2000,总量不限制权限:用户需要至少2000积分才可以调取,但有流量控制,5000积分以上频次相对较高,积分越多权限越大,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>转债代码,支持多值输入</td>
</tr>
<tr>
<td>ann_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>公告开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>公告结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>债券代码</td>
</tr>
<tr>
<td>bond_short_name</td>
<td>str</td>
<td>Y</td>
<td>债券简称</td>
</tr>
<tr>
<td>publish_date</td>
<td>str</td>
<td>Y</td>
<td>公告日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>统计截止日期</td>
</tr>
<tr>
<td>issue_size</td>
<td>float</td>
<td>Y</td>
<td>可转债发行总额</td>
</tr>
<tr>
<td>convert_price_initial</td>
<td>float</td>
<td>Y</td>
<td>初始转换价格</td>
</tr>
<tr>
<td>convert_price</td>
<td>float</td>
<td>Y</td>
<td>本次转换价格</td>
</tr>
<tr>
<td>convert_val</td>
<td>float</td>
<td>Y</td>
<td>本次转股金额</td>
</tr>
<tr>
<td>convert_vol</td>
<td>float</td>
<td>Y</td>
<td>本次转股数量</td>
</tr>
<tr>
<td>convert_ratio</td>
<td>float</td>
<td>Y</td>
<td>本次转股比例</td>
</tr>
<tr>
<td>acc_convert_val</td>
<td>float</td>
<td>Y</td>
<td>累计转股金额</td>
</tr>
<tr>
<td>acc_convert_vol</td>
<td>float</td>
<td>Y</td>
<td>累计转股数量</td>
</tr>
<tr>
<td>acc_convert_ratio</td>
<td>float</td>
<td>Y</td>
<td>累计转股比例</td>
</tr>
<tr>
<td>remain_size</td>
<td>float</td>
<td>Y</td>
<td>可转债剩余金额</td>
</tr>
<tr>
<td>total_shares</td>
<td>float</td>
<td>Y</td>
<td>转股后总股本</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api(your token)
#获取可转债转股结果
df = pro.cb_share(ts_code="113001.SH,110027.SH",fields="ts_code,end_date,convert_price,convert_val,convert_ratio,acc_convert_ratio")
```
数据示例
```
ts_code end_date convert_price convert_val convert_ratio acc_convert_ratio
0 110027.SH 2015-02-16 12.0000 117572928.00 2.939323 99.9126
1 110027.SH 2015-02-13 12.0000 521211288.00 13.030282 96.9733
2 110027.SH 2015-02-12 12.0000 486077580.00 12.151940 83.9430
3 110027.SH 2015-02-11 12.0000 304362204.00 7.609055 71.7910
4 110027.SH 2015-02-10 12.0000 334752476.00 8.368812 64.1820
.. ... ... ... ... ... ...
244 113001.SH 2010-12-10 3.7800 5998.86 0.000015 0.0002
245 113001.SH 2010-12-09 3.7800 5998.86 0.000015 0.0002
246 113001.SH 2010-12-06 3.7800 18994.50 0.000047 0.0002
247 113001.SH 2010-12-03 3.7800 12991.86 0.000032 0.0001
248 113001.SH 2010-12-02 3.7800 33982.20 0.000085 0.0001
```

View file

@ -0,0 +1,395 @@
# 台湾电子产业月营收
**文档ID**: 88
**原始链接**: https://tushare.pro/document/2?doc_id=88
---
## 台湾电子产业月营收
接口:tmt_twincome描述:获取台湾TMT电子产业领域各类产品月度营收数据。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>报告期</td>
</tr>
<tr>
<td>item</td>
<td>str</td>
<td>Y</td>
<td>产品代码</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>报告期开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>报告期结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>报告期</td>
</tr>
<tr>
<td>item</td>
<td>str</td>
<td>产品代码</td>
</tr>
<tr>
<td>op_income</td>
<td>str</td>
<td>月度收入</td>
</tr>
</tbody></table>
由于服务器压力,单次最多获取30个月数据,后续再逐步全部开放,目前可根据日期范围多次获取数据。
调用代码示例
```
pro = ts.pro_api()
#获取PCB月度营收
df = pro.tmt_twincome(item='8')
#获取PCB月度营收(20120101-20181010)
df = pro.tmt_twincome(item='8', start_date='20120101', end_date='20181010')
```
数据样例
```
date item op_income
0 20180731 8 35144753.0
1 20180629 8 30940090.0
2 20180531 8 30982240.0
3 20180430 8 30431976.0
4 20180331 8 29491108.0
5 20180227 8 24700223.0
6 20180131 8 32962014.0
7 20171229 8 32850818.0
8 20171130 8 34436396.0
9 20171031 8 33331667.0
10 20170930 8 34220623.0
11 20170831 8 32621006.0
12 20170731 8 30284562.0
13 20170630 8 29003264.0
14 20170531 8 28382449.0
15 20170428 8 27140270.0
16 20170331 8 29015642.0
17 20170224 8 26508381.0
18 20170124 8 26927481.0
19 20161230 8 29784865.0
20 20161130 8 31234845.0
21 20161031 8 30305625.0
22 20160930 8 30523650.0
23 20160831 8 30600923.0
24 20160729 8 29066800.0
25 20160630 8 27350576.0
26 20160531 8 27752376.0
27 20160429 8 26664433.0
28 20160331 8 27428746.0
29 20160226 8 22218229.0
```
产品代码列表
<table>
<thead>
<tr>
<th>TS代码</th>
<th>类别名称</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>PC</td>
</tr>
<tr>
<td>2</td>
<td>NB</td>
</tr>
<tr>
<td>3</td>
<td>主机板</td>
</tr>
<tr>
<td>4</td>
<td>印刷电路板</td>
</tr>
<tr>
<td>5</td>
<td>IC载板</td>
</tr>
<tr>
<td>6</td>
<td>PCB组装</td>
</tr>
<tr>
<td>7</td>
<td>软板</td>
</tr>
<tr>
<td>8</td>
<td>PCB</td>
</tr>
<tr>
<td>9</td>
<td>PCB原料</td>
</tr>
<tr>
<td>10</td>
<td>铜箔基板</td>
</tr>
<tr>
<td>11</td>
<td>玻纤纱布</td>
</tr>
<tr>
<td>12</td>
<td>FCCL</td>
</tr>
<tr>
<td>13</td>
<td>显示卡</td>
</tr>
<tr>
<td>14</td>
<td>绘图卡</td>
</tr>
<tr>
<td>15</td>
<td>电视卡</td>
</tr>
<tr>
<td>16</td>
<td>泛工业电脑</td>
</tr>
<tr>
<td>17</td>
<td>POS</td>
</tr>
<tr>
<td>18</td>
<td>工业电脑</td>
</tr>
<tr>
<td>19</td>
<td>光电IO</td>
</tr>
<tr>
<td>20</td>
<td>监视器</td>
</tr>
<tr>
<td>21</td>
<td>扫描器</td>
</tr>
<tr>
<td>22</td>
<td>PC周边</td>
</tr>
<tr>
<td>23</td>
<td>储存媒体</td>
</tr>
<tr>
<td>24</td>
<td>光碟</td>
</tr>
<tr>
<td>25</td>
<td>硬盘磁盘</td>
</tr>
<tr>
<td>26</td>
<td>发光二极体</td>
</tr>
<tr>
<td>27</td>
<td>太阳能</td>
</tr>
<tr>
<td>28</td>
<td>LCD面板</td>
</tr>
<tr>
<td>29</td>
<td>背光模组</td>
</tr>
<tr>
<td>30</td>
<td>LCD原料</td>
</tr>
<tr>
<td>31</td>
<td>LCD其它</td>
</tr>
<tr>
<td>32</td>
<td>触控面板</td>
</tr>
<tr>
<td>33</td>
<td>监控系统</td>
</tr>
<tr>
<td>34</td>
<td>其它光电</td>
</tr>
<tr>
<td>35</td>
<td>电子零组件</td>
</tr>
<tr>
<td>36</td>
<td>二极体整流</td>
</tr>
<tr>
<td>37</td>
<td>连接器</td>
</tr>
<tr>
<td>38</td>
<td>电源供应器</td>
</tr>
<tr>
<td>39</td>
<td>机壳</td>
</tr>
<tr>
<td>40</td>
<td>被动元件</td>
</tr>
<tr>
<td>41</td>
<td>石英元件</td>
</tr>
<tr>
<td>42</td>
<td>3C二次电源</td>
</tr>
<tr>
<td>43</td>
<td>网路设备</td>
</tr>
<tr>
<td>44</td>
<td>数据机</td>
</tr>
<tr>
<td>45</td>
<td>网路卡</td>
</tr>
<tr>
<td>46</td>
<td>半导体</td>
</tr>
<tr>
<td>47</td>
<td>晶圆制造</td>
</tr>
<tr>
<td>48</td>
<td>IC封测</td>
</tr>
<tr>
<td>49</td>
<td>特用IC</td>
</tr>
<tr>
<td>50</td>
<td>记忆体模组</td>
</tr>
<tr>
<td>51</td>
<td>晶圆材料</td>
</tr>
<tr>
<td>52</td>
<td>IC设计</td>
</tr>
<tr>
<td>53</td>
<td>IC光罩</td>
</tr>
<tr>
<td>54</td>
<td>电子设备</td>
</tr>
<tr>
<td>55</td>
<td>手机</td>
</tr>
<tr>
<td>56</td>
<td>通讯设备</td>
</tr>
<tr>
<td>57</td>
<td>电信业</td>
</tr>
<tr>
<td>58</td>
<td>网路服务</td>
</tr>
<tr>
<td>59</td>
<td>卫星通讯</td>
</tr>
<tr>
<td>60</td>
<td>光纤通讯</td>
</tr>
<tr>
<td>61</td>
<td>3C通路</td>
</tr>
<tr>
<td>62</td>
<td>消费性电子</td>
</tr>
<tr>
<td>63</td>
<td>照相机</td>
</tr>
<tr>
<td>64</td>
<td>软件服务</td>
</tr>
<tr>
<td>65</td>
<td>系统整合</td>
</tr>
</tbody></table>

View file

@ -0,0 +1,98 @@
# 各渠道公募基金销售保有规模占比
**文档ID**: 265
**原始链接**: https://tushare.pro/document/2?doc_id=265
---
## 各渠道公募基金销售保有规模占比
接口:fund_sales_ratio描述:获取各渠道公募基金销售保有规模占比数据,年度更新限量:单次最大100行数据,数据从2015年开始公布,当前数据量很小
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>年份</td>
<td>str</td>
<td>N</td>
<td>年度</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>year</td>
<td>int</td>
<td>Y</td>
<td>年度</td>
</tr>
<tr>
<td>bank</td>
<td>float</td>
<td>Y</td>
<td>商业银行(%)</td>
</tr>
<tr>
<td>sec_comp</td>
<td>float</td>
<td>Y</td>
<td>证券公司(%)</td>
</tr>
<tr>
<td>fund_comp</td>
<td>float</td>
<td>Y</td>
<td>基金公司直销(%)</td>
</tr>
<tr>
<td>indep_comp</td>
<td>float</td>
<td>Y</td>
<td>独立基金销售机构(%)</td>
</tr>
<tr>
<td>rests</td>
<td>float</td>
<td>Y</td>
<td>其他(%)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.fund_sales_ratio()
```
数据示例
```
year bank sec_comp fund_comp indep_comp rests
0 2015 25.22 10.01 61.90 2.14 0.73
1 2016 23.43 8.23 65.62 2.24 0.48
2 2017 24.41 6.05 65.38 3.84 0.32
3 2018 24.14 6.41 61.26 7.76 0.42
4 2019 23.59 7.59 57.29 11.03 0.49
```

View file

@ -0,0 +1,192 @@
# 合约信息
**文档ID**: 135
**原始链接**: https://tushare.pro/document/2?doc_id=135
---
## 期货合约信息表
接口:fut_basic描述:获取期货合约列表数据限量:单次最大10000积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所代码 CFFEX-中金所 DCE-大商所 CZCE-郑商所 SHFE-上期所 INE-上海国际能源交易中心 GFEX-广州期货交易所</td>
</tr>
<tr>
<td>fut_type</td>
<td>str</td>
<td>N</td>
<td>合约类型 (1 普通合约 2主力与连续合约 默认取全部)</td>
</tr>
<tr>
<td>fut_code</td>
<td>str</td>
<td>N</td>
<td>标准合约代码,如白银AG、AP鲜苹果等</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>N</td>
<td>上市开始日期(格式YYYYMMDD,从某日开始以来所有合约)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>合约代码</td>
</tr>
<tr>
<td>symbol</td>
<td>str</td>
<td>Y</td>
<td>交易标识</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易市场</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>中文简称</td>
</tr>
<tr>
<td>fut_code</td>
<td>str</td>
<td>Y</td>
<td>合约产品代码</td>
</tr>
<tr>
<td>multiplier</td>
<td>float</td>
<td>Y</td>
<td>合约乘数(只适用于国债期货、指数期货)</td>
</tr>
<tr>
<td>trade_unit</td>
<td>str</td>
<td>Y</td>
<td>交易计量单位</td>
</tr>
<tr>
<td>per_unit</td>
<td>float</td>
<td>Y</td>
<td>交易单位(每手)</td>
</tr>
<tr>
<td>quote_unit</td>
<td>str</td>
<td>Y</td>
<td>报价单位</td>
</tr>
<tr>
<td>quote_unit_desc</td>
<td>str</td>
<td>Y</td>
<td>最小报价单位说明</td>
</tr>
<tr>
<td>d_mode_desc</td>
<td>str</td>
<td>Y</td>
<td>交割方式说明</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
<tr>
<td>delist_date</td>
<td>str</td>
<td>Y</td>
<td>最后交易日期</td>
</tr>
<tr>
<td>d_month</td>
<td>str</td>
<td>Y</td>
<td>交割月份</td>
</tr>
<tr>
<td>last_ddate</td>
<td>str</td>
<td>Y</td>
<td>最后交割日</td>
</tr>
<tr>
<td>trade_time_desc</td>
<td>str</td>
<td>N</td>
<td>交易时间说明</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api('your token')
df = pro.fut_basic(exchange='DCE', fut_type='1', fields='ts_code,symbol,name,list_date,delist_date')
```
数据示例
```
ts_code symbol name list_date delist_date
0 P0805.DCE P0805 棕榈油0805 20071029 20080516
1 P0806.DCE P0806 棕榈油0806 20071029 20080616
2 P0807.DCE P0807 棕榈油0807 20071029 20080714
3 P0808.DCE P0808 棕榈油0808 20071029 20080814
4 P0811.DCE P0811 棕榈油0811 20071115 20081114
5 P0812.DCE P0812 棕榈油0812 20071217 20081212
6 P0901.DCE P0901 棕榈油0901 20080116 20090116
7 P0903.DCE P0903 棕榈油0903 20080317 20090313
8 P0906.DCE P0906 棕榈油0906 20080617 20090612
9 P0908.DCE P0908 棕榈油0908 20080815 20090814
10 P0911.DCE P0911 棕榈油0911 20081117 20091113
11 P1001.DCE P1001 棕榈油1001 20090119 20100115
12 P1002.DCE P1002 棕榈油1002 20090216 20100212
13 P1003.DCE P1003 棕榈油1003 20090316 20100312
14 P1004.DCE P1004 棕榈油1004 20090416 20100415
15 Y0607.DCE Y0607 豆油0607 20060109 20060714
16 Y0611.DCE Y0611 豆油0611 20060118 20061114
17 Y0612.DCE Y0612 豆油0612 20060315 20061214
18 Y0701.DCE Y0701 豆油0701 20060315 20070117
19 Y0708.DCE Y0708 豆油0708 20060815 20070814
20 Y0709.DCE Y0709 豆油0709 20060915 20070914
```

View file

@ -0,0 +1,153 @@
# 同花顺App热榜数
**文档ID**: 320
**原始链接**: https://tushare.pro/document/2?doc_id=320
---
## 同花顺热榜
接口:ths_hot描述:获取同花顺App热榜数据,包括热股、概念板块、ETF、可转债、港美股等等,每日盘中提取4次,收盘后4次,最晚22点提取一次。限量:单次最大2000条,可根据日期等参数循环获取全部数据积分:用户积5000积分可调取使用,积分获取办法请参阅积分获取办法注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系同花顺解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>market</td>
<td>str</td>
<td>N</td>
<td>热榜类型(热股、ETF、可转债、行业板块、概念板块、期货、港股、热基、美股)</td>
</tr>
<tr>
<td>is_new</td>
<td>str</td>
<td>N</td>
<td>是否最新(默认Y,如果为N则为盘中和盘后阶段采集,具体时间可参考rank_time字段,状态N每小时更新一次,状态Y更新时间为22:30)</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>data_type</td>
<td>str</td>
<td>Y</td>
<td>数据类型</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>ts_name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>rank</td>
<td>int</td>
<td>Y</td>
<td>排行</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅%</td>
</tr>
<tr>
<td>current_price</td>
<td>float</td>
<td>Y</td>
<td>当前价格</td>
</tr>
<tr>
<td>concept</td>
<td>str</td>
<td>Y</td>
<td>标签</td>
</tr>
<tr>
<td>rank_reason</td>
<td>str</td>
<td>Y</td>
<td>上榜解读</td>
</tr>
<tr>
<td>hot</td>
<td>float</td>
<td>Y</td>
<td>热度值</td>
</tr>
<tr>
<td>rank_time</td>
<td>str</td>
<td>Y</td>
<td>排行榜获取时间</td>
</tr>
</tbody></table>
接口示例
```
#获取查询月份券商金股
df = pro.ths_hot(trade_date='20240315', market='热股', fields='ts_code,ts_name,hot,concept')
```
数据示例
```
ts_code ts_name hot concept
0 300750.SZ 宁德时代 214462.0 ["钠离子电池", "同花顺漂亮100"]
1 603580.SH 艾艾精工 185431.0 ["人民币贬值受益", "台湾概念股"]
2 002085.SZ 万丰奥威 180332.0 ["飞行汽车(eVTOL)", "低空经济"]
3 600733.SH 北汽蓝谷 156000.0 ["一体化压铸", "华为汽车"]
4 603259.SH 药明康德 154360.0 ["CRO概念", "创新药"]
.. ... ... ... ...
95 300735.SZ 光弘科技 28528.0 ["智能穿戴", "EDR概念"]
96 002632.SZ 道明光学 28101.0 ["AI手机", "消费电子概念"]
97 601086.SH 国芳集团 28006.0 ["新零售", "网络直播"]
98 002406.SZ 远东传动 28003.0 ["工业互联网", "智能制造"]
99 600160.SH 巨化股份 27979.0 ["PVDF概念", "氟化工概念"]
```
数据来源

View file

@ -0,0 +1,170 @@
# 同花顺概念和行业指数行情
**文档ID**: 260
**原始链接**: https://tushare.pro/document/2?doc_id=260
---
## 同花顺板块指数行情
接口:ths_daily描述:获取同花顺板块指数行情。注:数据版权归属同花顺,如做商业用途,请主动联系同花顺,如需帮助请联系微信:waditu_a限量:单次最大3000行数据(需6000积分),可根据指数代码、日期参数循环提取。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>指数代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>TS指数代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>收盘点位</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>开盘点位</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>最高点位</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>最低点位</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>昨日收盘点</td>
</tr>
<tr>
<td>avg_price</td>
<td>float</td>
<td>Y</td>
<td>平均价</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>涨跌点位</td>
</tr>
<tr>
<td>pct_change</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>成交量</td>
</tr>
<tr>
<td>turnover_rate</td>
<td>float</td>
<td>Y</td>
<td>换手率</td>
</tr>
<tr>
<td>total_mv</td>
<td>float</td>
<td>N</td>
<td>总市值</td>
</tr>
<tr>
<td>float_mv</td>
<td>float</td>
<td>N</td>
<td>流通市值</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.ths_daily(ts_code='865001.TI', start_date='20200101', end_date='20210101', fields='ts_code,trade_date,open,close,high,low,pct_change')
```
数据样例
```
ts_code trade_date close open high low pct_change vol
0 865001.TI 20201231 1664.7530 1660.7060 1671.2290 1649.4200 0.5646 13224.260000
1 865001.TI 20201230 1655.4070 1644.5950 1664.2290 1638.1100 0.3073 10815.800000
2 865001.TI 20201229 1650.3360 1686.1620 1686.1620 1639.0530 -1.6263 11763.170000
3 865001.TI 20201228 1677.6190 1682.5670 1689.8980 1667.2110 0.6698 11813.210000
4 865001.TI 20201224 1666.4570 1663.3270 1668.8490 1648.7920 0.6533 6571.630000
.. ... ... ... ... ... ... ... ...
229 865001.TI 20200108 1315.8190 1313.4520 1323.2140 1312.7090 0.2567 33180.860000
230 865001.TI 20200107 1312.4500 1319.8580 1323.1850 1311.2390 -0.6790 20959.510000
231 865001.TI 20200106 1321.4230 1322.8090 1328.0270 1314.8890 -0.5953 21283.400000
232 865001.TI 20200103 1329.3370 1309.6150 1330.6640 1309.2810 0.6505 28610.530000
233 865001.TI 20200102 1320.7460 1342.6220 1343.1260 1308.6630 -1.1273 26149.740000
```

View file

@ -0,0 +1,242 @@
# 同花顺涨跌停榜单
**文档ID**: 355
**原始链接**: https://tushare.pro/document/2?doc_id=355
---
## 涨跌停榜单(同花顺)
接口:limit_list_ths描述:获取同花顺每日涨跌停榜单数据,历史数据从20231101开始提供,增量每天16点左右更新限量:单次最大4000条,可根据日期或股票代码循环提取积分:8000积分以上每分钟500次,每天总量不限制,具体请参阅积分获取办法注意:本接口只限个人学习和研究使用,如需商业用途,请自行联系同花顺解决数据采购问题。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
<tr>
<td>limit_type</td>
<td>str</td>
<td>N</td>
<td>涨停池、连扳池、冲刺涨停、炸板池、跌停池,默认:涨停池</td>
</tr>
<tr>
<td>market</td>
<td>str</td>
<td>N</td>
<td>HS-沪深主板 GEM-创业板 STAR-科创板</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>price</td>
<td>float</td>
<td>Y</td>
<td>收盘价(元)</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>涨跌幅%</td>
</tr>
<tr>
<td>open_num</td>
<td>int</td>
<td>Y</td>
<td>打开次数</td>
</tr>
<tr>
<td>lu_desc</td>
<td>str</td>
<td>Y</td>
<td>涨停原因</td>
</tr>
<tr>
<td>limit_type</td>
<td>str</td>
<td>Y</td>
<td>板单类别</td>
</tr>
<tr>
<td>tag</td>
<td>str</td>
<td>Y</td>
<td>涨停标签</td>
</tr>
<tr>
<td>status</td>
<td>str</td>
<td>Y</td>
<td>涨停状态(N连板、一字板)</td>
</tr>
<tr>
<td>first_lu_time</td>
<td>str</td>
<td>N</td>
<td>首次涨停时间</td>
</tr>
<tr>
<td>last_lu_time</td>
<td>str</td>
<td>N</td>
<td>最后涨停时间</td>
</tr>
<tr>
<td>first_ld_time</td>
<td>str</td>
<td>N</td>
<td>首次跌停时间</td>
</tr>
<tr>
<td>last_ld_time</td>
<td>str</td>
<td>N</td>
<td>最后跌停时间</td>
</tr>
<tr>
<td>limit_order</td>
<td>float</td>
<td>Y</td>
<td>封单量(元</td>
</tr>
<tr>
<td>limit_amount</td>
<td>float</td>
<td>Y</td>
<td>封单额(元</td>
</tr>
<tr>
<td>turnover_rate</td>
<td>float</td>
<td>Y</td>
<td>换手率%</td>
</tr>
<tr>
<td>free_float</td>
<td>float</td>
<td>Y</td>
<td>实际流通(元</td>
</tr>
<tr>
<td>lu_limit_order</td>
<td>float</td>
<td>Y</td>
<td>最大封单(元</td>
</tr>
<tr>
<td>limit_up_suc_rate</td>
<td>float</td>
<td>Y</td>
<td>近一年涨停封板率</td>
</tr>
<tr>
<td>turnover</td>
<td>float</td>
<td>Y</td>
<td>成交额</td>
</tr>
<tr>
<td>rise_rate</td>
<td>float</td>
<td>N</td>
<td>涨速</td>
</tr>
<tr>
<td>sum_float</td>
<td>float</td>
<td>N</td>
<td>总市值(亿元)</td>
</tr>
<tr>
<td>market_type</td>
<td>str</td>
<td>Y</td>
<td>股票类型:HS沪深主板、GEM创业板、STAR科创板</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.limit_list_ths(trade_date='20241125', limit_type='涨停池', fields='ts_code,trade_date,tag,status,lu_desc')
```
数据样例
```
trade_date ts_code lu_desc tag status
0 20241125 603518.SH 服装家纺+电商 首板 换手板
1 20241125 003036.SZ 高端纺织机械设备+近年来收购了2家公司 4天4板 T字板
2 20241125 301268.SZ 精密结构件+华为+光伏+一体化压铸 首板 换手板
3 20241125 603655.SH 橡胶+汽车零部件+间接供货特斯拉 2天2板 换手板
4 20241125 600119.SH 上海国资+产业投资+物流+跨境电商 4天2板 换手板
.. ... ... ... ... ...
149 20241125 002348.SZ 固态电池+玩具+互联网教育 4天2板 一字板
150 20241125 002175.SZ “东方系”+芯片+智能制造+物业管理 4天4板 一字板
151 20241125 002155.SZ 湖南万古金矿田探矿获重大突破 3天3板 一字板
152 20241125 002117.SZ 智能机器人+拟向子公司增资+AI应用 2天2板 一字板
153 20241125 002103.SZ IP产品+广告营销+跨境电商 7天5板 一字板
```

View file

@ -0,0 +1,121 @@
# 同花顺行业概念成分
**文档ID**: 261
**原始链接**: https://tushare.pro/document/2?doc_id=261
---
## 同花顺概念板块成分
接口:ths_member描述:获取同花顺概念板块成分列表注:数据版权归属同花顺,如做商业用途,请主动联系同花顺。限量:用户积累6000积分可调取,每分钟可调取200次,可按概念板块代码循环提取所有成分
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>板块指数代码</td>
</tr>
<tr>
<td>con_code</td>
<td>str</td>
<td>N</td>
<td>股票代码</td>
</tr>
</tbody>
</table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>指数代码</td>
</tr>
<tr>
<td>con_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>con_name</td>
<td>str</td>
<td>Y</td>
<td>股票名称</td>
</tr>
<tr>
<td>weight</td>
<td>float</td>
<td>N</td>
<td>权重(暂无)</td>
</tr>
<tr>
<td>in_date</td>
<td>str</td>
<td>N</td>
<td>纳入日期(暂无)</td>
</tr>
<tr>
<td>out_date</td>
<td>str</td>
<td>N</td>
<td>剔除日期(暂无)</td>
</tr>
<tr>
<td>is_new</td>
<td>str</td>
<td>N</td>
<td>是否最新Y是N否</td>
</tr>
</tbody>
</table>
接口示例
```
pro = ts.pro_api()
df = pro.ths_member(ts_code='885800.TI')
```
数据样例
```
ts_code con_code con_name
0 885800.TI 000016.SZ 深康佳A
1 885800.TI 000049.SZ 德赛电池
2 885800.TI 002008.SZ 大族激光
3 885800.TI 002036.SZ 联创电子
4 885800.TI 002055.SZ 得润电子
.. ... ... ...
87 885800.TI 688127.SH 蓝特光学
88 885800.TI 688157.SH 松井股份
89 885800.TI 688286.SH 敏芯股份
90 885800.TI 688312.SH 燕麦科技
91 885800.TI 688386.SH 泛亚微透
[92 rows x 3 columns]
```

View file

@ -0,0 +1,116 @@
# 同花顺行业概念板块
**文档ID**: 259
**原始链接**: https://tushare.pro/document/2?doc_id=259
---
## 同花顺概念和行业指数
接口:ths_index描述:获取同花顺板块指数。注:数据版权归属同花顺,如做商业用途,请主动联系同花顺,如需帮助请联系微信:waditu_a权限:本接口需有6000积分,单次最大返回5000行数据,一次可提取全部数据,请勿循环提取。
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>指数代码</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>N</td>
<td>市场类型A-a股 HK-港股 US-美股</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>N</td>
<td>指数类型 N-概念指数 I-行业指数 R-地域指数 S-同花顺特色指数 ST-同花顺风格指数 TH-同花顺主题指数 BB-同花顺宽基指数</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>代码</td>
</tr>
<tr>
<td>name</td>
<td>str</td>
<td>Y</td>
<td>名称</td>
</tr>
<tr>
<td>count</td>
<td>int</td>
<td>Y</td>
<td>成分个数</td>
</tr>
<tr>
<td>exchange</td>
<td>str</td>
<td>Y</td>
<td>交易所</td>
</tr>
<tr>
<td>list_date</td>
<td>str</td>
<td>Y</td>
<td>上市日期</td>
</tr>
<tr>
<td>type</td>
<td>str</td>
<td>Y</td>
<td>N概念指数S特色指数</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api()
df = pro.ths_index()
```
数据样例
```
ts_code name count exchange list_date type
0 885835.TI 参股银行 126 A 20190416 N
1 885472.TI 上海自贸区 51 A 20130813 N
2 885788.TI 网络直播 63 A 20180312 N
3 885881.TI 云办公 29 A 20200203 N
4 885785.TI 小米概念 91 A 20180306 N
.. ... ... ... ... ... ...
266 885566.TI 大飞机 58 A 20140519 N
267 885841.TI 草地贪夜蛾防治 18 A 20190517 N
268 885760.TI 装配式建筑 50 A 20170918 N
269 885909.TI 辅助生殖 15 A 20201023 N
270 885883.TI 医疗废物处理 25 A 20200207 N
```

View file

@ -0,0 +1,214 @@
# 周/月线复权行情(每日更新)
**文档ID**: 365
**原始链接**: https://tushare.pro/document/2?doc_id=365
---
## 股票周/月线行情(复权--每日更新)
接口:stk_week_month_adj描述:股票周/月线行情(复权--每日更新)限量:单次最大6000,可使用交易日期循环提取,总量不限制积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:YYYYMMDD,每周或每月最后一天的日期)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始交易日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束交易日期</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>频率week周,month月</td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期(每周五或者月末日期)</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>计算截至日期</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>频率(周week,月month)</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>(周/月)开盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>(周/月)最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>(周/月)最低价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>(周/月)收盘价</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>上一(周/月)收盘价【除权价,前复权】</td>
</tr>
<tr>
<td>open_qfq</td>
<td>float</td>
<td>Y</td>
<td>前复权(周/月)开盘价</td>
</tr>
<tr>
<td>high_qfq</td>
<td>float</td>
<td>Y</td>
<td>前复权(周/月)最高价</td>
</tr>
<tr>
<td>low_qfq</td>
<td>float</td>
<td>Y</td>
<td>前复权(周/月)最低价</td>
</tr>
<tr>
<td>close_qfq</td>
<td>float</td>
<td>Y</td>
<td>前复权(周/月)收盘价</td>
</tr>
<tr>
<td>open_hfq</td>
<td>float</td>
<td>Y</td>
<td>后复权(周/月)开盘价</td>
</tr>
<tr>
<td>high_hfq</td>
<td>float</td>
<td>Y</td>
<td>后复权(周/月)最高价</td>
</tr>
<tr>
<td>low_hfq</td>
<td>float</td>
<td>Y</td>
<td>后复权(周/月)最低价</td>
</tr>
<tr>
<td>close_hfq</td>
<td>float</td>
<td>Y</td>
<td>后复权(周/月)收盘价</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>(周/月)成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>(周/月)成交额</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>(周/月)涨跌额</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>(周/月)涨跌幅 【基于除权后的昨收计算的涨跌幅:(今收-除权昨收)/除权昨收 】</td>
</tr>
</tbody></table>
```
pro = ts.pro_api()
df=pro.stk_week_month_adj(ts_code='000001.SZ',freq='week')
```
数据样例
```
ts_code trade_date freq open high low close pre_close open_qfq high_qfq low_qfq close_qfq open_hfq high_hfq low_hfq close_hfq vol amount change pct_chg
0 000001.SZ 20250117 week 11.25 11.59 11.08 11.45 11.30 11.25 11.59 11.08 11.45 1437.57 1481.02 1415.85 1463.13 4353954.80 4963695.53 0.15 0.01
1 000001.SZ 20250110 week 11.38 11.63 11.22 11.30 11.38 11.38 11.63 11.22 11.30 1454.18 1486.13 1433.74 1443.96 4445402.00 5079074.95 -0.08 -0.01
2 000001.SZ 20250103 week 11.78 11.99 11.36 11.38 11.83 11.78 11.99 11.36 11.38 1505.30 1532.13 1451.63 1454.18 5801491.12 6781578.23 -0.45 -0.04
3 000001.SZ 20241227 week 11.64 12.02 11.64 11.83 11.62 11.64 12.02 11.64 11.83 1487.41 1535.96 1487.41 1511.69 6775611.59 8011303.78 0.21 0.02
4 000001.SZ 20241220 week 11.56 11.74 11.52 11.62 11.56 11.56 11.74 11.52 11.62 1477.18 1500.19 1472.07 1484.85 4036452.70 4689640.57 0.06 0.01
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1687 000001.SZ 19910503 week 43.90 43.90 43.24 43.24 44.34 0.34 0.48 0.34 0.48 43.90 61.24 43.68 60.93 11.00 48.00 -1.10 -0.02
1688 000001.SZ 19910426 week 45.00 45.00 44.34 44.34 45.46 0.35 0.35 0.35 0.35 45.00 45.00 44.34 44.34 67.00 300.00 -1.12 -0.02
1689 000001.SZ 19910419 week 46.38 46.38 45.69 45.69 47.08 0.36 0.36 0.36 0.36 46.38 46.38 45.69 45.69 9.00 41.00 -1.39 -0.03
1690 000001.SZ 19910412 week 48.04 48.04 47.08 47.08 48.52 0.38 0.38 0.37 0.37 48.04 48.04 47.08 47.08 29.00 138.00 -1.44 -0.03
1691 000001.SZ 19910405 week 48.76 48.76 48.52 48.52 49.00 0.38 0.38 0.38 0.38 48.76 48.76 48.52 48.52 5.00 25.00 -0.48 -0.01
```

View file

@ -0,0 +1,175 @@
# 周/月线行情(每日更新)
**文档ID**: 336
**原始链接**: https://tushare.pro/document/2?doc_id=336
---
## 股票周/月线行情(每日更新)
接口:stk_weekly_monthly描述:股票周/月线行情(每日更新)限量:单次最大6000,可使用交易日期循环提取,总量不限制积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期(格式:YYYYMMDD,每周或每月最后一天的日期)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始交易日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束交易日期</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>频率week周,month月</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>Y</td>
<td>计算截至日期</td>
</tr>
<tr>
<td>freq</td>
<td>str</td>
<td>Y</td>
<td>频率(周week,月month)</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>(周/月)开盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>(周/月)最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>(周/月)最低价</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>(周/月)收盘价</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>上一(周/月)收盘价</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>(周/月)成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>(周/月)成交额</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>(周/月)涨跌额</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>(周/月)涨跌幅(未复权,如果是复权请用 通用行情接口)</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
#获取20251024这周周线数据
df=pro.stk_weekly_monthly(trade_date='20251024',freq='week')
#获取202510月月线数据
df=pro.stk_weekly_monthly(trade_date='20251031',freq='month')
```
数据样例
```
ts_code trade_date end_date ... amount change pct_chg
0 600137.SH 20251024 20251023 ... 429206.49 2.18 11.93
1 600236.SH 20251024 20251023 ... 510772.77 0.25 3.49
2 301262.SZ 20251024 20251023 ... 1140060.52 5.69 24.69
3 600114.SH 20251024 20251023 ... 1786514.91 -0.41 -1.39
4 301509.SZ 20251024 20251023 ... 225023.73 0.47 1.34
... ... ... ... ... ... ... ...
5428 920061.BJ 20251024 20251023 ... 153251.70 -0.51 -1.47
5429 920100.BJ 20251024 20251023 ... 674924.90 5.01 7.45
5430 603196.SH 20251024 20251023 ... 316237.47 0.85 3.69
5431 603599.SH 20251024 20251023 ... 370038.63 -0.13 -1.10
5432 301195.SZ 20251024 20251023 ... 186490.18 1.86 5.66
```

View file

@ -0,0 +1,185 @@
# 周线行情
**文档ID**: 144
**原始链接**: https://tushare.pro/document/2?doc_id=144
---
## 周线行情
接口:weekly描述:获取A股周线行情,本接口每周最后一个交易日更新,如需要使用每天更新的周线数据,请使用日度更新的周线行情接口。限量:单次最大6000行,可使用交易日期循环提取,总量不限制积分:用户需要至少2000积分才可以调取,具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>TS代码 (ts_code,trade_date两个参数任选一)</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期 (每周最后一个交易日期,YYYYMMDD格式)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>股票代码</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>close</td>
<td>float</td>
<td>Y</td>
<td>周收盘价</td>
</tr>
<tr>
<td>open</td>
<td>float</td>
<td>Y</td>
<td>周开盘价</td>
</tr>
<tr>
<td>high</td>
<td>float</td>
<td>Y</td>
<td>周最高价</td>
</tr>
<tr>
<td>low</td>
<td>float</td>
<td>Y</td>
<td>周最低价</td>
</tr>
<tr>
<td>pre_close</td>
<td>float</td>
<td>Y</td>
<td>上一周收盘价</td>
</tr>
<tr>
<td>change</td>
<td>float</td>
<td>Y</td>
<td>周涨跌额</td>
</tr>
<tr>
<td>pct_chg</td>
<td>float</td>
<td>Y</td>
<td>周涨跌 (未复权,未<em>100,如果是复权请用 <a href="https://tushare.pro/document/2?doc_id=109">通用行情接口</a>,如需%单位请</em>100 )</td>
</tr>
<tr>
<td>vol</td>
<td>float</td>
<td>Y</td>
<td>周成交量</td>
</tr>
<tr>
<td>amount</td>
<td>float</td>
<td>Y</td>
<td>周成交额</td>
</tr>
</tbody></table>
接口用法
```
pro = ts.pro_api()
df = pro.weekly(ts_code='000001.SZ', start_date='20180101', end_date='20181101', fields='ts_code,trade_date,open,high,low,close,vol,amount')
```
或者
```
df = pro.weekly(trade_date='20181123', fields='ts_code,trade_date,open,high,low,close,vol,amount')
```
数据样例
```
ts_code trade_date close open high low vol \
0 000001.SZ 20181026 11.18 10.81 11.46 10.71 9062500.14
1 000001.SZ 20181019 10.76 10.39 10.78 9.92 7235319.55
2 000001.SZ 20181012 10.30 10.70 10.79 9.70 7257596.97
3 000001.SZ 20180928 11.05 10.52 11.27 10.48 5458134.13
4 000001.SZ 20180921 10.67 9.80 10.70 9.68 5120305.29
5 000001.SZ 20180914 9.84 10.01 10.10 9.81 3534261.76
6 000001.SZ 20180907 10.01 10.09 10.55 9.93 4708303.81
7 000001.SZ 20180831 10.13 10.02 10.43 9.97 6715867.92
8 000001.SZ 20180824 10.03 8.90 10.28 8.87 6697713.52
9 000001.SZ 20180817 8.81 9.12 9.16 8.64 3206923.44
10 000001.SZ 20180810 9.23 8.94 9.35 8.88 3054338.56
11 000001.SZ 20180803 8.91 9.32 9.50 8.88 3648566.35
12 000001.SZ 20180727 9.25 9.04 9.59 9.00 5170189.41
13 000001.SZ 20180720 9.11 8.85 9.20 8.61 3806004.47
14 000001.SZ 20180713 8.88 8.69 9.03 8.58 4901983.84
15 000001.SZ 20180706 8.66 9.05 9.05 8.45 5125563.53
16 000001.SZ 20180629 9.09 9.91 9.92 8.87 5150575.93
amount
0 1.002282e+07
1 7.482596e+06
2 7.483906e+06
3 5.904901e+06
4 5.225262e+06
5 3.501724e+06
6 4.796533e+06
7 6.858804e+06
8 6.358840e+06
9 2.854248e+06
10 2.787629e+06
11 3.363448e+06
12 4.826484e+06
13 3.371040e+06
14 4.346872e+06
15 4.446723e+06
16 4.764107e+06
```

View file

@ -0,0 +1,125 @@
# 国债实际收益率曲线利率
**文档ID**: 220
**原始链接**: https://tushare.pro/document/2?doc_id=220
---
## 国债实际收益率曲线利率
接口:us_trycr描述:国债实际收益率曲线利率限量:单次最大可获取2000行数据,可循环获取权限:用户积累120积分可以使用,积分越高频次越高。具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>fields</td>
<td>str</td>
<td>N</td>
<td>指定输出字段</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>y5</td>
<td>float</td>
<td>Y</td>
<td>5年期</td>
</tr>
<tr>
<td>y7</td>
<td>float</td>
<td>Y</td>
<td>7年期</td>
</tr>
<tr>
<td>y10</td>
<td>float</td>
<td>Y</td>
<td>10年期</td>
</tr>
<tr>
<td>y20</td>
<td>float</td>
<td>Y</td>
<td>20年期</td>
</tr>
<tr>
<td>y30</td>
<td>float</td>
<td>Y</td>
<td>30年期</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.us_trycr(start_date='20180101', end_date='20200327')
#获取5年期和20年期数据
df = pro.us_trycr(start_date='20180101', end_date='20200327', fields='y5,y20')
```
数据样例
```
date y5 y7 y10 y20 y30
0 20200327 -0.13 -0.20 -0.22 -0.12 -0.03
1 20200326 -0.21 -0.24 -0.24 -0.14 -0.05
2 20200325 -0.13 -0.18 -0.19 -0.09 0.00
3 20200324 -0.03 -0.11 -0.13 -0.09 -0.07
4 20200323 0.01 -0.03 -0.04 -0.02 -0.01
... ... ... ... ... ... ...
1995 20120404 -0.91 -0.46 -0.05 0.62 0.94
1996 20120403 -0.94 -0.48 -0.06 0.62 0.94
1997 20120402 -1.01 -0.55 -0.14 0.56 0.89
1998 20120330 -0.98 -0.53 -0.09 0.61 0.93
1999 20120329 -0.98 -0.53 -0.13 0.55 0.87
```

View file

@ -0,0 +1,133 @@
# 国债收益率曲线
**文档ID**: 201
**原始链接**: https://tushare.pro/document/2?doc_id=201
---
## 国债收益率曲线
接口:yc_cb描述:获取中债收益率曲线,目前可获取中债国债收益率曲线即期和到期收益率曲线数据限量:单次最大2000,总量不限制,可循环提取权限:属于单独的权限接口,请在群里联系群主或管理员
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>ts_code</td>
<td>str</td>
<td>N</td>
<td>收益率曲线编码:1001.CB-国债收益率曲线</td>
</tr>
<tr>
<td>curve_type</td>
<td>str</td>
<td>N</td>
<td>曲线类型:0-到期,1-即期</td>
</tr>
<tr>
<td>trade_date</td>
<td>str</td>
<td>N</td>
<td>交易日期</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>查询起始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>查询结束日期</td>
</tr>
<tr>
<td>curve_term</td>
<td>float</td>
<td>N</td>
<td>期限</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>trade_date</td>
<td>str</td>
<td>Y</td>
<td>交易日期</td>
</tr>
<tr>
<td>ts_code</td>
<td>str</td>
<td>Y</td>
<td>曲线编码</td>
</tr>
<tr>
<td>curve_name</td>
<td>str</td>
<td>Y</td>
<td>曲线名称</td>
</tr>
<tr>
<td>curve_type</td>
<td>str</td>
<td>Y</td>
<td>曲线类型:0-到期,1-即期</td>
</tr>
<tr>
<td>curve_term</td>
<td>float</td>
<td>Y</td>
<td>期限(年)</td>
</tr>
<tr>
<td>yield</td>
<td>float</td>
<td>Y</td>
<td>收益率(%)</td>
</tr>
</tbody></table>
接口示例
```
pro = ts.pro_api(your token)
#获取中债收益率曲线
df = pro.yc_cb(ts_code='1001.CB',curve_type='0',trade_date='20200203')
```
数据示例
```
trade_date ts_code curve_name curve_type curve_term yield
0 20200203 101 中债国债收益率曲线 0 0.0000 1.697300
1 20200203 101 中债国债收益率曲线 0 0.0800 1.770000
2 20200203 101 中债国债收益率曲线 0 0.1000 1.770100
3 20200203 101 中债国债收益率曲线 0 0.1700 1.770300
4 20200203 101 中债国债收益率曲线 0 0.2000 1.772300
... ... ... ... ... ... ...
1001 20200203 101 中债国债收益率曲线 1 49.6000 3.774100
1002 20200203 101 中债国债收益率曲线 1 49.7000 3.774700
1003 20200203 101 中债国债收益率曲线 1 49.8000 3.775400
1004 20200203 101 中债国债收益率曲线 1 49.9000 3.776100
1005 20200203 101 中债国债收益率曲线 1 50.0000 3.776800
```

View file

@ -0,0 +1,174 @@
# 国债收益率曲线利率
**文档ID**: 219
**原始链接**: https://tushare.pro/document/2?doc_id=219
---
## 国债收益率曲线利率(日频)
接口:us_tycr描述:获取美国每日国债收益率曲线利率限量:单次最大可获取2000条数据权限:用户积累120积分可以使用,积分越高频次越高。具体请参阅积分获取办法
输入参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>N</td>
<td>日期 (YYYYMMDD格式,下同)</td>
</tr>
<tr>
<td>start_date</td>
<td>str</td>
<td>N</td>
<td>开始日期</td>
</tr>
<tr>
<td>end_date</td>
<td>str</td>
<td>N</td>
<td>结束日期</td>
</tr>
<tr>
<td>fields</td>
<td>str</td>
<td>N</td>
<td>指定输出字段(e.g. fields='m1,y1')</td>
</tr>
</tbody></table>
输出参数
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>默认显示</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>date</td>
<td>str</td>
<td>Y</td>
<td>日期</td>
</tr>
<tr>
<td>m1</td>
<td>float</td>
<td>Y</td>
<td>1月期</td>
</tr>
<tr>
<td>m2</td>
<td>float</td>
<td>Y</td>
<td>2月期</td>
</tr>
<tr>
<td>m3</td>
<td>float</td>
<td>Y</td>
<td>3月期</td>
</tr>
<tr>
<td>m4</td>
<td>float</td>
<td>Y</td>
<td>4月期(数据从20221019开始)</td>
</tr>
<tr>
<td>m6</td>
<td>float</td>
<td>Y</td>
<td>6月期</td>
</tr>
<tr>
<td>y1</td>
<td>float</td>
<td>Y</td>
<td>1年期</td>
</tr>
<tr>
<td>y2</td>
<td>float</td>
<td>Y</td>
<td>2年期</td>
</tr>
<tr>
<td>y3</td>
<td>float</td>
<td>Y</td>
<td>3年期</td>
</tr>
<tr>
<td>y5</td>
<td>float</td>
<td>Y</td>
<td>5年期</td>
</tr>
<tr>
<td>y7</td>
<td>float</td>
<td>Y</td>
<td>7年期</td>
</tr>
<tr>
<td>y10</td>
<td>float</td>
<td>Y</td>
<td>10年期</td>
</tr>
<tr>
<td>y20</td>
<td>float</td>
<td>Y</td>
<td>20年期</td>
</tr>
<tr>
<td>y30</td>
<td>float</td>
<td>Y</td>
<td>30年期</td>
</tr>
</tbody></table>
接口调用
```
pro = ts.pro_api()
df = pro.us_tycr(start_date='20180101', end_date='20200327')
#获取1月期和1年期数据
df = pro.us_tycr(start_date='20180101', end_date='20200327', fields='m1,y1')
```
数据样例
```
date m1 m2 m3 m6 y1 y2 y3 y5 y7 y10 y20 y30
0 20200327 0.01 0.03 0.03 0.02 0.11 0.25 0.30 0.41 0.60 0.72 1.09 1.29
1 20200326 0.01 0.01 0.00 0.04 0.13 0.30 0.36 0.51 0.72 0.83 1.20 1.42
2 20200325 0.00 0.00 0.00 0.07 0.19 0.34 0.41 0.56 0.77 0.88 1.23 1.45
3 20200324 0.01 0.01 0.01 0.09 0.25 0.38 0.44 0.52 0.75 0.84 1.19 1.39
4 20200323 0.01 0.04 0.02 0.08 0.17 0.28 0.31 0.38 0.63 0.76 1.12 1.33
... ... ... ... ... ... ... ... ... ... ... ... ... ...
1995 20120405 0.07 None 0.08 0.14 0.19 0.35 0.50 1.01 1.56 2.19 2.97 3.32
1996 20120404 0.08 None 0.08 0.14 0.19 0.35 0.53 1.05 1.62 2.25 3.02 3.37
1997 20120403 0.07 None 0.08 0.15 0.20 0.36 0.56 1.10 1.68 2.30 3.07 3.41
1998 20120402 0.05 None 0.08 0.14 0.18 0.33 0.50 1.03 1.60 2.22 3.00 3.35
1999 20120330 0.05 None 0.07 0.15 0.19 0.33 0.51 1.04 1.61 2.23 3.00 3.35
```

Some files were not shown because too many files have changed in this diff Show more