fa45d8aa5f
- 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,直连正常
426 lines
17 KiB
Python
426 lines
17 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2025/4/10 18:00
|
|
Desc: 奇货可查网站目前已经商业化运营, 特提供奇货可查-资金数据接口, 方便您程序化调用
|
|
注:期货价格为收盘价; 现货价格来自网络; 基差=现货价格-期货价格; 基差率=(现货价格-期货价格)/现货价格 * 100 %.
|
|
"""
|
|
|
|
import datetime
|
|
from typing import AnyStr
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
from akshare.futures.cons import (
|
|
QHKC_FUND_BS_URL,
|
|
QHKC_FUND_POSITION_URL,
|
|
QHKC_FUND_POSITION_CHANGE_URL,
|
|
QHKC_FUND_DEAL_URL,
|
|
)
|
|
|
|
|
|
def get_qhkc_fund_bs(
|
|
date: datetime.datetime.date = "20190924", url: AnyStr = QHKC_FUND_BS_URL
|
|
):
|
|
"""
|
|
奇货可查-资金-净持仓分布
|
|
可获取数据的时间段为:"2016-10-10:2019-09-30"
|
|
:param url: 网址
|
|
:param date: 中文名称
|
|
:return: 净持仓分布
|
|
:rtype: pandas.DataFrame
|
|
symbol_df
|
|
name value ratio date
|
|
IC 1552535406 0.195622 20190924
|
|
IF 536644080 0.0676182 20190924
|
|
橡胶 536439921 0.0675924 20190924
|
|
沪铜 460851099 0.0580681 20190924
|
|
豆粕 401005794 0.0505275 20190924
|
|
螺纹钢 329159263 0.0414747 20190924
|
|
焦炭 325646968 0.0410321 20190924
|
|
燃料油 313246789 0.0394697 20190924
|
|
IH 245556750 0.0309406 20190924
|
|
棉花 214538541 0.0270323 20190924
|
|
PTA 206340552 0.0259993 20190924
|
|
白糖 139901255 0.0176278 20190924
|
|
豆油 133664010 0.0168419 20190924
|
|
沪铝 109789864 0.0138337 20190924
|
|
沪锌 107440906 0.0135378 20190924
|
|
纸浆 95517374 0.0120354 20190924
|
|
苹果 81058733 0.0102136 20190924
|
|
塑料 63665245 0.00802194 20190924
|
|
菜油 61544593 0.00775474 20190924
|
|
铁矿石 60751108 0.00765475 20190924
|
|
焦煤 58327920 0.00734943 20190924
|
|
甲醇 52148752 0.00657084 20190924
|
|
沥青 49207374 0.00620022 20190924
|
|
菜粕 48266258 0.00608164 20190924
|
|
棕榈油 31615548 0.00398362 20190924
|
|
PP 29374826 0.00370128 20190924
|
|
豆一 22368376 0.00281846 20190924
|
|
玉米 13861567 0.00174658 20190924
|
|
沪锡 7485903 0.000943238 20190924
|
|
淀粉 4811234 0.000606225 20190924
|
|
棉纱 3627240 0.000457039 20190924
|
|
尿素 2290674 0.000288629 20190924
|
|
鸡蛋 2035406 0.000256465 20190924
|
|
粳米 1999282 0.000251913 20190924
|
|
油菜籽 533482 6.72197e-05 20190924
|
|
晚籼稻 0 0 20190924
|
|
强麦 0 0 20190924
|
|
沪铅 89914 1.13293e-05 20190924
|
|
豆二 379200 4.77799e-05 20190924
|
|
硅铁 5025872 0.000633269 20190924
|
|
红枣 8521668 0.00107375 20190924
|
|
锰硅 9472832 0.00119359 20190924
|
|
郑煤 9888272 0.00124594 20190924
|
|
乙二醇 18324242 0.00230889 20190924
|
|
PVC 19454830 0.00245135 20190924
|
|
玻璃 27076226 0.00341166 20190924
|
|
热卷 28832929 0.003633 20190924
|
|
沪银 375076371 0.0472603 20190924
|
|
沪镍 411622624 0.0518652 20190924
|
|
沪金 719371823 0.0906422 20190924
|
|
|
|
long_short_df
|
|
name value ratio date
|
|
空 6303252093 0.794222 20190924
|
|
多 1633136803 0.205778 20190924
|
|
"""
|
|
date = str(date)
|
|
date = date[:4] + "-" + date[4:6] + "-" + date[6:]
|
|
print(date)
|
|
payload_id = {"date": date}
|
|
r = requests.post(url, data=payload_id)
|
|
print("数据获取成功")
|
|
json_data = r.json()
|
|
symbol_name = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_name.append(item["name"])
|
|
symbol_value = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_value.append(item["value"])
|
|
long_short_name = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_name.append(item["name"])
|
|
long_short_value = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_value.append(item["value"])
|
|
symbol_df = pd.DataFrame([symbol_name, symbol_value]).T
|
|
long_short_df = pd.DataFrame([long_short_name, long_short_value]).T
|
|
symbol_df.columns = ["name", "value"]
|
|
symbol_df["ratio"] = symbol_df["value"] / symbol_df["value"].sum()
|
|
symbol_df["date"] = date
|
|
long_short_df.columns = ["name", "value"]
|
|
long_short_df["ratio"] = long_short_df["value"] / long_short_df["value"].sum()
|
|
long_short_df["date"] = date
|
|
return symbol_df, long_short_df
|
|
|
|
|
|
def get_qhkc_fund_position(
|
|
date: datetime.datetime.date = "20190924", url: AnyStr = QHKC_FUND_POSITION_URL
|
|
):
|
|
"""
|
|
奇货可查-资金-总持仓分布
|
|
可获取数据的时间段为:"2016-10-10:2019-09-30"
|
|
:param url: 网址
|
|
:param date: 中文名称
|
|
:return: 总持仓分布
|
|
:rtype: pandas.DataFrame
|
|
symbol_df
|
|
name value ratio date
|
|
IC 1552535406 0.195622 20190924
|
|
IF 536644080 0.0676182 20190924
|
|
橡胶 536439921 0.0675924 20190924
|
|
沪铜 460851099 0.0580681 20190924
|
|
豆粕 401005794 0.0505275 20190924
|
|
螺纹钢 329159263 0.0414747 20190924
|
|
焦炭 325646968 0.0410321 20190924
|
|
燃料油 313246789 0.0394697 20190924
|
|
IH 245556750 0.0309406 20190924
|
|
棉花 214538541 0.0270323 20190924
|
|
PTA 206340552 0.0259993 20190924
|
|
白糖 139901255 0.0176278 20190924
|
|
豆油 133664010 0.0168419 20190924
|
|
沪铝 109789864 0.0138337 20190924
|
|
沪锌 107440906 0.0135378 20190924
|
|
纸浆 95517374 0.0120354 20190924
|
|
苹果 81058733 0.0102136 20190924
|
|
塑料 63665245 0.00802194 20190924
|
|
菜油 61544593 0.00775474 20190924
|
|
铁矿石 60751108 0.00765475 20190924
|
|
焦煤 58327920 0.00734943 20190924
|
|
甲醇 52148752 0.00657084 20190924
|
|
沥青 49207374 0.00620022 20190924
|
|
菜粕 48266258 0.00608164 20190924
|
|
棕榈油 31615548 0.00398362 20190924
|
|
PP 29374826 0.00370128 20190924
|
|
豆一 22368376 0.00281846 20190924
|
|
玉米 13861567 0.00174658 20190924
|
|
沪锡 7485903 0.000943238 20190924
|
|
淀粉 4811234 0.000606225 20190924
|
|
棉纱 3627240 0.000457039 20190924
|
|
尿素 2290674 0.000288629 20190924
|
|
鸡蛋 2035406 0.000256465 20190924
|
|
粳米 1999282 0.000251913 20190924
|
|
油菜籽 533482 6.72197e-05 20190924
|
|
晚籼稻 0 0 20190924
|
|
强麦 0 0 20190924
|
|
沪铅 89914 1.13293e-05 20190924
|
|
豆二 379200 4.77799e-05 20190924
|
|
硅铁 5025872 0.000633269 20190924
|
|
红枣 8521668 0.00107375 20190924
|
|
锰硅 9472832 0.00119359 20190924
|
|
郑煤 9888272 0.00124594 20190924
|
|
乙二醇 18324242 0.00230889 20190924
|
|
PVC 19454830 0.00245135 20190924
|
|
玻璃 27076226 0.00341166 20190924
|
|
热卷 28832929 0.003633 20190924
|
|
沪银 375076371 0.0472603 20190924
|
|
沪镍 411622624 0.0518652 20190924
|
|
沪金 719371823 0.0906422 20190924
|
|
|
|
long_short_df
|
|
name value ratio date
|
|
空 6303252093 0.794222 20190924
|
|
多 1633136803 0.205778 20190924
|
|
"""
|
|
date = str(date)
|
|
date = date[:4] + "-" + date[4:6] + "-" + date[6:]
|
|
print(date)
|
|
payload_id = {"date": date}
|
|
r = requests.post(url, data=payload_id)
|
|
print(url)
|
|
print("数据获取成功")
|
|
json_data = r.json()
|
|
symbol_name = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_name.append(item["name"])
|
|
symbol_value = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_value.append(item["value"])
|
|
long_short_name = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_name.append(item["name"])
|
|
long_short_value = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_value.append(item["value"])
|
|
symbol_df = pd.DataFrame([symbol_name, symbol_value]).T
|
|
long_short_df = pd.DataFrame([long_short_name, long_short_value]).T
|
|
symbol_df.columns = ["name", "value"]
|
|
symbol_df["ratio"] = symbol_df["value"] / symbol_df["value"].sum()
|
|
symbol_df["date"] = date
|
|
long_short_df.columns = ["name", "value"]
|
|
long_short_df["ratio"] = long_short_df["value"] / long_short_df["value"].sum()
|
|
long_short_df["date"] = date
|
|
return symbol_df, long_short_df
|
|
|
|
|
|
def get_qhkc_fund_position_change(
|
|
date: datetime.datetime.date = "20190924",
|
|
url: AnyStr = QHKC_FUND_POSITION_CHANGE_URL,
|
|
):
|
|
"""
|
|
奇货可查-资金-净持仓变化分布
|
|
可获取数据的时间段为:"2016-10-10:2019-09-30"
|
|
:param url: 网址
|
|
:param date: 中文名称
|
|
:return: pd.DataFrame
|
|
symbol_df
|
|
name value ratio date
|
|
IC 1552535406 0.195622 20190924
|
|
IF 536644080 0.0676182 20190924
|
|
橡胶 536439921 0.0675924 20190924
|
|
沪铜 460851099 0.0580681 20190924
|
|
豆粕 401005794 0.0505275 20190924
|
|
螺纹钢 329159263 0.0414747 20190924
|
|
焦炭 325646968 0.0410321 20190924
|
|
燃料油 313246789 0.0394697 20190924
|
|
IH 245556750 0.0309406 20190924
|
|
棉花 214538541 0.0270323 20190924
|
|
PTA 206340552 0.0259993 20190924
|
|
白糖 139901255 0.0176278 20190924
|
|
豆油 133664010 0.0168419 20190924
|
|
沪铝 109789864 0.0138337 20190924
|
|
沪锌 107440906 0.0135378 20190924
|
|
纸浆 95517374 0.0120354 20190924
|
|
苹果 81058733 0.0102136 20190924
|
|
塑料 63665245 0.00802194 20190924
|
|
菜油 61544593 0.00775474 20190924
|
|
铁矿石 60751108 0.00765475 20190924
|
|
焦煤 58327920 0.00734943 20190924
|
|
甲醇 52148752 0.00657084 20190924
|
|
沥青 49207374 0.00620022 20190924
|
|
菜粕 48266258 0.00608164 20190924
|
|
棕榈油 31615548 0.00398362 20190924
|
|
PP 29374826 0.00370128 20190924
|
|
豆一 22368376 0.00281846 20190924
|
|
玉米 13861567 0.00174658 20190924
|
|
沪锡 7485903 0.000943238 20190924
|
|
淀粉 4811234 0.000606225 20190924
|
|
棉纱 3627240 0.000457039 20190924
|
|
尿素 2290674 0.000288629 20190924
|
|
鸡蛋 2035406 0.000256465 20190924
|
|
粳米 1999282 0.000251913 20190924
|
|
油菜籽 533482 6.72197e-05 20190924
|
|
晚籼稻 0 0 20190924
|
|
强麦 0 0 20190924
|
|
沪铅 89914 1.13293e-05 20190924
|
|
豆二 379200 4.77799e-05 20190924
|
|
硅铁 5025872 0.000633269 20190924
|
|
红枣 8521668 0.00107375 20190924
|
|
锰硅 9472832 0.00119359 20190924
|
|
郑煤 9888272 0.00124594 20190924
|
|
乙二醇 18324242 0.00230889 20190924
|
|
PVC 19454830 0.00245135 20190924
|
|
玻璃 27076226 0.00341166 20190924
|
|
热卷 28832929 0.003633 20190924
|
|
沪银 375076371 0.0472603 20190924
|
|
沪镍 411622624 0.0518652 20190924
|
|
沪金 719371823 0.0906422 20190924
|
|
|
|
long_short_df
|
|
name value ratio date
|
|
空 6303252093 0.794222 20190924
|
|
多 1633136803 0.205778 20190924
|
|
"""
|
|
date = str(date)
|
|
date = date[:4] + "-" + date[4:6] + "-" + date[6:]
|
|
print(date)
|
|
payload_id = {"date": date}
|
|
r = requests.post(url, data=payload_id)
|
|
print(url)
|
|
print("数据获取成功")
|
|
json_data = r.json()
|
|
symbol_name = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_name.append(item["name"])
|
|
symbol_value = []
|
|
for item in json_data["data"]["datas1"]:
|
|
symbol_value.append(item["value"])
|
|
long_short_name = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_name.append(item["name"])
|
|
long_short_value = []
|
|
for item in json_data["data"]["datas2"]:
|
|
long_short_value.append(item["value"])
|
|
symbol_df = pd.DataFrame([symbol_name, symbol_value]).T
|
|
long_short_df = pd.DataFrame([long_short_name, long_short_value]).T
|
|
symbol_df.columns = ["name", "value"]
|
|
symbol_df["ratio"] = symbol_df["value"] / symbol_df["value"].sum()
|
|
symbol_df["date"] = date
|
|
long_short_df.columns = ["name", "value"]
|
|
long_short_df["ratio"] = long_short_df["value"] / long_short_df["value"].sum()
|
|
long_short_df["date"] = date
|
|
return symbol_df, long_short_df
|
|
|
|
|
|
def get_qhkc_fund_money_change(
|
|
date: datetime.datetime.date = "20190924", url: AnyStr = QHKC_FUND_DEAL_URL
|
|
):
|
|
"""
|
|
奇货可查-资金-成交额分布
|
|
可获取数据的时间段为:"2016-10-10:2019-09-30"
|
|
:param url: 网址
|
|
:param date: 中文名称
|
|
:return: 成交额分布
|
|
:rtype: pandas.DataFrame
|
|
name value ratio date
|
|
沪镍 2.292e+10 0.145963 2019-09-25
|
|
沪银 1.22788e+10 0.0781956 2019-09-25
|
|
沪金 11196166005 0.0713011 2019-09-25
|
|
IC 1.10958e+10 0.0706619 2019-09-25
|
|
螺纹钢 1.02918e+10 0.0655416 2019-09-25
|
|
IF 9134893794 0.0581742 2019-09-25
|
|
铁矿石 7991427128 0.0508922 2019-09-25
|
|
原油 7695016910 0.0490045 2019-09-25
|
|
焦炭 5936589656 0.0378063 2019-09-25
|
|
甲醇 4.00966e+09 0.0255349 2019-09-25
|
|
沪铜 3806033147 0.0242381 2019-09-25
|
|
乙二醇 3.64376e+09 0.0232047 2019-09-25
|
|
橡胶 3286445958 0.0209292 2019-09-25
|
|
燃料油 3227355810 0.0205529 2019-09-25
|
|
豆粕 3124163112 0.0198958 2019-09-25
|
|
苹果 3.08134e+09 0.0196231 2019-09-25
|
|
沪锌 3076039116 0.0195893 2019-09-25
|
|
PTA 2.93901e+09 0.0187167 2019-09-25
|
|
IH 2578970688 0.0164238 2019-09-25
|
|
豆油 2371404714 0.0151019 2019-09-25
|
|
沥青 2.17662e+09 0.0138615 2019-09-25
|
|
白糖 1814626125 0.0115562 2019-09-25
|
|
棕榈油 1687834936 0.0107487 2019-09-25
|
|
菜粕 1.58244e+09 0.0100775 2019-09-25
|
|
焦煤 1.52553e+09 0.00971509 2019-09-25
|
|
PP 1.51981e+09 0.0096787 2019-09-25
|
|
塑料 1468988065 0.00935503 2019-09-25
|
|
沪铝 1.35968e+09 0.00865893 2019-09-25
|
|
不锈钢 1213656556 0.00772899 2019-09-25
|
|
棉花 1186243285 0.00755441 2019-09-25
|
|
鸡蛋 1175239681 0.00748433 2019-09-25
|
|
热卷 1.12293e+09 0.00715118 2019-09-25
|
|
纸浆 9.23876e+08 0.00588356 2019-09-25
|
|
沪铅 659297524 0.00419864 2019-09-25
|
|
菜油 587372274 0.00374059 2019-09-25
|
|
郑煤 5.82494e+08 0.00370953 2019-09-25
|
|
红枣 499089640 0.00317838 2019-09-25
|
|
玉米 458548474 0.0029202 2019-09-25
|
|
PVC 334434410 0.00212979 2019-09-25
|
|
玻璃 333819628 0.00212588 2019-09-25
|
|
沪锡 2.02186e+08 0.00128759 2019-09-25
|
|
豆二 185554169 0.00118167 2019-09-25
|
|
豆一 184729205 0.00117642 2019-09-25
|
|
硅铁 1.54719e+08 0.000985305 2019-09-25
|
|
淀粉 112331976 0.000715369 2019-09-25
|
|
锰硅 1.10791e+08 0.000705557 2019-09-25
|
|
尿素 78648750 0.000500862 2019-09-25
|
|
棉纱 5.17932e+07 0.000329837 2019-09-25
|
|
NR 34806750 0.000221661 2019-09-25
|
|
粳米 7375683 4.69709e-05 2019-09-25
|
|
油菜籽 2680922 1.7073e-05 2019-09-25
|
|
纤维板 2286460 1.4561e-05 2019-09-25
|
|
胶合板 831250 5.29369e-06 2019-09-25
|
|
强麦 472400 3.00841e-06 2019-09-25
|
|
晚籼稻 159318 1.01459e-06 2019-09-25
|
|
线材 90608 5.77023e-07 2019-09-25
|
|
粳稻 0 0 2019-09-25
|
|
普麦 0 0 2019-09-25
|
|
稻谷 0 0 2019-09-25
|
|
"""
|
|
date = str(date)
|
|
date = date[:4] + "-" + date[4:6] + "-" + date[6:]
|
|
print(date)
|
|
payload_id = {"date": date}
|
|
r = requests.post(url, data=payload_id)
|
|
print(url)
|
|
print("数据获取成功")
|
|
json_data = r.json()
|
|
symbol_name = []
|
|
for item in json_data["data"]["datas"]:
|
|
symbol_name.append(item["name"])
|
|
symbol_value = []
|
|
for item in json_data["data"]["datas"]:
|
|
symbol_value.append(item["value"])
|
|
symbol_df = pd.DataFrame([symbol_name, symbol_value]).T
|
|
symbol_df.columns = ["name", "value"]
|
|
symbol_df["ratio"] = symbol_df["value"] / symbol_df["value"].sum()
|
|
symbol_df["date"] = date
|
|
return symbol_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# df1, df2 = get_qhkc_fund_bs(20190925)
|
|
# print(df1)
|
|
# print(df2)
|
|
|
|
# df1, df2 = get_qhkc_fund_position(20190925)
|
|
# print(df1)
|
|
# print(df2)
|
|
|
|
# df1, df2 = get_qhkc_fund_position_change(20190925)
|
|
# print(df1)
|
|
# print(df2)
|
|
|
|
get_qhkc_fund_money_change_df = get_qhkc_fund_money_change(20211208)
|
|
print(get_qhkc_fund_money_change_df)
|