Files
MoFin/venv/lib/python3.12/site-packages/akshare/qhkc_web/qhkc_index.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

211 lines
9.3 KiB
Python

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2025/4/10 18:00
Desc: 奇货可查网站目前已经商业化运营, 特提供奇货可查-指数数据接口, 方便您程序化调用
注:期货价格为收盘价; 现货价格来自网络; 基差=现货价格-期货价格; 基差率=(现货价格-期货价格)/现货价格 * 100 %.
"""
from typing import AnyStr
import pandas as pd
import requests
from akshare.futures.cons import (
QHKC_INDEX_URL,
QHKC_INDEX_TREND_URL,
QHKC_INDEX_PROFIT_LOSS_URL,
)
def get_qhkc_index(name: AnyStr = "奇货商品", url: AnyStr = QHKC_INDEX_URL):
"""
奇货可查-指数-指数详情
获得奇货可查的指数数据: '奇货黑链', '奇货商品', '奇货谷物', '奇货贵金属', '奇货饲料', '奇货软商品', '奇货化工', '奇货有色', '奇货股指', '奇货铁合金', '奇货油脂'
:param url: 网址
:type url: str
:param name: 中文名称
:type name: str
:return: 指数详情
:rtype: pandas.DataFrame
date price volume ... margin profit long_short_ratio
2013-01-04 1000 260820 ... 1130485758 1816940 52.78
2013-01-07 998.244 245112 ... 1132228518 2514410 52.15
2013-01-08 1000.8 318866 ... 1160374489 2981010 51.99
2013-01-09 998.661 247352 ... 1166611242 3904220 52.44
2013-01-10 999.802 161292 ... 1153164771 1448190 52.81
... ... ... ... ... ... ...
2019-09-24 845.391 881138 ... 1895149977 128379050 48.5
2019-09-25 845.674 715180 ... 1797235248 128788230 48.29
2019-09-26 840.154 1347570 ... 1730488227 137104890 48.44
2019-09-27 834.831 920160 ... 1605342767 143128540 48.77
2019-09-30 831.959 1031558 ... 1521875378 147810580 48.82
"""
name_id_dict = {}
qhkc_index_url = "https://qhkch.com/ajax/official_indexes.php"
r = requests.post(qhkc_index_url)
display_name = [item["name"] for item in r.json()["data"]]
index_id = [item["id"] for item in r.json()["data"]]
for item in range(len(display_name)):
name_id_dict[display_name[item]] = index_id[item]
payload_id = {"id": name_id_dict[name]}
r = requests.post(url, data=payload_id)
print(name, "数据获取成功")
json_data = r.json()
date = json_data["data"]["date"]
price = json_data["data"]["price"]
volume = json_data["data"]["volume"]
open_interest = json_data["data"]["openint"]
total_value = json_data["data"]["total_value"]
profit = json_data["data"]["profit"]
long_short_ratio = json_data["data"]["line"]
df_temp = pd.DataFrame(
[date, price, volume, open_interest, total_value, profit, long_short_ratio]
).T
df_temp.columns = [
"date",
"price",
"volume",
"open_interest",
"margin",
"profit",
"long_short_ratio",
]
return df_temp
def get_qhkc_index_trend(name: AnyStr = "奇货商品", url: AnyStr = QHKC_INDEX_TREND_URL):
"""
奇货可查-指数-大资金动向
获得奇货可查的指数数据: '奇货黑链', '奇货商品', '奇货谷物', '奇货贵金属', '奇货饲料', '奇货软商品', '奇货化工', '奇货有色', '奇货股指', '奇货铁合金', '奇货油脂'
:param name: None
:type name: str
:param url: 网址
:type url: str
:return: 大资金动向
:rtype: pandas.DataFrame
broker grade money open_order variety
中金期货 B -3.68209e+07 3.68209e+07 沪金
浙商期货 D -25845534 25845534 沪银
永安期货 A -25614000 25614000 沪银
招商期货 D -23517351 23517351 沪银
海通期货 A 21440845 21440845 沪金
美尔雅 D 21370975 21370975 沪金
中原期货 C -21204612 21204612 沪银
国投安信 A -1.52374e+07 1.52374e+07 沪银
中信期货 C 1.50941e+07 1.50941e+07 沪银
海通期货 A -1.47184e+07 1.47184e+07 沪银
方正中期 E -1.31432e+07 1.31432e+07 沪银
东证期货 D -1.283e+07 1.283e+07 沪银
一德期货 A 1.24973e+07 1.24973e+07 沪银
国投安信 A -11602860 11602860 沪金
国泰君安 B -1.09363e+07 1.09363e+07 沪金
华安期货 D -9.99499e+06 9.99499e+06 沪金
南华期货 B -9.23675e+06 9.23675e+06 沪银
国贸期货 B 8.55245e+06 8.55245e+06 沪银
道通期货 C 8527675 8527675 沪金
招商期货 D -7.85457e+06 7.85457e+06 沪金
东方财富 E -7.58235e+06 7.58235e+06 沪银
五矿经易 A 6.95354e+06 6.95354e+06 沪银
银河期货 B 6.84522e+06 6.84522e+06 沪银
国贸期货 B 6731025 6731025 沪金
平安期货 D -6710418 6710418 沪银
上海中期 C 6628800 6628800 沪金
中信期货 C -6345830 6345830 沪金
银河期货 B -6126295 6126295 沪金
华泰期货 A -5.96254e+06 5.96254e+06 沪金
招金期货 E -5.53029e+06 5.53029e+06 沪银
东证期货 D -5.47486e+06 5.47486e+06 沪金
光大期货 C -5334730 5334730 沪金
广发期货 D 5.31904e+06 5.31904e+06 沪金
国信期货 D -5.05211e+06 5.05211e+06 沪金
"""
name_id_dict = {}
qhkc_index_url = "https://qhkch.com/ajax/official_indexes.php"
r = requests.post(qhkc_index_url)
display_name = [item["name"] for item in r.json()["data"]]
index_id = [item["id"] for item in r.json()["data"]]
for item in range(len(display_name)):
name_id_dict[display_name[item]] = index_id[item]
payload_id = {"page": 1, "limit": 10, "index": name_id_dict[name], "date": ""}
r = requests.post(url, data=payload_id)
print(f"{name}期货指数-大资金动向数据获取成功")
json_data = r.json()
df_temp = pd.DataFrame()
for item in json_data["data"]:
broker = item["broker"]
grade = item["grade"]
money = item["money"]
order_money = item["order_money"]
variety = item["variety"]
df_temp = df_temp._append(
pd.DataFrame([broker, grade, money, order_money, variety]).T
)
df_temp.columns = ["broker", "grade", "money", "open_order", "variety"]
df_temp.reset_index(drop=True, inplace=True)
return df_temp
def get_qhkc_index_profit_loss(
name: AnyStr = "奇货商品",
url: AnyStr = QHKC_INDEX_PROFIT_LOSS_URL,
start_date="",
end_date="",
):
"""
奇货可查-指数-盈亏详情
获得奇货可查的指数数据: '奇货黑链', '奇货商品', '奇货谷物', '奇货贵金属', '奇货饲料', '奇货软商品', '奇货化工', '奇货有色', '奇货股指', '奇货铁合金', '奇货油脂'
:param url: 网址
:type url: str
:param name: None
:type name: str
:param start_date: ""
:type start_date: str
:param end_date: "20190716" 指定 end_date 就可以了
:type end_date: str
:return: 盈亏详情
:rtype: pandas.DataFrame
indexes value trans_date
招金期货-沪金 -307489200 2019-09-30
平安期货-沪银 -195016650 2019-09-30
建信期货-沪银 -160327350 2019-09-30
国贸期货-沪银 -159820965 2019-09-30
东证期货-沪银 -123508635 2019-09-30
... ... ...
永安期货-沪银 187411350 2019-09-30
中信期货-沪金 242699750 2019-09-30
华泰期货-沪银 255766185 2019-09-30
永安期货-沪金 293008700 2019-09-30
国泰君安-沪金 302774950 2019-09-30
"""
name_id_dict = {}
qhkc_index_url = "https://qhkch.com/ajax/official_indexes.php"
r = requests.post(qhkc_index_url)
display_name = [item["name"] for item in r.json()["data"]]
index_id = [item["id"] for item in r.json()["data"]]
for item in range(len(display_name)):
name_id_dict[display_name[item]] = index_id[item]
payload_id = {"index": name_id_dict[name], "date1": start_date, "date2": end_date}
r = requests.post(url, data=payload_id)
print(f"{name}期货指数-盈亏分布数据获取成功")
json_data = r.json()
indexes = json_data["data"]["indexes"]
value = json_data["data"]["value"]
trans_date = [json_data["data"]["trans_date"]] * len(value)
df_temp = pd.DataFrame([indexes, value, trans_date]).T
df_temp.columns = ["indexes", "value", "trans_date"]
return df_temp
if __name__ == "__main__":
get_qhkc_index_df = get_qhkc_index("奇货谷物")
print(get_qhkc_index_df)
get_qhkc_index_trend_df = get_qhkc_index_trend("奇货贵金属")
print(get_qhkc_index_trend_df)
get_qhkc_index_profit_loss_df = get_qhkc_index_profit_loss(
"奇货贵金属", end_date="20250410"
)
print(get_qhkc_index_profit_loss_df)