港美股数据行情处理实战:从API获取到量化分析
创作时间:
作者:
@小白创作中心
港美股数据行情处理实战:从API获取到量化分析
引用
CSDN
1.
https://blog.csdn.net/2401_89490165/article/details/145778779
本文是一篇关于港美股数据行情处理的实战教程,内容涵盖了数据获取、清洗、存储、指标计算、可视化以及量化交易策略的完整流程。文章结构清晰,每个环节都配有详细的Python代码示例,适合有一定编程基础的读者学习参考。
一、行情数据获取方案
1.1 主流数据接口
扩展学习方向:
# 进阶学习示例:特征工程
from ta import add_all_ta_features
feature_df = add_all_ta_features(hk_clean,
open="Open",
high="High",
low="Low",
close="Close",
volume="Volume")
- Tushare Pro(港股/A股):需注册获取token,支持高频数据
- AkShare(开源解决方案):无需注册,集成多个数据源
- Yahoo Finance API(美股):免费历史数据接口
- 专业付费接口:Wind、Bloomberg、LINKSOFT等机构级数据源
- LINKSOFT:提供港股、美股、A股多市场数据源
# 使用Tushare获取港股实时数据示例
import tushare as ts
pro = ts.pro_api('YOUR_TOKEN')
hk_data = pro.hk_daily(ts_code='00700.HK', start_date='20230101', end_date='20231231')
# 使用yfinance获取美股数据
import yfinance as yf
aapl = yf.Ticker("AAPL")
us_hist = aapl.history(period="1y")
1.2 数据清洗关键步骤
def clean_finance_data(df):
# 处理缺失值
df = df.fillna(method='ffill').dropna()
# 转换日期格式
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date', inplace=True)
# 数据标准化
df = df[['open', 'high', 'low', 'close', 'vol']]
df.columns = ['Open', 'High', 'Low', 'Close', 'Volume']
return df
hk_clean = clean_finance_data(hk_data)
二、行情数据存储方案
2.1 数据库选型建议
数据库类型 | 适用场景 | 推荐方案 |
|---|---|---|
时序数据库 | 高频交易数据 | InfluxDB |
关系型数据库 | 结构化存储 | MySQL |
列式存储 | 大数据分析 | HBase |
2.2 InfluxDB存储示例
from influxdb import DataFrameClient
client = DataFrameClient(host='localhost', port=8086, username='admin', password='admin')
client.create_database('hk_stocks')
# 写入数据
client.write_points(hk_clean, 'tencent_stock',
tag_columns={'market': 'HK'},
protocol='line')
三、核心指标计算
3.1 技术指标计算
# 计算移动平均线
hk_clean['MA5'] = hk_clean['Close'].rolling(window=5).mean()
hk_clean['MA20'] = hk_clean['Close'].rolling(window=20).mean()
# 计算MACD
exp12 = hk_clean['Close'].ewm(span=12, adjust=False).mean()
exp26 = hk_clean['Close'].ewm(span=26, adjust=False).mean()
hk_clean['MACD'] = exp12 - exp26
hk_clean['Signal'] = hk_clean['MACD'].ewm(span=9, adjust=False).mean()
3.2 波动率计算
def calculate_volatility(series, window=30):
log_returns = np.log(series / series.shift(1))
return log_returns.rolling(window=window).std() * np.sqrt(252)
hk_clean['Volatility'] = calculate_volatility(hk_clean['Close'])
四、数据可视化实践
4.1 K线图绘制
import mplfinance as mpf
mpf.plot(hk_clean.tail(60),
type='candle',
style='charles',
title='Tencent Holdings (0700.HK)',
volume=True,
mav=(5,20))
4.2 交互式可视化
import plotly.graph_objects as go
fig = go.Figure(data=[go.Candlestick(x=hk_clean.index,
open=hk_clean['Open'],
high=hk_clean['High'],
low=hk_clean['Low'],
close=hk_clean['Close'])])
fig.update_layout(title='Interactive Stock Chart')
fig.show()
五、量化交易策略示例
5.1 双均线策略实现
hk_clean['Signal'] = 0
hk_clean['Signal'][5:] = np.where(hk_clean['MA5'][5:] > hk_clean['MA20'][5:], 1, 0)
hk_clean['Position'] = hk_clean['Signal'].diff()
# 计算策略回报
hk_clean['Strategy_Return'] = hk_clean['Position'].shift(1) * hk_clean['Close'].pct_change()
hk_clean['Cum_Return'] = (1 + hk_clean['Strategy_Return']).cumprod()
5.2 策略回测结果可视化
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(hk_clean['Cum_Return'], label='Strategy')
plt.plot((1 + hk_clean['Close'].pct_change()).cumprod(), label='Buy&Hold')
plt.legend()
plt.title('Strategy Backtesting Result')
plt.show()
六、注意事项及优化方向
- 数据时区处理:港股(UTC+8)与美股(UTC-5)需统一时区
- 复权处理:使用
adjust_price()
函数处理分红拆股 - 实时数据优化:WebSocket实时订阅方案
- 异常处理:增加重试机制和断点续传
# 带重试机制的API请求
from retrying import retry
@retry(stop_max_attempt_number=3, wait_fixed=2000)
def safe_api_call(api_func, *args, **kwargs):
try:
return api_func(*args, **kwargs)
except Exception as e:
print(f"API Error: {str(e)}")
raise
七、总结
本文完整展示了港美股行情数据的处理流程,涵盖从数据获取到策略回测的完整链路。在实际应用中,建议:
- 使用Docker容器化部署数据管道
- 结合Spark进行分布式计算
- 使用TA-Lib库扩展技术指标
- 接入风控模块实现完整交易系统
- 基于LSTM的价格预测模型
- 订单簿数据分析(Level2)
- 多因子选股策略开发
本文原文来自CSDN
热门推荐
张家界天门山5A景区:门票278元起,多条游览路线详解
美媒评新赛季联盟球队实力榜:湖人仅西部第12,鹈鹕成最大黑马!
NBA常规赛:马刺大胜湖人,西部排名再生变
湖人、快船彻底坐不住了!随着掘金轻取独行侠,西部最新排名来了
你吃的螺蛳粉里 是福寿螺还是田螺?我们抓活的实测了一下
一种血液检测可评估鳞状细胞癌,建议每年定期检查
4月15日全国抗癌日,专家详解四类癌症筛查要点
大风天钓鱼技巧:惊蛰时节的实战指南
乙肝患者必看!定期接受这些检查,肝癌不敢靠近!
SCC-Ag:诊断和监测鳞状细胞癌的辅助工具
海南旅游必去五地:海滩度假与雨林探险的完美结合
上海流浪猫案重审背后:中国2900万只流浪猫如何管理
中国流浪猫达2900万只,TNR项目资金缺口待解
猫成鸟类最大杀手:美国年均捕杀40亿只,澳3.78亿只
中国流浪猫数量达2900万,专家建议推广TNR管理模式
杭州社区首创“动文会”模式,科学管理实现人猫和谐
从发现到殖民:亚速尔群岛见证葡萄牙航海帝国崛起
亚速尔群岛:北大西洋中的火山明珠,入选世界最佳旅游地
三星HBM4开发提速,英伟达AI加速器引发内存竞赛
三星提前半年完成HBM4开发,瞄准英伟达AI加速器市场
航海王壮志雄心薇薇玩法攻略:技能机制与实战技巧详解
深圳西丽高铁枢纽年底开建,规模将超深圳北站
深圳至海南高铁开通,过海无需换乘,票价160元起
2024上半年必看影视剧大盘点:从《第二十条》到《庆余年2》
易县:京津冀一小时圈内的文旅新秀,2023年收入超2019同期
2024京津冀生态协同成绩单:PM2.5持续下降,多项创新机制落地
北京发布10条世界遗产游线路,59处遗产点串联京津冀
京津冀大气污染联防联控见成效,2024年PM2.5浓度再创新低
2024京津冀生态协同:PM2.5持续下降,跨界河流达Ⅱ类
2024年京津冀PM2.5浓度同比均下降,生态协同走深走实