Files
MoFin/venv/lib/python3.12/site-packages/akshare/futures/futures_foreign.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

74 lines
2.2 KiB
Python

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2025/3/5 18:00
Desc: 外盘期货-历史行情数据-日频率
https://finance.sina.com.cn/money/future/hf.html
"""
from datetime import datetime
from io import StringIO
import pandas as pd
import requests
from akshare.futures.futures_hq_sina import (
futures_foreign_commodity_subscribe_exchange_symbol,
)
def futures_foreign_hist(symbol: str = "ZSD") -> pd.DataFrame:
"""
外盘期货-历史行情数据-日频率
https://finance.sina.com.cn/money/future/hf.html
:param symbol: 外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码
:type symbol: str
:return: 历史行情数据-日频率
:rtype: pandas.DataFrame
"""
today = f"{datetime.today().year}_{datetime.today().month}_{datetime.today().day}"
url = (
f"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/"
f"GlobalFuturesService.getGlobalFuturesDailyKLine"
)
params = {
"symbol": symbol,
"_": today,
"source": "web",
}
r = requests.get(url, params=params)
data_text = r.text
data_df = pd.read_json(StringIO(data_text[data_text.find("[") : -2]))
return data_df
def futures_foreign_detail(symbol: str = "ZSD") -> pd.DataFrame:
"""
foreign futures contract detail data
:param symbol: futures symbol, you can get it from hf_subscribe_exchange_symbol function
:type symbol: str
:return: contract detail
:rtype: pandas.DataFrame
"""
url = f"https://finance.sina.com.cn/futures/quotes/{symbol}.shtml"
r = requests.get(url)
r.encoding = "gbk"
data_text = r.text
data_df = pd.read_html(StringIO(data_text))[6]
return data_df
if __name__ == "__main__":
futures_foreign_hist_df = futures_foreign_hist(symbol="JY")
print(futures_foreign_hist_df)
subscribes = futures_foreign_commodity_subscribe_exchange_symbol()
for item in subscribes:
futures_foreign_detail_df = futures_foreign_detail(symbol=item)
print(futures_foreign_detail_df)
for item in subscribes:
futures_foreign_hist_df = futures_foreign_hist(symbol=item)
print(futures_foreign_hist_df)