上海黃金交易所(SGE)作為中國唯一經國務院批準、專門從事黃金等貴金屬交易的國家級市場平臺,自成立以來始終秉持“公開、公平、公正”的原則,致力于構建規范、高效、透明的貴金屬交易市場體系。交易所通過完善的交易機制、嚴格的風險控制和強大的技術支持,為銀行、金融投資機構及各類會員單位提供標準化的貴金屬交易服務,是中國黃金市場定價機制的核心載體。
在保障交易安全與市場穩定的同時,上海黃金交易所積極推動信息化建設,通過官方網站及數據接口實時發布權威的黃金、白銀、鉑金等品種的行情信息,涵蓋開盤價、最高價、最低價、收盤價及成交量等關鍵數據。這些數據不僅反映了國內貴金屬市場的實時供需狀況,也為投資者、研究機構和產業鏈上下游企業提供了重要的決策依據。
本文將探討如何通過POST請求從上海黃金交易所的公開數據接口中獲取Au99.99等主力合約的日行情數據,并展示使用Python的requests庫發送HTTP請求的方法,以提取結構化的金價序列。此類數據通常以JSON格式返回,涵蓋全國統一的集中競價成交信息,通過解析返回結果,可實現對交易日期、開盤價、最高價、最低價、收盤價等核心字段的精準提取。此類數據采集方式有助于深入分析黃金價格的長期趨勢、波動特征及市場周期規律。
上海黃金交易所金價數據接口:行情走勢-上海黃金交易所
我們第一步先找到門店數據的存儲位置,然后看3個關鍵部分標頭、負載、?預覽;
標頭:通常包括URL的連接,也就是目標資源的位置;
負載:對于POST請求:負載通常包含了傳遞的參數,因為所有參數都通過URL傳遞,這里我們可以看到Au99.99的明文,代表99.99的純金,沒有進行加密;
預覽:指的是對響應內容的快速查看或摘要顯示,可以幫助用戶快速了解返回的數據結構或內容片段;
接下來就是數據獲取部分,先講一下方法思路,一共三個步驟;
方法思路
- 找到對應數據存儲位置;
- 我們通過post請求獲取所有日期下的相關金價數據;
- 通過html網頁的形式,把數據進行可視化;
第一步:我們先找到對應數據存儲位置,獲取所有有數據距離以來的金價數據,包括開盤價,收盤價之類,經過測試,這里的數據是,直接存在名為Dailyhq的html里,那我們直接獲取所有數據即可;
第二步:利用POST請求獲取所有金價數據,并根據標簽進行保存,另存為csv;
完整代碼#運行環境 Python 3.11
import requests
import csv
from datetime import datetime# --- 配置 ---
instid = "Au99.99"
# 自動生成文件名: SGE_Au99.99_20250818.csv
filename = f"SGE_{instid.replace('(', '_').replace(')', '_')}_{datetime.now().strftime('%Y%m%d')}.csv"# --- 請求 ---
url = "https://www.sge.com.cn/graph/Dailyhq"
headers = {'User-Agent': 'Mozilla/5.0','Referer': 'https://www.sge.com.cn/','X-Requested-With': 'XMLHttpRequest',
}
data = {'instid': instid}try:response = requests.post(url, headers=headers, data=data, timeout=10)response.raise_for_status()result = response.json()# --- 保存CSV ---with open(filename, 'w', newline='', encoding='utf-8-sig') as f:writer = csv.writer(f)writer.writerow(['日期', '開盤價', '最高價', '最低價', '收盤價']) # 寫標題writer.writerows(result['time']) # 寫數據print(f"數據已保存: {filename} (共{len(result['time'])}條)")except Exception as e:print(f"失敗: {e}")
獲取數據標簽如下,?日期、開盤價、最高價、最低價、 收盤價,其他一些非關鍵標簽,這里省略;
第三步:我們把金價數據進行可視化,生成對應的html;
完整代碼#運行環境 Python 3.11
import pandas as pd
import json
import os# --- 1. 讀取CSV數據 ---
file_path = r'SGE_Au99.99_20250818.csv' # 請根據實際路徑修改
if not os.path.exists(file_path):raise FileNotFoundError(f"未找到文件: {file_path}")data = pd.read_csv(file_path)# 確保日期為 datetime 類型并排序
data['日期'] = pd.to_datetime(data['日期'])
data = data.sort_values('日期').reset_index(drop=True)# 提取數據
dates = data['日期'].dt.strftime('%Y-%m-%d').tolist()
close_prices = data['收盤價'].round(2).tolist()# --- 2. 構建ECharts系列 ---
series_list = [{'name': '收盤價','type': 'line','data': close_prices,'smooth': True,'showSymbol': False,'emphasis': {'focus': 'series'},'lineStyle': {'width': 3, 'color': '#4a86e8'}, # 藍色'areaStyle': {'color': {'type': 'linear','x': 0, 'y': 0, 'x2': 0, 'y2': 1,'colorStops': [{'offset': 0, 'color': 'rgba(74, 134, 233, 0.5)'},{'offset': 1, 'color': 'rgba(74, 134, 233, 0.1)'}]}}}
]# --- 3. 生成HTML內容 ---
html_content = f"""
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Au99.99 黃金收盤價趨勢圖</title><script src="https://cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script><style>body {{font-family: 'Microsoft YaHei', 'Segoe UI', sans-serif;background: linear-gradient(to right, #bda0db 0%, #eae9f0 100%);margin: 0;display: flex;justify-content: center;align-items: center;min-height: 100vh;color: #333;}}.container {{width: 90%;max-width: 1200px;padding: 30px;background: white;border-radius: 16px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);text-align: center;}}h1 {{font-size: 24px;margin-bottom: 20px;color: #4a86e8;}}.subtitle {{font-size: 16px;color: #666;margin-bottom: 25px;}}#chart {{width: 100%;height: 600px;margin-top: 20px;}}</style>
</head>
<body><div class="container"><h1>上海黃金交易所 Au99.99 收盤價趨勢</h1><div class="subtitle">數據范圍:{dates[0]} 至 {dates[-1]} (共 {len(dates)} 天)</div><div id="chart"></div></div><script>const chartDom = document.getElementById('chart');const myChart = echarts.init(chartDom);const option = {{tooltip: {{trigger: 'axis',axisPointer: {{ type: 'cross' }},formatter: function(params) {{let res = params[0].name + '<br/>';params.forEach(param => {{res += `<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${{param.color}};"></span>`;res += `${{param.seriesName}}: <b>${{param.value}}</b> 元/克<br/>`;}});return res;}}}},legend: {{data: {json.dumps([s['name'] for s in series_list])},bottom: '5%',textStyle: {{ color: '#333' }}}},grid: {{ left: '8%', right: '6%', bottom: '18%', top: '8%' }},xAxis: {{type: 'category',data: {json.dumps(dates)},axisLabel: {{ rotate: 45, fontSize: 12,color: '#666'}},axisLine: {{ lineStyle: {{ color: '#ccc' }} }}}},yAxis: {{type: 'value',name: '價格 (元/克)',splitLine: {{ show: true, lineStyle: {{ type: 'dashed', color: '#ddd' }} }},axisLabel: {{ color: '#666' }},axisLine: {{ lineStyle: {{ color: '#ccc' }} }}}},series: {json.dumps(series_list, ensure_ascii=False)}}};myChart.setOption(option);window.addEventListener('resize', () => myChart.resize());</script>
</body>
</html>
"""# --- 4. 保存HTML文件 ---
output_path = "SGE_Au9999_Close_Price_Trend.html"
with open(output_path, "w", encoding="utf-8") as f:f.write(html_content)print(f"黃金收盤價趨勢圖已生成:{output_path}")
print("請用瀏覽器打開該HTML文件查看可視化圖表")
2016年底至2025年8月的金價變化趨勢如下,恨沒在低位狠狠的抄底o(╥﹏╥)o
接下來,我們進行看圖說話:
從2016年底至2025年8月,上海黃金交易所Au99.99的金價呈現出顯著的長期上升趨勢。價格從2016年底的約300元/克攀升至2025年8月的接近800元/克,累計漲幅超過150%。這一強勁的上漲走勢充分體現了黃金作為避險資產和價值儲存工具在全球經濟不確定性加劇背景下的核心地位。
階段性走勢分析
-
初期(2016-2017年):金價在300元/克附近窄幅震蕩,整體表現平穩。這一階段全球經濟逐步復蘇,市場風險偏好回升,黃金的避險需求相對有限,價格維持在低位盤整。
-
2018年至2019年初:金價進入緩慢增長階段,逐步突破400元/克。隨著全球貿易摩擦升溫、地緣政治風險上升,市場對避險資產的關注度提升,黃金的投資吸引力開始顯現。
-
2019年至2020年初:金價開啟加速上漲,迅速逼近500元/克。這一階段美聯儲轉向降息周期,全球主要央行重啟寬松貨幣政策,實際利率下行顯著提升了無息資產黃金的持有價值。
-
2020年至2023年初:受新冠疫情沖擊、經濟波動與高通脹預期交織影響,金價在400至500元/克區間進入高位震蕩期,波動明顯加劇。盡管疫情初期流動性緊張導致金價短暫回調,但隨后的大規模財政與貨幣刺激推動黃金價格再度走強。
-
自2023年初以來:金價再次強勢突破,一路攀升至近800元/克。這一輪上漲主要得益于全球通脹持續高企、地緣沖突頻發(如俄烏沖突延續、中東局勢緊張)、各國央行尤其是新興市場央行大規模增持黃金儲備,以及市場對美元信用長期弱化的擔憂不斷升溫。
我們再來看看銀價這些年的變化趨勢;
從2016年底至2025年8月,上海黃金交易所Ag(T+D)的銀價呈現出顯著的長期上升趨勢。價格從2016年底的約4元/克攀升至2025年8月的接近9元/克,漲幅超過125%。這一趨勢充分體現了白銀作為工業金屬和投資資產在全球經濟復雜變局中的重要地位。
階段性走勢分析
-
初期(2016-2017年):銀價在4元/克附近窄幅震蕩,整體表現平穩。這一階段市場對白銀的需求相對穩定,工業需求和投資需求均未出現顯著變化。
-
2018年至2019年初:銀價進入緩慢增長階段,逐步突破5元/克。這一時期,全球經濟逐漸復蘇,工業需求有所增加,同時投資者對白銀的投資興趣也有所提升。
-
2019年至2020年初:銀價開啟加速上漲,迅速逼近6元/克。這一階段與全球貿易摩擦升級、地緣政治緊張以及主要經濟體實施寬松貨幣政策密切相關。白銀作為貴金屬,其避險屬性和工業應用價值得到進一步體現。
-
2020年至2023年初:受疫情沖擊、經濟復蘇與通脹預期交織影響,銀價在5-6元/克區間進入高位震蕩期,波動明顯加劇。疫情期間,白銀的工業需求受到一定影響,但投資需求大幅增加,導致價格波動較大。
-
自2023年初以來:銀價再次強勢突破,一路攀升至近9元/克。這一輪上漲主要得益于全球高通脹持續、地緣沖突頻發、各國央行大規模增持黃金儲備以及市場對長期貨幣信用弱化的擔憂不斷升溫。白銀作為貴金屬和工業金屬,其雙重屬性使其在這一背景下表現出色。
文章僅用于分享個人學習成果與個人存檔之用,分享知識,如有侵權,請聯系作者進行刪除。所有信息均基于作者的個人理解和經驗,不代表任何官方立場或權威解讀。