【AI量化交易实战】第02讲:看懂K线与估值——A股市场语言一本通

📅 2026/7/22 9:07:36
【AI量化交易实战】第02讲:看懂K线与估值——A股市场语言一本通
开篇导语上一讲我们绘制了量化交易的全局地图并认识了四位数字员工。今天进入实战之前最关键的一步掌握市场的语言。想象你突然被扔到一个陌生的国度街头每个人的对话你听不懂路牌上的文字你读不懂。这就是很多新手刚打开炒股软件时的状态——满屏跳动的数字、红红绿绿的柱子、各种缩写PE、PB、MACD...但完全不知道它们实际在说什么。这一讲的目标就是让你学会当地语言看懂K线的形态含义理解成交量和估值的信号作用区分技术面和基本面两种分析框架的适用场景并掌握A股交易的核心规则。小雅分析师做策略分析的前提就是先要能读懂这些基础信息。学完本节后你将能够从一根K线中提取四个关键价格并理解多空力量的博弈用成交量辅助判断价格趋势的可信度区分技术面分析与基本面分析的核心差异在策略开发中避开A股交易规则的常见陷阱2.1 K线——市场多空博弈的心电图概念讲解K线蜡烛图是金融交易中最基础、最常用的可视化元素。一根K线包含了四个关键价格开盘价Open这一段时间内的第一笔成交价收盘价Close这一段时间内的最后一笔成交价最高价High这一段时间内触及的最高成交价最低价Low这一段时间内触及的最低成交价在A股中红色K线阳线表示收盘价高于开盘价——这段时间多方占了上风绿色K线阴线则相反——空方主导了这段时间。K线的实体开盘与收盘之间的矩形部分和影线延伸到最高/最低价的细线分别告诉我们实体越长→ 多空力量越悬殊趋势越明确上影线越长→ 多方试图推高但被空方打回是压力信号下影线越长→ 空方试图打压但被多方拉起是支撑信号代码演示下面用Python绘制一只股票的K线图直观展示OHLC开高低收四个价位import akshare as ak import pandas as pd import matplotlib.pyplot as plt from mpl_finance import candlestick_ochl import matplotlib matplotlib.rcParams[font.sans-serif] [SimHei] matplotlib.rcParams[axes.unicode_minus] False # 获取贵州茅台近20个交易日数据 df ak.stock_zh_a_hist(symbol600519, perioddaily, start_date20250601, end_date20250720, adjustqfq) df[日期] pd.to_datetime(df[日期]) # 准备K线图数据mpl_finance 需要的格式是 date数值、open、close、high、low df[date_num] df[日期].map(matplotlib.dates.date2num) candle_data df[[date_num, 开盘, 收盘, 最高, 最低]].values fig, ax plt.subplots(figsize(14, 6)) candlestick_ochl(ax, candle_data, width0.6, colorupred, colordowngreen, alpha0.8) # A股红涨绿跌 ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter(%m-%d)) ax.set_title(贵州茅台(600519) K线图近20个交易日, fontsize14) ax.set_ylabel(价格元) plt.xticks(rotation45) plt.tight_layout() plt.show() # 同时输出最近5天的OHLC数据供查阅 print(最近5个交易日的OHLC数据) cols [日期, 开盘, 收盘, 最高, 最低, 成交量] print(df[cols].tail(5).to_string(indexFalse))关键要点单根K线只能反映当期的多空博弈结果连续多根K线构成的组合形态才更有判断价值如三连阳、十字星组合等长上影线 大成交量往往意味着主力出货是一个风险信号不同时间周期的K线含义不同——日线适合判断中期趋势分钟线适合捕捉日内进出场点不要单独依赖K线形态做决策必须和成交量、趋势位置配合使用2.2 成交量——验证趋势的测谎仪概念讲解成交量Volume是市场活跃度的直接体现。技术分析领域有一句经典格言价为先量为证——价格的涨跌需要成交量来验证其可信度。价格变化成交量变化信号含义价格上涨成交量放大趋势可信多方力量强价格上涨成交量萎缩上涨乏力可能接近尾声价格下跌成交量放大恐慌杀跌或主力出货价格下跌成交量萎缩阴跌空方力量在衰减成交量还有一个重要应用识别关键突破点。当价格突破前期高点或低点时如果伴随着成交量的显著放大通常放大1.5倍以上突破的有效性更高。反之没有成交量配合的突破往往是假突破价格会很快回到原来的区间。做量化策略时成交量可以作为一个过滤条件加入策略逻辑中。例如均线金叉信号 当日成交量 20日均成交量的1.2倍才认为是一个有效的买入信号。代码演示我们来计算成交量放大倍数并标注哪些交易日的成交量异常放大# 计算成交量的20日均值和放大倍数 df[volume_ma20] df[成交量].rolling(window20).mean() df[volume_ratio] df[成交量] / df[volume_ma20] # 定义异常放量日成交量超过20日均量的1.5倍 df[is_heavy_volume] df[volume_ratio] 1.5 # 找出同时满足价格上涨 成交量放大的强势日 df[pct_change] df[收盘].pct_change() df[strong_day] (df[pct_change] 0) (df[is_heavy_volume]) print(近期放量上涨的交易日价格涨 量能均量1.5倍) strong_days df[df[strong_day]][[日期, 收盘, pct_change, volume_ratio]] if not strong_days.empty: print(strong_days.to_string(indexFalse, formatters{ pct_change: {:.2%}.format, volume_ratio: {:.2f}.format })) else: print(当前时间段内无符合条件的放量上涨日)关键要点放量不一定是好事——底部放量可能是资金进场高位放量可能是主力出货缩量不一定是坏事——上涨趋势中的轻微缩量调整往往是健康的回踩量化策略中成交量过滤条件可以有效降低假信号的概率但也会减少交易次数极端成交量如量比超过3往往是事件驱动导致如公告、政策、板块轮动需要结合新闻面综合判断2.3 技术面 vs 基本面——两种不同的世界观概念讲解很多新手困惑的一个问题是到底该看技术面还是基本面答案是——两者回答的是不同的问题。维度技术面分析基本面分析研究对象价格、成交量、指标公司财务、行业趋势、宏观经济核心假设价格反映一切信息历史会重演价格最终回归内在价值时间尺度天到周级别的中短期交易月到年级别的长期持有典型工具K线、均线、MACD、RSI、布林带PE市盈率、PB市净率、ROE净资产收益率适合做什么择时——什么时候买卖选股——买什么一个典型的量化策略往往是两者结合的产物用基本面因子筛出优质股票池选股再用技术指标确定买卖时机择时。以市盈率PE 股价 / 每股收益为例PE是估值指标中最常用的一项。PE越低理论上股价越便宜但不同行业的PE合理区间差异巨大——银行股PE普遍在5-8倍科技股PE可以到30-50倍。因此PE不能跨行业直接比较。代码演示下面实现一个简易的PE筛选 均线择时组合逻辑展示技术面和基本面如何配合# 模拟一个基本面筛选 技术面择时的组合策略框架 # 注意此代码为框架示例实际PE数据需从akshare的财务接口获取 import numpy as np # --- 第一步基本面筛选模拟数据 --- # 假设我们从财务接口获取了某股票池的PE数据 # 筛选条件PE 0剔除亏损且 PE 30估值合理 candidate_stocks { 601318: {name: 中国平安, pe: 9.5}, 600036: {name: 招商银行, pe: 6.8}, 300750: {name: 宁德时代, pe: 42.0}, # PE过高被剔除 000858: {name: 五粮液, pe: 22.3}, 002415: {name: 海康威视, pe: 25.1}, } # 执行基本面过滤 pe_max 30 # PE上限 filtered_pool { code: info for code, info in candidate_stocks.items() if 0 info[pe] pe_max } print(f基本面筛选结果0 PE {pe_max}) for code, info in filtered_pool.items(): print(f {info[name]}({code}): PE{info[pe]}) # --- 第二步技术面择时以茅台为例 --- # 简易均线金叉判断5日均线上穿20日均线 → 买入信号 df[ma5] df[收盘].rolling(window5).mean() df[ma20] df[收盘].rolling(window20).mean() # 计算金叉信号前一天MA5 MA20当天MA5 MA20 df[golden_cross] ( (df[ma5].shift(1) df[ma20].shift(1)) (df[ma5] df[ma20]) ) cross_dates df[df[golden_cross]][日期] print(f\n近期均线金叉信号日期) for d in cross_dates[-5:]: print(f {d.strftime(%Y-%m-%d)})关键要点技术面和基本面不是对立关系而是互补关系——一个回答何时一个回答什么基本面数据如PE、ROE通常按季度更新时效性远不如日度的技术指标量化多因子选股的核心思想是用多个基本面和技术面指标共同打分选出综合得分最高的股票价值投资不等于PE越低越好——低PE可能意味着市场对公司未来增长的预期悲观价值陷阱2.4 A股交易规则——量化策略的沙盒边界概念讲解交易规则是量化策略的硬约束。不了解规则就写策略等于在不知道场地尺寸的情况下设计足球战术。以下是A股交易中与量化策略开发最相关的规则规则项具体规定对量化策略的影响T1制度当天买入的股票次日才能卖出日内回转策略无法直接实现需用底仓变相T0涨跌停板主板±10%科创板/创业板±20%策略需要处理涨停买不进、跌停卖不出的情况最小交易单位100股1手的整数倍资金量小时会出现买不起一手高价股的问题交易时间9:30-11:30, 13:00-15:00集合竞价阶段的委托规则与连续竞价不同印花税卖出成交额的0.05%2023年减半后高频策略的摩擦成本需要单独建模此外还有一个容易被忽略但非常重要的规则连续竞价期间的价格笼子。买入申报价不得高于基准价的102%卖出申报价不得低于基准价的98%。这意味着你不能在市场价100元的时候直接挂105元买入——超过2%的偏离会被交易系统直接拒绝。代码演示写一个简单的下单价格计算器确保策略生成的委托价在价格笼子范围内def calculate_order_price(current_price, direction, aggression0.01): 根据当前价格和方向计算实际可用的委托价格 参数 current_price: 当前基准价格 direction: buy 买入 / sell 卖出 aggression: 激进程度0~0.02表示在允许范围内偏离基准价的比例 返回 tuple: (委托价, 是否触及价格笼子上限) if direction buy: # 买入价不能超过基准价的102% max_allowed current_price * 1.02 target_price current_price * (1 aggression) actual_price min(target_price, max_allowed) capped target_price max_allowed elif direction sell: # 卖出价不能低于基准价的98% min_allowed current_price * 0.98 target_price current_price * (1 - aggression) actual_price max(target_price, min_allowed) capped target_price min_allowed else: raise ValueError(direction 必须为 buy 或 sell) return round(actual_price, 2), capped # 使用示例 current 100.00 buy_price, buy_capped calculate_order_price(current, buy, aggression0.03) sell_price, sell_capped calculate_order_price(current, sell, aggression0.03) print(f当前基准价: {current}元) print(f买入委托价: {buy_price}元 {触及笼子上限 if buy_capped else }) print(f卖出委托价: {sell_price}元 {触及笼子下限 if sell_capped else }) print(f\n说明A股连续竞价阶段买卖申报价偏离基准价不超过±2%)关键要点T1是A股量化策略设计的最大约束几乎所有日线及以上周期的策略都受它影响涨停板限制意味着突破买入策略可能在行情最好的一天买不到而在次日追高时已经错过了最佳入场点价格笼子只适用于连续竞价阶段9:30-11:30, 13:00-15:00集合竞价阶段的申报价限制更宽松不同板块的交易规则有差异——在策略中操作科创板或北交所股票时需动态调整涨跌停比例参数实战总结本节我们把市场的基础语言过了一遍核心知识脉络如下K线是心电图OHLC四个价位记录了多空博弈的实时动态实体和影线各有含义成交量是测谎仪价格信号是否可信成交量是关键验证指标技术面 vs 基本面前者管什么时候买卖后者管买什么量化策略往往两者结合规则是沙盒T1、涨跌停、价格笼子等A股特有的制度是量化策略的不可逾越边界常见误区提醒误区一只看K线形态不看成交量。缩量的突破绝大多数是假突破策略中应该加入成交量过滤误区二用PE判断所有行业。银行的PE天然低、科技股的PE天然高跨行业比较PE没有意义误区三用日线策略的数据频率去预测日内走势。不同时间尺度的K线反映的是不同层级的市场行为下一讲小雅的分析师工位将正式搭建——我们会配置Python开发环境、安装量化工具链并通过QMT获取第一份市场数据把从数据到决策的完整链路打通。下一篇预告第03讲PythonQMT环境搭建——量化研究工作台指南工具链就绪才能打仗。我们将从零开始搭建Python量化开发环境连接QMT行情源并用多因子选股模型完成人生的第一个从数据到决策的量化项目。