Loading... ```python # 判断上下影线和实体长度 condition1 = df['开盘价_复权'] > df['收盘价_复权'] df.loc[condition1, '上影线'] = df['最高价_复权'] - df['开盘价_复权'] df.loc[condition1, '下影线'] = df['收盘价_复权'] - df['最低价_复权'] df.loc[condition1, '实体'] = df['开盘价_复权'] - df['收盘价_复权'] condition2 = df['开盘价_复权'] <= df['收盘价_复权'] df.loc[condition2, '上影线'] = df['最高价_复权'] - df['收盘价_复权'] df.loc[condition2, '下影线'] = df['开盘价_复权'] - df['最低价_复权'] df.loc[condition2, '实体长度'] = df['收盘价_复权'] - df['开盘价_复权'] df['K线长度'] = df['最高价_复权'] - df['最低价_复权'] """ 识别标准: 出现在下跌趋势中, 对实体颜色没有要求(可以为阳线, 也可以为阴线); 上影线的长度至少是实体长度的2倍; 没有下影线或者下影线很短; 1.倒锤子线形态(反转, 看涨) 上影线的长度大于或等于下影线和实体长度之和的2倍; 实体长度大于下影线长度的2倍; 实体长度大于整根K线长度的十分之一; """ condition1 = df['上影线'] >= 2 * df['实体长度'] condition2 = df['实体长度'] > 2 * df['下影线'] condition3 = df['实体长度'] > 0.1 * df['K线长度'] """ 识别标准 实体位于整个价格区间的上端; 下影线的长度至少达到实体长度的2倍; 在这类K线中, 应当没有上影线, 即使有上影线, 其长度也是极短的; 下影线越长, 上影线越短, 实体越小, 该K线就越有意义; 2.锤子线形态(反转, 看涨) K线的实体存在, 但较短, 其长度大于整根K线长度的0.1倍; 对实体的颜色没有严格要求; 下影线长度大于实体长度的2倍; """ condition1 = df['实体长度'] > 0.1 * df['K线长度'] condition2 = df['下影线'] > 2 * df['实体长度'] """ 识别标准 看涨执带线实体比较长, 收盘价在最高价附近; 看涨执带线以最低价开盘, 基本无下影线; 3.执带线形态(反转, 看涨) 开盘价等于最低价, 没有下影线; 开盘价低于前一天的收盘价, 当日收阳线(或假阳线), 并且实体长度大于等于前七天K线实体长度平均值的2倍; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'] <= df['最低价_复权'] condition2 = df['开盘价_复权'] < df['收盘价_复权'].shift(1) condition3 = df['收盘价_复权'] > df['开盘价_复权'] condition4 = df['实体长度'] > 2 * df['实体长度_MA_7'] """ 识别标准 在看涨吞没形态出现之前, 价格运动必须处在清晰可辨的下降趋势之中; 看涨吞没形态由两根K线组成, 其中第二根K线的实体必须覆盖第一根K线的实体; 4.吞没形态(反转, 看涨) 第一根K线为阴线, 实体长度大于整根K线长度的十分之一; 第二天出现一根大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 实体部分完全吞没前一天的实体, 两根K线实体顶部或底部相同, 但不是同时相等, 即收盘价高于或等于前一天的开盘价, 开盘价低于前一天的 收盘价, 或者收盘价大于前一天的开盘价, 开盘价低于等于前一天的收盘价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 0.1 * df['K线长度'].shift(1) condition3 = df['开盘价_复权'] < df['收盘价_复权'] condition4 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition5 = df['最低价_复权'] + df['下影线'] + df['实体长度'] > df['最低价_复权'].shift(1) + df['下影线'].shift(1) + df['实体长度'].shift( 1) condition6 = df['最低价_复权'] + df['下影线'] <= df['最低价_复权'].shift(1) + df['下影线'].shift(1) condition7 = df['收盘价_复权'] >= df['开盘价_复权'].shift(1) condition8 = df['开盘价_复权'] <= df['收盘价_复权'].shift(1) """ 识别标准 秉承前期下跌走势, 第一根K线为长阴线, 将第二天K线的小实体完全包含起来; 两根K线的实体长度至关重要, 而上下影线的作用较小; 第二天的K线实体越小, 整个形态的反转力量就越大; 5.孕线形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天出现一根阳线, 实体长度大于整根K线长度的十分之一, 并包含在前一天的实体范围内, 两根K线实体顶部或 底部相同, 但不是同时相等; """ df['K线长度_MA_7'] = ta.EMA(df['K线长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['K线长度'].shift(1) condition3 = df['收盘价_复权'] > df['开盘价_复权'] condition4 = df['实体长度'] > 0.1 * df['K线长度'] condition5 = df['最低价_复权'] + df['下影线'] + df['实体长度'] <= df['最低价_复权'].shift(1) + df['下影线'].shitf(1) + df['实体长度'].shitf( 1) condition6 = df['最低价_复权'] + df['下影线'] > df['最低价_复权'].shift(1) + df['下影线'].shitf(1) condition7 = df['最低价_复权'] + df['下影线'] + df['实体长度'] < df['最低价_复权'].shift(1) + df['下影线'].shitf(1) + df['实体长度'].shitf( 1) condition8 = df['最低价_复权'] + df['下影线'] >= df['最低价_复权'].shift(1) + df['下影线'].shitf(1) """ 识别标准 市场处于明确的下跌趋势中, 第一根K线为长阴线; 第二天的K线为十字星, 并被第一天的长阴线完全包含起来; 6.十字孕线形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体平均值的2倍; 第二天出现一根十字星(实体长度小于K线长度的十分之一), 第一天的开盘价高于或等于第二天的最高价, 收盘价低于或等于第二天的最低价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['实体长度'] < 0.1 * df['K线长度'] condition4 = df['最高价_复权'] <= df['开盘价_复权'].shift(1) condition5 = df['最低价_复权'] >= df['收盘价_复权'].shift(1) """ 识别标准 市场处于下降趋势, 第一天出现一根大阴线; 第二天出现一根大阳线, 它的开盘价低于第一天的最低价; 第二天的收盘价应该高于第一天大阴线实体的中点; 7.刺透线形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体平均值的2倍; 第二天出现一根大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 开盘价低于前一天的最低价, 收盘价高于前一天大阴线实体部分的中间位置且小于前一天的开盘价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] < df['收盘价_复权'] condition4 = df['实体长度'] < 2 * df['实体长度_MA_7'] condition5 = df['开盘价_复权'] <= df['最低价_复权'].shift(1) condition6 = df['收盘价_复权'] > df['最低价_复权'].shift(1) + df['下影线'].shift(1) + 0.5 * df['实体长度'].shift(1) condition7 = df['收盘价_复权'] < df['开盘价_复权'].shift(1) """ 识别标准 市场此前下跌趋势明确; 第一天出现一根大阴线, 第二天存在价格跳空且收一根十字星; 十字星的上下影线不能过长; 8.十字星形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体平均值的2倍; 第二天向下跳空开盘, 实体长度小于整根K线长度的十分之一, 影线长度小于前七天K线长度平均值的50%; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) df['K线长度_MA_7'] = ta.EMA(df['K线长度'], timeperiod=7) df['影线长度'] = df['上影线'] + df['下影线'] condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] < df['收盘价_复权'].shift(1) condition4 = df['收盘价_复权'] < df['收盘价_复权'].shift(1) condition5 = df['实体长度'] < 0.1 * df['K线长度'] condition6 = df['影线长度'] < 0.5 * df['K线长度_MA_7'] """ 识别标准 此形态发生在下跌趋势中; 第二天的收盘价并没有推进到前一天K线实体内部, 而是仅仅回升到前一天的收盘价; 两根K线实体的颜色相反, 且实体长度较长; 9.约会线形态(反转, 看涨) 看涨约会线第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二根K线是一根大阳线, 实体长度大于前七天实体长度平均值的2倍; 上述两根K线的收盘价相同; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) df['K线长度_MA_7'] = ta.EMA(df['K线长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['收盘价_复权'] < df['开盘价_复权'] condition4 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition5 = df['收盘价_复权'] == df['收盘价_复权'].shift(1) """ 识别标准 出现在明显的下跌趋势中; 组合中第一天出现一根大阴线; 组合中第二天出现一根相对较小的阴线, 并且实体部分被第一天阴线的实体部分完全吞没; 10.信鸽形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天出现一根小阴线, 实体长度大于整根K线长度的十分之一, 小于前七天K线实体长度平均值的0.5倍, 它的实体被第一根阴线吞没; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] > df['收盘价_复权'] condition4 = df['实体长度'] > 0.1 * df['K线长度'] condition5 = df['实体长度'] < 0.5 * df['实体长度_MA_7'] """ 识别标准 此前下降趋势明显, 且第一天出现一根大阴线; 第二天高开低走, 前后两天的收盘价相同; 11.相同低价形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天出现一根假阴线, 实体长度大于整根K线长度的十分之一, 它的收盘价和前一天K线的收盘价相同; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] > df['收盘价_复权'] condition4 = df['实体长度'] > 0.1 * df['K线长度'] condition5 = df['收盘价_复权'] == df['收盘价_复权'].shift(1) """ 识别标准 市场经过一段下跌趋势之后, 出现一根大阴线, 第二天则出现跳空高开高走的大阳线; 两根K线之间必须存在一个跳空缺口; 12.反冲形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍, 上影线(或下影线)小于等于整根K线长度的5%; 第二天出现一根大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 开盘价高于前一天的开盘价, 上影线(或下影线)小于等于整根K线长度的5%; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3_1 = df['上影线'].shift(1) <= 0.05 * df['K线长度'] condition3_2 = df['下影线'].shift(1) <= 0.05 * df['K线长度'] condition4 = df['开盘价_复权'] > df['收盘价_复权'] condition5 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition6 = df['开盘价_复权'] > df['开盘价_复权'].shift(1) condition7_1 = df['上影线'] <= 0.05 * df['K线长度'] condition7_2 = df['下影线'] <= 0.05 * df['K线长度'] """ 识别标准 在下跌趋势之后, K线组合在第一天出现一根大阴线; K线组合在第二天出现一根大阳线, 开盘价与前一天的收盘价相等或略高, 而收盘价接近当天的最高价, 并且高于前一天的最高价; 13.白色一兵形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天出现一根大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 开盘价等于或高于前一天的收盘价且小于前一天的开盘价, 收盘价高于前一天的最高价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > 2 * df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] < df['收盘价_复权'] condition4 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition5 = df['开盘价_复权'] >= df['收盘价_复权'] condition6 = df['开盘价_复权'] < df['开盘价_复权'] condition7 = df['收盘价_复权'] > df['最高价_复权'].shift(1) """ 识别标准 该形态处于下跌趋势中, 第一天出现一根大阴线; 第二根K线与第一根K线之间必须有价格跳空, 可以为小阳线, 也可以为小阴线; 第三天与第二天存在跳空缺口, K线为阳线; 14.启明星形态(反转, 看涨) 第一天K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天K线出现跳空(第二天的开盘价及收盘价低于第一天的收盘价), 而颜色并不重要, 且实体长度大于整根K线长度的十分之一, 小于前七天K线实体长度平均值的0.5倍; 第三天K线为跳空高开阳线, 第三天的收盘价要超过第一天实体的一半, 开盘价高于第二天的收盘价与开盘价的较高者; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['开盘价_复权'].shift(2) < df['收盘价_复权'].shift(1) condition4 = df['收盘价_复权'].shift(2) < df['收盘价_复权'].shift(1) condition5 = df['实体长度'].shift(2) > 0.1 * df['K线长度'].shift(2) condition6 = df['实体长度'].shift(2) < 0.5 * df['实体长度_MA_7'].shift(2) condition8 = df['开盘价_复权'] > df['收盘价_复权'].shift(1) condition9 = df['收盘价_复权'] > df['收盘价_复权'].shift(1) condition10 = df['开盘价_复权'] < df['收盘价_复权'] condition11 = df['收盘价_复权'] > df['最低价_复权'].shift(2) + df['下影线'].shift(2) + 0.5 * df['实体长度'].shift(2) condition12 = df['收盘价_复权'] > ta.MAX(df['开盘价_复权'].shift(1), df['收盘价_复权'].shift(1)) """ 识别标准 该形态处于下跌趋势中, 第一天出现一根大阴线; 第二天出现了十字星, 并且存在向下跳空缺口; 第三天的阳线实体嵌入第一天阴线实体的内部; 15.十字启明星形态(反转, 看涨) 第一天K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天K线出现向下跳空, 且实体长度小于整根K线长度的十分之一; 第三天K线出现一根阳线, 收盘价要超过第一天实体的一半, 开盘价高于或等于第二天的开盘价与收盘价的较高者; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition4 = df['收盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition5 = df['实体长度'].shift(1) < 0.1 * df['K线长度'].shift(1) condition6 = df['开盘价_复权'] < df['收盘价_复权'] condition7 = df['收盘价_复权'] > df['最低价_复权'].shift(2) + df['下影线'].shift(2) + 0.5 * df['实体长度'].shift(2) condition8 = df['开盘价_复权'] >= ta.MAX(df['开盘价_复权'].shift(1), df['收盘价_复权'].shift(1)) """ 识别标准 该形态处于下跌趋势中, 第一天出现一根大阴线; 第二天出现了一根十字星, 且与前后两根K线之间存在价格跳空(包括影线在内); 第三天出现一根阳线; 16.弃婴形态(反转, 看涨) 第一天K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天K线出现一根十字星, 实体长度小于整根K线长度的十分之一, 最高价低于前后两天的最低价; 第三天K线出现一根阳线, 收盘价要超过第一天实体的中点; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['实体长度'].shift(1) < 0.1 * df['K线长度'].shift(1) condition4 = df['最高价_复权'].shift(1) < ta.MIN(df['最低价_复权'].shift(2), df['最低价_复权']) condition5 = df['开盘价_复权'] < df['收盘价_复权'] condition6 = df['收盘价_复权'] > df['最低价_复权'].shift(2) + df['下影线'].shift(2) + 0.5 * df['实体长度'].shift(2) """ 识别标准 在下跌趋势中, 接连出现三根K线, 且均为十字星; 组合中的第二根十字星相对第一根K线跳空低开, 第三根十字星则跳空高开; 17.三星形态(反转, 看涨) 三根K线都是十字星, 实体长度小于整根K线长度的十分之一, 且颜色不重要; 第二天的K线同第一天和第三天的K线形成前后两个跳空缺口; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['实体长度'].shift(2) > 0.1 * df['K线长度'].shift(2) condition2 = df['实体长度'].shift(1) > 0.1 * df['K线长度'].shift(1) condition3 = df['实体长度'] < 0.1 * df['K线长度'] condition4 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition5 = df['收盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition6 = df['开盘价_复权'] > df['收盘价_复权'].shift(1) condition7 = df['收盘价_复权'] > df['收盘价_复权'].shift(1) """ 识别标准 在一段下跌趋势之后, 连续出现三根阳线; 每日的收盘价都逐渐提高, 接近每日的最高价; 每日的收盘价都在前一日K线的实体之内; 18.白色三兵形态(反转, 看涨) 第一根K线为大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 第二天出现一根阳线, 实体长度大于前七天K线实体长度 平均值的0.5倍, 第三天出现一根阳线, 实体长度大于前七天K线实体长度平均值的0.5倍; 收盘价逐渐升高, 并且开盘价均在前一日的实体内; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) < df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(1) condition4 = df['实体长度'].shift(1) > 0.5 * df['实体长度_MA_7'].shift(1) condition5 = df['开盘价_复权'] < df['收盘价_复权'] condition6 = df['实体长度'] > 0.5 * df['实体长度_MA_7'] condition7 = df['收盘价_复权'] > df['收盘价_复权'].shift(1) condition8 = df['收盘价_复权'].shift(1) > df['收盘价_复权'].shift(2) condition9 = df['开盘价_复权'].shift(1) > df['最低价_复权'].shift(2) + df['下影线'].shift(2) condition10 = df['开盘价_复权'].shift(1) < df['最低价_复权'].shift(2) + df['下影线'].shift(2) + df['实体长度'].shift(2) condition11 = df['开盘价_复权'] > df['最低价_复权'].shift(1) + df['下影线'].shift(1) condition12 = df['开盘价_复权'] < df['最低价_复权'].shift(1) + df['下影线'].shift(1) + df['实体长度'].shift(1) """ 识别标准 连续出现三根阴线, 且收盘价逐渐降低, 重心是向下的; 每一日K线的收盘价位于前一根K线的实体之内; 第一天阴线实体较长, 后面两天的K线的下影线较长; 19.下降受阻形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体平均值的2倍, 并且第一天K线的实体长度大于第二天K线的实体长度; 第二天和第三天均出现阴线, 实体长度大于整根K线长度的十分之一, 第二天K线的实体长度大于第三天K线的实体长度; 每天的收盘价都在前一天的收盘价之下, 每天的开盘价都在前一天的实体之内, 第二天和第三天下影线的长度占当日最高价 与最低价波动范围的30%~40% """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['实体长度'].shift(2) > df['实体长度'].shift(1) condition4 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition5 = df['开盘价_复权'] > df['收盘价_复权'] condition6 = df['实体长度'].shift(1) > 0.1 * df['K线长度'].shift(1) condition7 = df['实体长度'].shift(2) > 0.1 * df['K线长度'].shift(2) condition8 = df['实体长度'].shift(1) > df['实体长度'] condition9 = df['收盘价_复权'].shift(2) > df['收盘价_复权'].shift(1) condition10 = df['收盘价_复权'].shift(1) > df['收盘价_复权'] condition11 = df['开盘价_复权'].shift(1) < df['最低价_复权'].shift(2) + df['下影线'].shift(2) + df['实体长度'].shift(2) condition12 = df['开盘价_复权'].shift(1) > df['最低价_复权'].shift(2) + df['下影线'].shift(2) condition13 = df['开盘价_复权'] < df['最低价_复权'].shift(1) + df['下影线'].shift(1) + df['实体长度'].shift(1) condition14 = df['开盘价_复权'] > df['最低价_复权'].shift(1) + df['下影线'].shift(1) condition15 = df['下影线'].shift(1) >= 0.3 * df['K线长度'].shift(1) condition16 = df['下影线'].shift(1) <= 0.4 * df['K线长度'].shift(1) condition17 = df['下影线'] >= 0.3 * df['K线长度'] condition18 = df['下影线'] <= 0.4 * df['K线长度'] """ 识别标准 第一天黑色的K线表明市场价格下跌的持续状态; 第二天K线表现为跳空低开高走的假阳线, 且与第一天的K线形成向下的跳空缺口; 第三天出现一根阳线, 开盘价在第二天白色实体之内, 并且收盘价在第一天黑色实体之内, 使得之前形成的缺口被消除了; 20.两只兔子形态(反转, 看涨) 第一根K线是大阴线, 实体长度大于前七天实体长度平均值的2倍; 第二天出现一根向下跳空的假阳线, 实体长度超过当日价格波动范围的50%, 收盘价低于前一天的收盘价; 第三天出现一根阳线, 实体长度超过当日价格波动范围的50%, 开盘价在第二天K线的实体内, 收盘价在第一天K线的实体内; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition4 = df['收盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition5 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(1) condition6 = df['实体长度'].shift(1) < 0.5 * df['K线长度'].shift(1) condition7 = df['收盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition8 = df['开盘价_复权'] < df['收盘价_复权'] condition9 = df['实体长度'] < 0.5 * df['K线长度'] condition10 = df['开盘价_复权'] > df['最低价_复权'].shift(1) + df['下影线'].shift(1) condition11 = df['开盘价_复权'] < df['最低价_复权'].shift(1) + df['下影线'].shift(1) + df['实体长度'].shift(1) condition12 = df['收盘价_复权'] > df['最低价_复权'].shift(2) + df['下影线'].shift(2) condition13 = df['收盘价_复权'] < df['最低价_复权'].shift(2) + df['下影线'].shift(2) + df['实体长度'].shift(2) """ 识别标准 该形态出现之前, 市场处于下跌趋势中; 第一天出现一根大阴线, 第二天和第三天的最高价逐渐降低, 而最低逐渐升高; 21.挤压报警形态(反转, 看涨) 第一天出现一根相对较长的阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天的最高价高于第三天的最高价, 但低于第一天的最高价, 第二天的最低价低于第三天的最低价, 但高于第一天的最低价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['最高价_复权'].shift(1) > df['最高价_复权'].shift(2) condition4 = df['最高价_复权'].shift(1) < df['最高价_复权'] condition5 = df['最低价_复权'].shift(1) > df['最低价_复权'].shift(2) condition6 = df['最低价_复权'].shift(1) < df['最低价_复权'] """ 识别标准 市场在一段下跌趋势之后, 第一天出现一根大阳线; 第二天出现与第一天形成跳空缺口的一根阴线; 第三天和第四天的K线实体较小, 不断创出新低; 第五天的K线是一根阳线, 且收盘价在第一天和第二天形成的跳空缺口之间; 22.脱离形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍; 第二天出现一根阴线, 实体长度大于整根K线长度的十分之一, 开盘价低于第一天的收盘价; 第三天K线的颜色不重要, 实体长度大于整根K线长度的十分之一, 最低价低于第二天的最低价, 最高价低于第二天的最高价; 第四天出现一根阴线, 实体长度大于整根K线长度的十分之一, 最低价低于第三天的最低价, 最高价低于第三天的最高价; 第五天出现一根大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 收盘价高于第二天的收盘价, 且低于第一天的收盘价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(4) > df['收盘价_复权'].shift(4) condition2 = df['实体长度'].shift(4) > 2 * df['实体长度_MA_7'].shift(4) condition3 = df['开盘价_复权'].shift(3) > df['收盘价_复权'].shift(3) condition4 = df['实体长度'].shift(3) > 0.1 * df['K线长度'].shift(3) condition5 = df['开盘价_复权'].shift(3) < df['收盘价_复权'].shift(4) condition6 = df['实体长度'].shift(2) > 0.1 * df['K线长度'].shift(2) condition7 = df['最低价_复权'].shift(2) < df['最低价_复权'].shift(3) condition8 = df['最高价_复权'].shift(2) < df['最高价_复权'].shift(3) condition9 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition10 = df['实体长度'].shift(1) > 0.1 * df['K线长度'].shift(1) condition11 = df['最低价_复权'].shift(1) < df['最低价_复权'].shift(2) condition12 = df['最高价_复权'].shift(1) < df['最高价_复权'].shift(2) condition13 = df['开盘价_复权'] < df['收盘价_复权'] condition14 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition15 = df['收盘价_复权'] > df['收盘价_复权'].shift(3) condition16 = df['收盘价_复权'] < df['收盘价_复权'].shift(4) """ 识别标准 在一段下跌趋势之后, 组合中第一天K线涨跌均可; 第二天K线的颜色也无关紧要, 只需要与第一天K线之间存在缺口即可; 最后两根K线必须是阴线, 尤其是第三根K线, 需要有较大的价格波动范围; 最后两天K线实体之间存在跳空缺口; 23.三次向下跳空形态(反转, 看涨) 第一天K线可以是阴线, 也可以是阳线; 第二天K线跳空低开, 收阳线或阴线均可; 第三天出现一根跳空低开阴线, 实体长度大于整根K线长度的0.5倍, 价格波动大于前七天价格波动范围的平均值; 第四天出现一根跳空低开阴线, 实体长度大于整根K线长度的0.5倍, 价格波动大于前七天价格波动范围的平均值; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) df['K线长度_MA_7'] = ta.EMA(df['K线长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) < df['收盘价_复权'].shift(3) condition2 = df['收盘价_复权'].shift(2) < df['收盘价_复权'].shift(3) condition3 = df['开盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition4 = df['收盘价_复权'].shift(1) < df['收盘价_复权'].shift(2) condition5 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition6 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition7 = df['实体长度'].shift(1) > 0.5 * df['K线长度'] condition8 = df['K线长度'].shift(1) > df['K线长度_MA_7'].shift(1) condition9 = df['开盘价_复权'] < df['收盘价_复权'].shift(1) condition10 = df['收盘价_复权'] < df['收盘价_复权'].shift(1) condition11 = df['开盘价_复权'] > df['收盘价_复权'] condition12 = df['实体长度'] > 0.5 * df['K线长度'] condition13 = df['K线长度'] > df['K线长度_MA_7'] """ 市场处于上涨趋势中, 第一天出现一根阴线; 第二天高开高走, 收出一根大阳线; 两天的开盘价相同; 24.分手线形态(反转, 看涨) 第一根K线为阴线, 实体长度大于前七天K线实体长度的平均值; 第二根K线为大阳线, 实体长度大于前七天K线实体长度平均值的2倍, 开盘价等于前一天的开盘价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition2 = df['实体长度'].shift(1) > df['实体长度_MA_7'].shift(1) condition3 = df['开盘价_复权'] < df['收盘价_复权'] condition4 = df['实体长度'] > 2 * df['实体长度_MA_7'] condition5 = df['开盘价_复权'] == df['开盘价_复权'].shift(1) """ 识别标准 该形态由三根阴线组成, 且这三根K线的最高价逐渐降低, 最低价逐渐升高; 第一天出现一根大阴线, 具有较长的下影线; 第二天的阴线没有低于第一天阴线的最低价; 第三天出现一根光头光脚的阴线, 且实体部分在第二天的价格波动范围内; 25.南方三星形态(反转, 看涨) 第一根K线为大阴线, 实体长度大于前七天K线实体长度平均值的2倍, 下影线长度大于实体长度的1倍; 第二天出现一根阴线, 实体长度大于整根K线长度的十分之一, 其最高价低于前一天的最高价, 最低价高于前一天的最低价; 第三天出现一根阴线, 实体长度大于整根K线长度的十分之一, 上影线与下影线长度之和小于实体长度的一半, 其开盘价低于 前一天的最高价, 收盘价高于前一天的最低价; """ df['实体长度_MA_7'] = ta.EMA(df['实体长度'], timeperiod=7) condition1 = df['开盘价_复权'].shift(2) > df['收盘价_复权'].shift(2) condition2 = df['实体长度'].shift(2) > 2 * df['实体长度_MA_7'].shift(2) condition3 = df['下影线'].shift(2) > df['实体长度'].shift(2) condition4 = df['开盘价_复权'].shift(1) > df['收盘价_复权'].shift(1) condition5 = df['实体长度'].shift(1) > 0.1 * df['K线长度'].shift(1) condition6 = df['最高价_复权'].shift(1) < df['最高价_复权'].shift(2) condition7 = df['最低价_复权'].shift(1) > df['最低价_复权'].shift(2) condition8 = df['开盘价_复权'] > df['收盘价_复权'] condition9 = df['实体长度'] > 0.1 * df['K线长度'] condition10 = df['上影线'] + df['下影线'] < 0.5 * df['实体长度'] condition11 = df['开盘价_复权'] < df['最高价_复权'].shift(1) condition12 = df['收盘价_复权'] > df['最低价_复权'].shift(1) ``` © 允许规范转载