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,直连正常
211 lines
9.3 KiB
Python
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)
|