
在上一篇中我们学会了如何用Tushare获取单只股票的数据并做基础可视化。但量化分析的核心在于从数据中找规律、把规律变成策略、然后用数据验证策略的可行性。今天我们更进一步学习多股票数据获取、指标计算、策略构建和数据存储——这将是量化投资中日常打交道最多的几个环节。一、批量获取多股票行情实际分析中往往需要同时处理多只股票的数据。下面这段代码可以批量获取某个时间区间内全部A股的日线数据pythonimport tushare as ts import pandas as pd from tqdm import tqdm # 先获取全部股票列表 pro ts.pro_api(/你的Token/) stock_list pro.stock_basic(exchange, list_statusL)[[ts_code, name]] # 批量获取日线数据 def fetch_stock_data_batch(ts_code_list, start_date, end_date): data_dict {} for ts_code in tqdm(ts_code_list, desc正在获取数据): try: df pro.daily(ts_codets_code, start_datestart_date, end_dateend_date) if not df.empty: data_dict[ts_code] df.sort_values(trade_date) except Exception as e: print(f获取{ts_code}失败: {e}) return data_dict注意免费版每日调用次数有限建议根据自己的需求合理安排采集范围和频率避免超限。二、构建双均线策略双均线策略是量化投资最经典的入门策略之一。当短期均线上穿长期均线时我们认为趋势向好给出买入信号当短期均线下穿长期均线时给出卖出信号。pythondef dual_ma_strategy(df, fast_period5, slow_period20): df df.copy() df[fast_ma] df[close].rolling(windowfast_period).mean() df[slow_ma] df[close].rolling(windowslow_period).mean() # 生成交易信号快线上穿慢线时买入1下穿时卖出-1 df[signal] 0 df[signal] np.where(df[fast_ma] df[slow_ma], 1, 0) df[position] df[signal].diff() return df # 对茅台数据应用策略 result dual_ma_strategy(df) result[[close, fast_ma, slow_ma, signal, position]].tail(20)得到position列1表示买入-1表示卖出。这个简单的框架就是量化策略最底层的逻辑骨架。三、策略可视化pythonfig, axes plt.subplots(2, 1, figsize(16, 12), sharexTrue) # 价格与均线 ax1 axes[0] ax1.plot(df.index, df[close], label收盘价, colorblue, alpha0.6) ax1.plot(df.index, result[fast_ma], label5日均线, colororange, linewidth1.5) ax1.plot(df.index, result[slow_ma], label20日均线, colorgreen, linewidth1.5) ax1.set_title(双均线策略 - 价格与均线, fontsize14) ax1.set_ylabel(价格) ax1.legend() # 买卖信号 ax2 axes[1] buy_signals result[result[position] 1] sell_signals result[result[position] -1] ax2.plot(df.index, df[close], colorgray, alpha0.5, label收盘价) ax2.scatter(buy_signals.index, buy_signals[close], marker^, colorred, s100, label买入信号, zorder5) ax2.scatter(sell_signals.index, sell_signals[close], markerv, colorgreen, s100, label卖出信号, zorder5) ax2.set_title(买卖信号标注, fontsize14) ax2.set_ylabel(价格) ax2.legend() plt.tight_layout() plt.show()四、数据存储到本地数据库量化分析需要大量历史数据每次都从API拿并不现实。建议采用三级存储架构热数据层Redis缓存最近数据温数据层PostgreSQL存储1-5年数据冷数据层HDFS/本地文件存储全量历史即便是初学者也推荐至少将数据存入本地SQLite数据库python# 使用to_sql存入本地数据库 from sqlalchemy import create_engine engine create_engine(sqlite:///stock_data.db) df_basic pro.stock_basic(exchange, list_statusL) df_basic.to_sql(stock_basic, engine, if_existsreplace, indexFalse) print(✓ 数据已存入本地数据库) # 从本地数据库读取 df pd.read_sql(SELECT * FROM stock_basic WHERE industry IS NOT NULL, engine)小结今天我们从单只股票跨越到了多股票分析从简单可视化跨越到了策略构建还学会了将数据存入本地。这些都是量化投资日常工作中最实用的技能。下一篇我们将迈向真正的高阶领域——多因子模型和机器学习预测。推荐阅读上一篇请戳这里https://blog.csdn.net/ted_hou/article/details/160868971