
昨天群里有同学问怎么获取昨日涨停指数今日表现分时数据, 这里写一个例子演示下。
先说明下为什么 要获取昨日涨停今日表现分时表现,看上面截图数据可以看出, 从早上9点半到下午3点, 昨日涨停指数今日表现分时一路走低, 说明 昨日涨停溢价越来越低 ,可以看出短线风险了。 昨天又是腥风血雨的一天, 大家有没有感觉?
回到正题
这篇文章将介绍如何使用Python获取股票分时数据并进行基础分析。我们将通过调用同花顺提供的金融数据API,获取股票的分时行情数据,然后使用Pandas进行数据处理和计算,最终得到包含价格、涨跌幅等关键指标的分析结果。
免责声明: 本文仅用于技术学习目的,不要用于商业目的。另外股票投资有风险,入市请谨慎。
import requests
import json
import pandas as pd
def get_and_process_stock_trend():
"""
获取股票分时数据,并将其转换为Pandas DataFrame进行分析。
"""
# 1. 定义请求的URL和参数
url = "https://quota-h.10jqka.com.cn/fuyao/common_hq_aggr/quote/v1/single_trend"
payload = {
"code_list": [{"codes": ["883900"], "market": "48"}],
"trade_date": 0,
"gpid": 1,
"time_zone": "Asia/Shanghai",
"trade_class": "intraday"
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Content-Type': 'application/json'
}
try:
# 2. 发送POST请求
print("正在发送POST请求...")
response = requests.post(url, headers=headers, json=payload, timeout=10)
response.raise_for_status()
data = response.json()
# 3. 检查API返回的状态
if data.get("status_code") != 0:
print(f"API返回错误: {data.get('status_msg')}")
return
# 4. 提取核心数据
quote_data_item = data["data"]["quote_data"][0]
base_price = quote_data_item["base_price"]
value_list = quote_data_item["value"]
print(f"成功获取数据,代码: {quote_data_item['code']}, 基准价格: {base_price}")
print("-" * 50)
# 5. 创建Pandas DataFrame
df = pd.DataFrame(value_list, columns=['timestamp', 'price', 'volume', 'amount'])
# 6. 数据处理与转换(处理时区)
df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms').dt.tz_localize('Asia/Shanghai')
# 将datetime列设为索引
df.set_index('datetime', inplace=True)
# 删除原始的时间戳列
df.drop(columns=['timestamp'], inplace=True)
# 7. 计算涨跌幅
df['change_pct'] = ((df['price'] - base_price) / base_price) * 100
df['change_pct'] = df['change_pct'].round(2)
# 8. 打印处理后的DataFrame
print("--- 处理后的DataFrame---")
print(df)
# 9. (可选) 打印数据摘要
print("\n--- 数据摘要 ---")
print(f"最高价: {df['price'].max():.4f}")
print(f"最低价: {df['price'].min():.4f}")
print(f"最新价: {df['price'].iloc[-1]:.4f}")
print(f"最大涨幅: {df['change_pct'].max():.2f}%")
print(f"最大跌幅: {df['change_pct'].min():.2f}%")
except requests.exceptions.RequestException as e:
print(f"\n请求失败,发生错误: {e}")
except json.JSONDecodeError:
print("\n请求成功,但返回的不是有效的JSON格式。")
except KeyError as e:
print(f"\n处理数据时发生错误,缺少预期的键: {e}")
except Exception as e:
print(f"\n发生未知错误: {e}")
# --- 主程序入口 ---
if __name__ == "__main__":
get_and_process_stock_trend()如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。 这个号主要分享AI量化技术相关, 当天的灵感相关记录,相对比较杂。