拓冰建站拓冰建站
首页 / 资讯中心 / 正文

量化系列: 历史记录中的五个点位你不可不知

从这一章节开始#金亥跃江 就带领大家讲解 真正的策略知识了之前的都是基础数据的获取一定要打牢固基础数据的相关的知识。 没有基础数据那么策略将无法展开。 没有策略那么基础数据将毫无用途。我们的策略先从简单的开始入手。 虽然是最简单的但也是最重要的呀一定要坚持看完噢。股票K线的五个重点点位一个股票的K线常常用五个重要的点位: 最左边值 最右边值最高点值最低点值拐点值。 这五个点是非常重要的。是K 线形态分析、趋势判断、策略信号的基础核心数据没有它们就无法做技术面量化1. 最左点最右点锁定分析周期的“时间边界”最左点就是我们选定的分析周期内最早的那个交易日的价格最右点就是周期内最新的那个交易日的价格。比如我们分析某只股票近30天的走势最左点就是30天前的收盘价最右点就是今天的收盘价。这两个点一对比就能快速判断这段时间内股票是涨了还是跌了整体趋势是向上还是向下。实战中这两个点能帮我们快速定位趋势方向避免在震荡中迷失——比如最左点10元最右点12元哪怕中间有波动整体也是上行趋势可优先考虑做多反之则谨慎。2. 最高点最低点找到走势的“压力位支撑位”最高点就是分析周期内的最高收盘价最低点就是周期内的最低收盘价。这两个点是实战中最实用的支撑位和压力位参考。比如某股票近30天最高点15元最低点10元那么后续走势中15元就是强压力位股价涨到这里很可能回调10元就是强支撑位股价跌到这里很可能止跌回升。很多量化策略的止盈、止损都是基于这两个点位设置的——比如在最低点上方10%设止损在最高点下方10%设止盈简单又实用比盲目设置止损止盈靠谱多了。3. 拐点捕捉趋势的“转向信号”拐点就是走势从上涨转为下跌、或从下跌转为上涨的关键节点也是我们捕捉买卖机会的核心信号。很多人炒股票亏就是因为没抓住拐点要么在高点追涨要么在低点割肉。比如一只股票从10元涨到15元最高点然后跌到12元这个最高点就是“向下拐点”是止盈信号再从12元跌到10元最低点然后涨到13元这个最低点就是“向上拐点”是入场信号。上面的有些绕大家可以简单记忆:指标定义量化核心作用最左值时间段第一个价格开盘 / 收盘价确定区间起点计算区间涨跌幅基准最右值时间段最后一个价格确定区间终点判断最终走势最高点区间内最大值判断压力位、止盈位、顶部风险最低点区间内最小值判断支撑位、止损位、底部机会拐点值趋势反转点涨→跌 / 跌→涨核心交易信号抄底、逃顶、趋势反转如何计算五个点位呢?首先我们先有某个股票在一段时间内的历史的数据最左值 就是 日期最小的那个K线数据信息最右值 就是 日期最大的那个K线数据信息。最大值 就是 最高价最大的那个K线数据信息 如果有最大值一样的那么以日期大的为准。最小值 就是 最低价最小的那个K线数据信息 如果有最小值一样的那么以日期大的为准。拐点值 就是 拐点分为 最大拐点和最小拐点。 最大拐点就是 左边的比它小 右边的也比它小。 最小拐点就是 左边的比它大 右边的也比它大。说是好说理解也好理解但怎么实现呢? 别着急小亥立马告诉你。计算五个点位定义 Vo 对象先定义一下 Vo 对象: StrategyPointVoData public class StrategyPointVo implements Serializable { /** * 最左侧的策略点时间最早的点 * p代表时间序列的起始点通常用于确定分析周期的开始位置。/p * p在 K 线图中这是用户选择的时间范围内的第一个交易日的数据点。/p */ private StockStrategyPoint left; /** * 最右侧的策略点时间最新的点 * p代表时间序列的最新点通常代表分析周期的结束位置。/p * p在 K 线图中这是用户选择的时间范围内的最后一个交易日的数据点。/p */ private StockStrategyPoint right; /** * 价格最高点 * p在整个分析周期内价格达到的最大值对应的策略点。/p * p如果存在多个相同最高价格的点返回第一个匹配的点。/p * p该点用于识别阻力位和历史高点。/p */ private StockStrategyPoint max; /** * 价格最低点 * p在整个分析周期内价格达到的最小值对应的策略点。/p * p如果存在多个相同最低价格的点返回第一个匹配的点。/p * p该点用于识别支撑位和历史低点。/p */ private StockStrategyPoint min; /** * 连续递增峰值点列表 * p记录价格上涨过程中的所有关键峰值点。/p * p从时间序列的第一个点开始只要当前点的价格大于等于前一个峰值点就记录为新峰值。/p * p该列表用于分析股票的持续上涨趋势识别上涨动能的变化。/p * p最后一个点代表连续上涨趋势的终点。/p */ private ListStockStrategyPoint maxPointList; /** * 连续递减谷值点列表 * p记录价格下跌过程中的所有关键谷值点。/p * p从最高点之后开始只要当前点的价格小于等于前一个谷值点就记录为新谷值。/p * p该列表用于分析股票的持续下跌趋势识别下跌动能的变化。/p * p最后一个点代表连续下跌趋势的终点。/p */ private ListStockStrategyPoint minPointList; /** * 关键拐点列表 * p包含 4 个关键转折点左端点、最高点、最低点、右端点。/p * p这些点构成了价格走势的基本框架用于/p * ul * li绘制趋势线和通道/li * li识别重要的技术形态如头肩顶、双底等/li * li辅助判断买卖时机/li * /ul */ private ListStockStrategyPoint inflectionList; }StockStrategyPoint 相对简单一点Data public class StockStrategyPoint implements Serializable { private Integer index; private String date; private BigDecimal price; private Double priceD; public Double getPriceD() { return BigDecimalUtil.toDouble(price,2); } }主方法计算public OutputResultStrategyPointVo getPointInfo(Integer day, String code) { StockHistoryQueryParam stockHistoryQueryParam new StockHistoryQueryParam(); stockHistoryQueryParam.setCode(code); stockHistoryQueryParam.setStartDate(dateHelper.getBeforeWorkingDateByDay(new Date(), day)); ListStockHistoryDo stockHistoryDoList stockHistoryService.listByCondition(stockHistoryQueryParam); if (CollUtil.isEmpty(stockHistoryDoList)) { return OutputResult.buildSucc(); } PointUtil.stockListToPointList(stockHistoryDoList); StrategyPointVo strategyPointVo new StrategyPointVo(); StockStrategyPoint leftPoint PointUtil.findLeftmostPoint(); log.info(leftPoint: {}, leftPoint); StockStrategyPoint rightPoint PointUtil.findRightmostPoint(); log.info(rightPoint: {}, rightPoint); StockStrategyPoint highestPoint PointUtil.findHighestPoint(); log.info(highestPoint: {}, highestPoint); StockStrategyPoint lowerPoint PointUtil.findLowestPoint(); log.info(lowerPoint: {}, lowerPoint); ListStockStrategyPoint maxPointList PointUtil.findSequentialMaxPoints(); log.info(maxPointList: {}, maxPointList); ListStockStrategyPoint minPointList PointUtil.findSequentialMinPoints(); log.info(minPointList: {}, minPointList); ListStockStrategyPoint inflectionList PointUtil.findInflectionPoint(); log.info(inflectionList: {}, inflectionList); strategyPointVo.setLeft(leftPoint); strategyPointVo.setRight(rightPoint); strategyPointVo.setMax(highestPoint); strategyPointVo.setMin(lowerPoint); strategyPointVo.setMaxPointList(maxPointList); strategyPointVo.setMinPointList(minPointList); strategyPointVo.setInflectionList(inflectionList); return OutputResult.buildSucc(strategyPointVo); }其中 PointUtil 是一个类似的工具类 为了避免篇幅过长对非IT读者好一些 就只放置重要的代码了:/** * 查找所有连续递增的峰值点 * p从 dataList 的第一个点开始依次向后比较。/p * p只要当前点的价格大于等于前一个峰值点的价格就将其记录为新的峰值点。/p * p该方法用于识别价格持续上涨的关键节点。/p * * return 包含所有连续递增峰值点的列表如果 dataList 为空则返回空列表 */ public static ListStockStrategyPoint findSequentialMaxPoints() { ListStockStrategyPoint maxPoints new ArrayList(); if (CollUtil.isEmpty(PointUtil.dataList)) { return maxPoints; } StockStrategyPoint currentMax PointUtil.dataList.getFirst(); maxPoints.add(currentMax); for (int i 1; i PointUtil.dataList.size() -1; i) { StockStrategyPoint point PointUtil.dataList.get(i); if (point.getPrice().compareTo(currentMax.getPrice()) 0) { currentMax point; maxPoints.add(currentMax); } } return maxPoints; } /** * 查找所有连续递减的谷值点 * p从最高点之后的第一个点开始依次向后比较。/p * p只要当前点的价格小于等于前一个谷值点的价格就将其记录为新的谷值点。/p * p该方法用于识别价格持续下跌的关键节点。/p * * return 包含所有连续递减谷值点的列表如果 dataList 为空则返回空列表 */ public static ListStockStrategyPoint findSequentialMinPoints() { ListStockStrategyPoint minPoints new ArrayList(); if (PointUtil.dataList.isEmpty()) { return minPoints; } StockStrategyPoint sequentialMaxPointsForOne findSequentialMaxPointsForOne(); StockStrategyPoint currentMin PointUtil.dataList.get(sequentialMaxPointsForOne.getIndex() -1); minPoints.add(currentMin); for (int i sequentialMaxPointsForOne.getIndex(); i PointUtil.dataList.size(); i) { StockStrategyPoint point PointUtil.dataList.get(i); if (point.getPrice().compareTo(currentMin.getPrice()) 0) { currentMin point; minPoints.add(currentMin); } } return minPoints; } /** * 查找策略点的关键拐点 * p拐点包括起始点、连续上涨的终点、连续下跌的终点、最新点。/p * p这些点用于描绘价格走势的关键转折位置辅助技术分析。/p * * return 包含所有关键拐点的列表固定包含 4 个点左端点、最高点、最低点、右端点 */ public static ListStockStrategyPoint findInflectionPoint() { ListStockStrategyPoint inflectionPoints new ArrayList(); inflectionPoints.add(findLeftmostPoint()); inflectionPoints.add(findSequentialMaxPointsForOne()); inflectionPoints.add(findSequentialMinPointsForOne()); inflectionPoints.add(findRightmostPoint()); return inflectionPoints; }可以编写一个 ControllerGetMapping(/getPointInfo/{day}/{code}) public OutputResultStrategyPointVo getPointInfo( Parameter(description 交易日天数, required true, example 100) PathVariable(day) Integer day, Parameter(description 股票编码, required true, example 000001) PathVariable(code) String code) { return pointBusiness.getPointInfo(day,code); }适用的场景波段趋势策略核心用法•最左值 趋势起点•最右值 当前趋势强度•最高点不断抬高 上升趋势 → 持有•最低点不断抬高 上升趋势 → 加仓策略逻辑• 高点越来越高 上升通道 → 持股• 低点越来越低 下降通道 → 空仓 / 做空• 出现拐点 趋势可能反转 → 减仓 / 清仓实战买卖点• 拐点向上 → 建仓• 新高不破 → 减仓• 新低不创 → 持有支撑阻力交易策略核心用法•最低点 支撑位•最高点 压力位•拐点 支撑 / 阻力确认点策略逻辑1. 跌到历史最低点支撑→ 买入2. 涨到历史最高点压力→ 卖出3. 拐点出现 → 确认支撑 / 阻力有效实战表现• 震荡市收益最稳定• 几乎所有游资、量化都在用四、区间突破策略最容易抓涨停适用场景横盘很久的股票、箱体震荡核心用法•最高点 上沿•最低点 下沿•最左 最右 区间长度策略逻辑• 价格突破区间最高点→ 买入追突破• 价格跌破区间最低点→ 卖出 / 止损• 拐点用来过滤假突破实战效果• 抓主升浪、抓涨停成功率极高• 适合短线、打板策略福利领取关键点位完整代码包免费送为了帮大家快速落地整理了本次第55篇的完整可运行代码包包含所有代码片段、配置文件、调用示例直接导入项目即可运行无需二次开发、无需调试参数1. 3个核心实体/工具类StockStrategyPoint、StrategyPointVo、PointUtil下期预告下期准备讲解一下 均线买入策略。结尾互动如果觉得这篇文章对你有帮助别忘了点赞在看转发让更多量化开发者少走弯路一起完善自己的量化交易体系 关注我持续解锁量化实战干货文章仅供学习使用千万不可应用于股市避免对某券商产生服务器压力。#金亥跃江聊量化 #金亥跃江 #股票量化 #量化
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门