Files
chanlun.rs/chanlun-py/chanlun.pyi
T
2026-05-29 04:05:36 +08:00

2317 lines
84 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Generated from chan.py — type stubs for chanlun Rust bindings
# Auto-generated, do not edit manually
from datetime import datetime
from functools import lru_cache
from typing import Any, Callable, ClassVar, Dict, Iterator, List, Optional, Self, Sequence, Tuple, Union
__all__ = [
"K线",
"K线合成器",
"中枢",
"买卖点",
"买卖点类型",
"分型",
"分型结构",
"基础买卖点",
"平滑异同移动平均线",
"指标",
"特征分型",
"相对强弱指数",
"相对方向",
"立体分析器",
"笔",
"线段",
"线段特征",
"缠论K线",
"缠论配置",
"缺口",
"背驰分析",
"虚线",
"观察者",
"转化为时间戳",
"转化为时间戳_数字",
"随机指标",
]
class 买卖点类型(str, Enum):
"""
买卖点类型 — 缠论的三类买卖点及扩展类型。
:ivar 是买点: 是否为买入类型
:ivar 是卖点: 是否为卖出类型
"""
def __str__(self) -> str:
"""返回买卖点类型名称"""
...
def __repr__(self) -> str:
"""返回买卖点类型名称"""
...
def 是买点(self) -> bool:
"""
判断是否为买入类型(名称中含"买"字)
:return: 是否为买入类型
"""
...
def 是卖点(self) -> bool:
"""
判断是否为卖出类型(名称中含"卖"字)
:return: 是否为卖出类型
"""
...
class 基础买卖点:
"""
基础买卖点 — 描述偏离买入/卖出位置的程度。
:ivar 备注: 描述文本
:ivar 偏移: 当前K线相对于买卖点K线的偏移量
:ivar 失效偏移: 失效K线相对于买卖点K线的偏移量(-1表示未失效)
:ivar 有效性: 是否已失效(存在失效K线)
:ivar 破位值: 中枢破位价格
:ivar 与MACD柱子匹配: MACD柱子是否匹配买卖点方向
:ivar 与MACD柱子分型匹配: MACD柱子分型是否匹配
"""
@property
def 类型(self) -> 买卖点类型: ...
@类型.setter
def 类型(self, value: 买卖点类型) -> None: ...
@property
def 买卖点分型(self) -> "分型": ...
@买卖点分型.setter
def 买卖点分型(self, value: "分型") -> None: ...
@property
def 备注(self) -> str: ...
@备注.setter
def 备注(self, value: str) -> None: ...
@property
def 中枢破位值(self) -> float: ...
@中枢破位值.setter
def 中枢破位值(self, value: float) -> None: ...
def __init__(self, 类型: 买卖点类型, 当前K线: "K线", 买卖点分型: "分型", 备注: str, 中枢破位值: float) -> Any:
"""
:param 类型: 买卖点类型
:param 当前K线: 触发买卖点的K线
:param 买卖点分型: 买卖点对应的分型
:param 备注: 描述文本(如"笔_1买"
:param 中枢破位值: 中枢破位价格
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 当前K线(self) -> Any:
"""当前K线"""
...
def 破位值(self) -> float:
"""
破位值
:return: float
"""
...
def 偏移(self) -> int:
"""
偏移
:return: int
"""
...
def 失效偏移(self) -> int:
"""
失效偏移
:return: int
"""
...
def 有效性(self) -> bool:
"""
有效性
:return: bool
"""
...
def 与MACD柱子匹配(self) -> bool:
"""
与MACD柱子匹配
:return: bool
"""
...
def 与MACD柱子分型匹配(self) -> bool:
"""
与MACD柱子分型匹配
:return: bool
"""
...
class 买卖点(基础买卖点):
"""
买卖点 — 一二三类买卖点构造器。
类方法:
一卖点 / 一买点 / 二卖点 / 二买点 / 三卖点 / 三买点 — 创建对应买卖点实例
生成买卖点(特征, 序号, 级别, 分型, 当前缠K) — 根据特征路由到对应构造函数
"""
@classmethod
def 一卖点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 一买点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 二卖点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 二买点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 三卖点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 三买点(cls, 买卖点分型: "分型", 当前K线: "K线", 标识: str, 备注: str, 中枢破位值: float) -> "买卖点":
"""
:param 买卖点分型: 买卖点对应的分型
:param 当前K线: 当前K线
:param 标识: 标识(未使用,仅保持接口一致)
:param 备注: 描述文本
:param 中枢破位值: 中枢破位价格
:return: '买卖点'
"""
...
@classmethod
def 生成买卖点(cls, 特征: str, 序号: str, 级别: str, 买卖点分型: "分型", 当前缠K: "缠论K线") -> Any:
"""
:param 特征: 特征字符串
:param 序号: 序号(如"一"、"二"、"三"
:param 级别: 级别字符串
:param 买卖点分型: 买卖点对应的分型
:param 当前缠K: 当前缠论K线
"""
...
class 缠论配置:
"""
缠论配置 — 控制所有分析阶段行为的参数集(共 60+ 字段,均有默认值)。
字段分组:
[基础] 标识
[缠K] 缠K合并替换
[笔] 笔内元素数量, 笔弱化, 笔次成笔, 笔内相同终点取舍 等
[线段] 线段_特征序列忽视老阴老阳, 线段_缺口后紧急修正, 线段内部中枢图显 等
[分析开关] 分析笔, 分析线段, 分析扩展线段, 分析笔中枢, 分析线段中枢
[指标] 计算指标, 指标计算方式, MACD/RSI/KDJ 参数
[推送/显示] 图表展示, 推送K线/笔/线段/中枢, 图表展示_笔 等细分开关
[买卖点] 买卖点偏移, 买卖点激进识别, 买卖点_背离率, 买卖点_计算方式 等
[背驰] 线段内部背驰_MACD, 线段内部背驰_斜率 等
[其他] 手动终止, 加载文件路径
方法:
to_dict() / to_json() / 保存配置(path?) / 加载配置(path?) (classmethod)
from_dict(data) (classmethod) / from_json(json_str) (classmethod)
不推送() (classmethod) / 对比(other) -> dict
"""
@model_validator(mode="before")
def 兼容旧版本配置(self, values: Dict[str, Any]) -> Dict[str, Any]:
"""
自动兼容:
1. 旧版本少字段 → 使用默认值
2. 新版本多字段 → 自动忽略多余字段
3. 字段改名/删除 → 不报错
:param values: 原始配置字典
:return: 兼容后的字典
"""
...
@field_validator("*", mode="wrap")
def bool_parse_fallback_default(self, value: Any, handler: Any, info: Any) -> Any:
"""
:param value: 待验证的值
:param handler: 默认验证器
:param info: 字段信息
:return: 验证后的值
"""
...
def to_dict(self) -> dict:
"""对象 → 字典"""
...
def to_json(self) -> str:
"""对象 → JSON字符串"""
...
def 保存配置(self, path: Any = "缠论配置.json") -> Any:
"""
将配置保存为JSON文件
:param path: 保存路径,默认"缠论配置.json"
"""
...
@staticmethod
def 加载配置(path: Any = "缠论配置.json") -> "缠论配置":
"""
从JSON文件加载配置
:param path: 配置文件路径
:return: 缠论配置实例
"""
...
@classmethod
def from_dict(cls, data: dict) -> "缠论配置":
"""
:param data: 字典数据
:return: 缠论配置实例
"""
...
@classmethod
def from_json(cls, json_str: str) -> "缠论配置":
"""
:param json_str: JSON字符串
:return: 缠论配置实例
"""
...
@classmethod
def 不推送(cls) -> Any:
"""
创建不推送任何图表的静默配置(用于纯计算场景)
:return: 新缠论配置实例
"""
...
@classmethod
def 按序号重组字典(cls, 默认配置: Any, 原始字典: dict) -> dict:
"""
将形如 "1_open", "1_close", "2_open", "name" 的字典重组为嵌套结构
{
"1_open": 10,
"1_close": 11,
"2_open": 20,
"name": "BTC", # 无法拆分
"time": 123456 # 无法拆分
}
转化为
{
1: {"open": 10, "close": 11},
2: {"open": 20},
"无法拆分": {
"name": "BTC",
"time": 123456
}
}
:param 默认配置: 默认配置实例
:param 原始字典: 待重组的原始字典
:return: 重组后的字典
"""
...
def 对比(self, other: "缠论配置") -> dict:
"""
比较当前配置与另一个配置的差异
:param other: 另一个配置实例
:return: {
"字段名": {
"旧值": 当前配置的值,
"新值": 另一个配置的值
},
...
}
仅当值不同时才包含该字段
"""
...
class 相对方向(Enum):
"""
相对方向 — 描述两个K线/分型之间相对位置关系的枚举。
类属性: 向上, 向下, 向上缺口, 向下缺口, 衔接向上, 衔接向下, 顺, 逆, 同
:ivar 是否向上: 判断是否为向上方向
:ivar 是否向下: 判断是否为向下方向
:ivar 是否包含: 判断是否为包含关系
:ivar 是否缺口: 判断是否有缺口
:ivar 是否衔接: 判断是否为首尾衔接
"""
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 翻转(self) -> "相对方向":
"""返回方向的对立面:向上↔向下, 向上缺口↔向下缺口, 顺↔逆, 衔接向上↔衔接向下, 同不变"""
...
def 是否向上(self) -> bool:
"""判断是否为向上方向(向上/向上缺口/衔接向上)"""
...
def 是否向下(self) -> bool:
"""判断是否为向下方向(向下/向下缺口/衔接向下)"""
...
def 是否包含(self) -> bool:
"""判断是否为包含关系(顺/逆/同)"""
...
def 是否缺口(self) -> bool:
"""判断是否有缺口(向下缺口/向上缺口)"""
...
def 是否衔接(self) -> bool:
"""判断是否为首尾衔接(衔接向下/衔接向上)"""
...
@classmethod
def 分析(cls, 前高: float, 前低: float, 后高: float, 后低: float) -> "相对方向":
"""
分析两个价格区间(前、后)的相对位置关系。
:param 前高: 前方价格区间的最高价
:param 前低: 前方价格区间的最低价
:param 后高: 后方价格区间的最高价
:param 后低: 后方价格区间的最低价
:return: 相对方向枚举值(向上/向下/向上缺口/向下缺口/衔接向上/衔接向下/顺/逆/同)
:raises RuntimeError: 无法识别的方向
"""
...
class 分型结构(Enum):
"""
分型结构 — 描述三根K线构成的顶底分型形态。
类属性: 上, 下, 顶, 底, 散
"""
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
@classmethod
def 分析(cls, : Any, : Any, : Any, 可以逆序包含: bool = False, 忽视顺序包含: bool = False) -> Optional["分型结构"]:
"""
分析左中右三个元素构成的分型形态。
:param 左: 左侧元素(必须有 高/低 属性)
:param 中: 中间元素
:param 右: 右侧元素
:param 可以逆序包含: True 时允许逆序包含关系(如 右>左>中)
:param 忽视顺序包含: True 时跳过顺序包含检查(如 左>中>右)
:return: 分型结构(顶/底/上/下/散),无法判定返回 None
"""
...
class 缺口:
"""
缺口 — 描述价格区间之间的缺口(未重叠部分)。
:ivar 高: 缺口上沿
:ivar 低: 缺口下沿
"""
@property
def (self) -> float: ...
@高.setter
def (self, value: float) -> None: ...
@property
def (self) -> float: ...
@低.setter
def (self, value: float) -> None: ...
def __init__(self, : float, : float) -> None:
"""
:param 高: 缺口上沿
:param 低: 缺口下沿
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
@classmethod
def 居中截取区间(cls, 起点: float, 终点: float, 比例: float = 0.15) -> Optional["缺口"]:
"""
以原区间中心为基准,向两侧各取总长度的 `比例` 作为新区间。
如果新区间超出原边界则裁剪到边界;若完全越界则返回 None。
:param 起点: 区间起始值
:param 终点: 区间结束值
:param 比例: 向两侧扩展的长度占总长度的比例(0~1 之间)
:return: Optional[缺口]
"""
...
class 指标:
"""指标 — 静态工具类,提供K线取值的辅助方法。"""
@classmethod
def K线取值(cls, k线: "K线", 指标计算方式: Any) -> Any:
"""
根据计算方式从K线中取值
:param k线: K线对象
:param 指标计算方式: "开"/"高"/"低"/"收"/"高低均值"/"高低收均值"/"开高低收均值"
:return: 对应价格
"""
...
class 平滑异同移动平均线:
"""
平滑异同移动平均线(MACD)— 基于EMA快慢线差值的趋势指标。
计算字段(输入):
时间戳: datetime / 收盘价: float
快线周期: int (默认12) / 慢线周期: int (默认26) / 信号周期: int (默认9)
输出字段:
EMA快线: float — 短期EMA值
EMA慢线: float — 长期EMA值
DIF: float — 快线减慢线
DEA: float — DIF的信号线EMA
MACD柱子: float — DIF减DEA
"""
@classmethod
def 首次计算(cls, 初始收盘价: float, 初始时间: datetime, 快线周期: int = 12, 慢线周期: int = 26, 信号周期: int = 9) -> "平滑异同移动平均线":
"""
首次计算MACD指标(没有历史数据时使用)
:param 初始收盘价: 第一个数据点的收盘价
:param 初始时间: 第一个数据点的时间戳
:param 快线周期: 快线EMA周期
:param 慢线周期: 慢线EMA周期
:param 信号周期: 信号线EMA周期
:return: MACD指标对象
"""
...
@classmethod
def 首次计算_K线(cls, k线: "K线", 计算方式: str, 快线周期: int = 12, 慢线周期: int = 26, 信号周期: int = 9) -> "平滑异同移动平均线":
"""
:param k线: 原始K线
:param 计算方式: 指标计算方式(开/高/低/收/均值等)
:param 快线周期: 快线EMA周期
:param 慢线周期: 慢线EMA周期
:param 信号周期: 信号线EMA周期
:return: MACD指标对象
"""
...
@classmethod
def 增量计算(cls, 前一个MACD: "平滑异同移动平均线", 当前收盘价: float, 当前时间: datetime) -> "平滑异同移动平均线":
"""
基于前一个MACD指标增量计算当前MACD指标
适用于实时交易系统或流式数据处理
:param 前一个MACD: 前一个周期的MACD指标对象
:param 当前收盘价: 当前K线的收盘价
:param 当前时间: 当前K线的时间戳
:return: 当前MACD指标对象
:raises RuntimeError: 前一个MACD中快线EMA或慢线EMA为None时抛出
"""
...
@classmethod
def 增量计算_K线(cls, 前一个MACD: "平滑异同移动平均线", 当前K线: "K线", 计算方式: "str") -> "平滑异同移动平均线":
"""
:param 前一个MACD: 前一个MACD指标对象
:param 当前K线: 当前K线
:param 计算方式: 指标计算方式
:return: 当前MACD指标对象
"""
...
class 相对强弱指数:
"""
相对强弱指数 (RSI) 指标
使用 Wilder 平滑(RMA)进行增量计算,提供完整的中间平滑值,
并支持对RSI值计算SMA(简单移动平均)
"""
@classmethod
def 首次计算(cls, 初始收盘价: float, 初始时间: datetime, 周期: int = 14, 超买阈值: float = 70.0, 超卖阈值: float = 30.0, RSI_SMA周期: Optional[int] = None) -> "相对强弱指数":
"""
首次计算RSI(没有足够历史数据时使用)
此时无法计算真实RSI,设为 None,但记录初始收盘价作为起点
:param 初始收盘价: 第一个数据点的收盘价
:param 初始时间: 第一个数据点的时间戳
:param 周期: RSI周期
:param 超买阈值: 超买阈值
:param 超卖阈值: 超卖阈值
:param RSI_SMA周期: RSI的SMA周期(可选)
:return: RSI指标对象
"""
...
@classmethod
def 首次计算_K线(cls, k线: "K线", 计算方式: str, 周期: int = 14, 超买阈值: float = 70.0, 超卖阈值: float = 30.0, RSI_SMA周期: Optional[int] = None) -> "相对强弱指数":
"""
:param k线: 原始K线
:param 计算方式: 指标计算方式
:param 周期: RSI周期
:param 超买阈值: 超买阈值
:param 超卖阈值: 超卖阈值
:param RSI_SMA周期: RSI的SMA周期
:return: RSI指标对象
"""
...
@classmethod
def 增量计算(cls, 前一个RSI: "相对强弱指数", 当前收盘价: float, 当前时间: datetime) -> "相对强弱指数":
"""
基于前一个RSI指标增量计算当前RSI
支持可选的RSI_SMA(简单移动平均)
:param 前一个RSI: 前一个RSI指标对象
:param 当前收盘价: 当前收盘价
:param 当前时间: 当前时间戳
:return: 当前RSI指标对象
"""
...
@classmethod
def 增量计算_K线(cls, 前一个RSI: "相对强弱指数", 当前K线: "K线", 计算方式: "str") -> "相对强弱指数":
"""
:param 前一个RSI: 前一个RSI指标对象
:param 当前K线: 当前K线
:param 计算方式: 指标计算方式
:return: 当前RSI指标对象
"""
...
class 随机指标:
"""
KDJ 随机指标 (Stochastic Oscillator)
使用标准参数:N=9, M1=3, M2=3
支持增量计算,需提供当前K线的最高价、最低价、收盘价
"""
@classmethod
def 首次计算(cls, 初始最高价: float, 初始最低价: float, 初始收盘价: float, 初始时间: datetime, N: int = 9, M1: int = 3, M2: int = 3, 超买阈值: float = 80.0, 超卖阈值: float = 20.0) -> "随机指标":
"""
首次计算KDJ(无历史数据时)
此时无法计算RSV和K/D/J,仅记录初始三价,初始化队列
:param 初始最高价: 第一个数据点的最高价
:param 初始最低价: 第一个数据点的最低价
:param 初始收盘价: 第一个数据点的收盘价
:param 初始时间: 第一个数据点的时间戳
:param N: RSV周期
:param M1: K值平滑周期
:param M2: D值平滑周期
:param 超买阈值: 超买阈值
:param 超卖阈值: 超卖阈值
:return: KDJ指标对象
"""
...
@classmethod
def 首次计算_K线(cls, k线: "K线", 计算方式: str, RSV周期: int = 9, K值平滑周期: int = 3, D值平滑周期: int = 3, 超买阈值: float = 80.0, 超卖阈值: float = 20.0) -> "随机指标":
"""
:param k线: 原始K线
:param 计算方式: 指标计算方式(未使用,仅为接口一致)
:param RSV周期: RSV周期
:param K值平滑周期: K值平滑周期
:param D值平滑周期: D值平滑周期
:param 超买阈值: 超买阈值
:param 超卖阈值: 超卖阈值
:return: KDJ指标对象
"""
...
@classmethod
def 增量计算(cls, 前一个KDJ: "随机指标", 当前最高价: float, 当前最低价: float, 当前收盘价: float, 当前时间: datetime) -> "随机指标":
"""
基于前一个KDJ对象和当前三价,增量计算当前KDJ值
:param 前一个KDJ: 前一个KDJ指标对象
:param 当前最高价: 当前最高价
:param 当前最低价: 当前最低价
:param 当前收盘价: 当前收盘价
:param 当前时间: 当前时间戳
:return: 当前KDJ指标对象
"""
...
@classmethod
def 增量计算_K线(cls, 前一个KDJ: "随机指标", 当前K线: "K线", 计算方式: "str") -> "随机指标":
"""
:param 前一个KDJ: 前一个KDJ指标对象
:param 当前K线: 当前K线
:param 计算方式: 指标计算方式(未使用,仅为接口一致)
:return: 当前KDJ指标对象
"""
...
class 背驰分析:
"""
背驰分析 — 静态方法容器,提供背驰/背离检测算法。
方法:
MACD背驰(进入段, 离开段, K线序列, 方式?) — MACD柱状线面积背驰
斜率背驰(进入段, 离开段, 序列, 配置?) — 线段斜率背驰
测度背驰(进入段, 离开段, 序列, 配置?) — 线段测度背驰
全量背驰(进入段, 离开段, ...) — 综合所有背驰检测方式
配置背驰(进入段, 离开段, ...) — 根据配置选择检测方式
"""
@staticmethod
def MACD背驰(进入段: "虚线", 离开段: "虚线", K线序列: List["K线"], 方式: str = "总") -> bool:
"""
MACD柱状线面积背驰
:param 进入段: 进入中枢的虚线
:param 离开段: 离开中枢的虚线
:param K线序列: 完整K线序列
:param 方式: "总" 或 "阳"/"阴"
:return: 背驰为True
"""
...
@staticmethod
def 斜率背驰(进入段: "虚线", 离开段: "虚线") -> bool:
"""
价格斜率背驰
:param 进入段: 进入中枢的虚线
:param 离开段: 离开中枢的虚线
:return: 背驰为True
"""
...
@staticmethod
def 测度背驰(进入段: "虚线", 离开段: "虚线") -> bool:
"""
价格测度背驰(欧氏距离)
:param 进入段: 进入中枢的虚线
:param 离开段: 离开中枢的虚线
:return: 背驰为True
"""
...
@staticmethod
def 全量背驰(进入段: "虚线", 离开段: "虚线", 普K序列: List["K线"]) -> bool:
"""
判断是否满足全部三种背驰条件(MACD + 测度 + 斜率)
:param 进入段: 进入中枢的线段
:param 离开段: 离开中枢的线段
:param 普K序列: 完整K线序列
:return: 三者全满足返回True
"""
...
@staticmethod
def 任意背驰(进入段: "虚线", 离开段: "虚线", 普K序列: List["K线"]) -> bool:
"""
判断是否满足任一背驰条件
:param 进入段: 进入中枢的线段
:param 离开段: 离开中枢的线段
:param 普K序列: 完整K线序列
:return: 任一满足返回True
"""
...
@staticmethod
def 配置背驰(进入段: "虚线", 离开段: "虚线", 普K序列: List["K线"], 配置: 缠论配置) -> bool:
"""
根据配置选择对应的背驰检测组合
:param 进入段: 进入中枢的线段
:param 离开段: 离开中枢的线段
:param 普K序列: 完整K线序列
:param 配置: 缠论配置(控制MACD/测度/斜率开关)
:return: 背驰结果
"""
...
@staticmethod
def 任选背驰(进入段: "虚线", 离开段: "虚线", 普K序列: List["K线"]) -> bool:
"""
三个背驰条件中至少两个满足即视为背驰
:param 进入段: 进入中枢的线段
:param 离开段: 离开中枢的线段
:param 普K序列: 完整K线序列
:return: 至少两个满足返回True
"""
...
@staticmethod
def 背驰模式(进入段: "虚线", 离开段: "虚线", 普K序列: List["K线"], 配置: 缠论配置, 模式: str) -> bool:
"""
根据模式字符串选择背驰检测策略
:param 进入段: 进入中枢的线段
:param 离开段: 离开中枢的线段
:param 普K序列: 完整K线序列
:param 配置: 缠论配置
:param 模式: "全量"/"任意"/"配置"/"相对"
:return: 背驰结果
"""
...
class K线(object):
"""
原始 K 线 — OHLCV 数据,可内嵌 MACD/RSI/KDJ 指标。
:ivar 标识: 标识符
:ivar 序号: 序号
:ivar 周期: K线周期(秒)
:ivar 时间戳: 时间戳
:ivar 高: 最高价
:ivar 低: 最低价
:ivar 开盘价: 开盘价
:ivar 收盘价: 收盘价
:ivar 成交量: 成交量
:ivar macd: MACD指标对象
:ivar rsi: RSI指标对象
:ivar kdj: KDJ指标对象
:ivar 方向: 涨跌方向(只读)
"""
@property
def 标识(self) -> str: ...
@标识.setter
def 标识(self, value: str) -> None: ...
@property
def 序号(self) -> int: ...
@序号.setter
def 序号(self, value: int) -> None: ...
@property
def 周期(self) -> int: ...
@周期.setter
def 周期(self, value: int) -> None: ...
@property
def 时间戳(self) -> datetime: ...
@时间戳.setter
def 时间戳(self, value: datetime) -> None: ...
@property
def 开盘价(self) -> float: ...
@开盘价.setter
def 开盘价(self, value: float) -> None: ...
@property
def 最高价(self) -> float: ...
@最高价.setter
def 最高价(self, value: float) -> None: ...
@property
def 最低价(self) -> float: ...
@最低价.setter
def 最低价(self, value: float) -> None: ...
@property
def 收盘价(self) -> float: ...
@收盘价.setter
def 收盘价(self, value: float) -> None: ...
@property
def 成交量(self) -> float: ...
@成交量.setter
def 成交量(self, value: float) -> None: ...
@property
def macd(self) -> 平滑异同移动平均线: ...
@macd.setter
def macd(self, value: 平滑异同移动平均线) -> None: ...
@property
def rsi(self) -> 相对强弱指数: ...
@rsi.setter
def rsi(self, value: 相对强弱指数) -> None: ...
@property
def kdj(self) -> 随机指标: ...
@kdj.setter
def kdj(self, value: 随机指标) -> None: ...
def __init__(self, 标识: str, 序号: int, 周期: int, 时间戳: datetime, 开盘价: float, 最高价: float, 最低价: float, 收盘价: float, 成交量: float, macd: 平滑异同移动平均线 = None, rsi: 相对强弱指数 = None, kdj: 随机指标 = None) -> Any:
"""
:param 标识: K线标识符
:param 序号: K线序号
:param 周期: K线周期(秒)
:param 时间戳: K线时间
:param 开盘价: 开盘价
:param 最高价: 最高价
:param 最低价: 最低价
:param 收盘价: 收盘价
:param 成交量: 成交量
:param macd: MACD指标对象(可选)
:param rsi: RSI指标对象(可选)
:param kdj: KDJ指标对象(可选)
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 方向(self) -> 相对方向:
""":return: 相对方向.向上(开盘<收盘)或 相对方向.向下(开盘>收盘)"""
...
def __bytes__(self) -> bytes: ...
@classmethod
def 创建普K(cls, 标识: str, 时间戳: datetime, 开盘价: float, 最高价: float, 最低价: float, 收盘价: float, 成交量: float, 序号: int, 周期: int) -> "K线":
"""
快捷构造普通K线
:param 标识: K线标识符
:param 时间戳: K线时间
:param 开盘价: 开盘价
:param 最高价: 最高价
:param 最低价: 最低价
:param 收盘价: 收盘价
:param 成交量: 成交量
:param 序号: K线序号
:param 周期: K线周期(秒)
:return: K线实例
"""
...
@classmethod
def 保存到DAT文件(cls, 路径: str, K线序列: List["K线"]) -> Any:
"""
将K线序列保存为二进制DAT文件
:param 路径: 保存路径
:param K线序列: K线列表
"""
...
@classmethod
def 读取大端字节数组(cls, 字节组: bytes, 周期: int, 标识: str) -> "K线":
"""
从大端字节序二进制数据反序列化K线(兼容.dat/.nb文件格式)
:param 字节组: 二进制数据(48字节)
:param 周期: 周期(秒)
:param 标识: K线标识
:return: K线实例
"""
...
@classmethod
def 获取MACD(cls, K线序列: List["K线"], : "K线", : "K线") -> Dict[str, float]:
"""
计算指定K线区间的MACD柱面积
:param K线序列: 完整K线序列
:param 始: 起始K线
:param 终: 终点K线
:return: {"阳": 正值面积和, "阴": 负值面积和, "合": 净面积, "总": 绝对面积和}
"""
...
@staticmethod
def 截取(序列: List["K线"], : "K线", : "K线") -> List["K线"]:
"""
按起止K线截取K线子序列
:param 序列: 完整K线序列
:param 始: 起始K线
:param 终: 终点K线
:return: K线子列表
"""
...
class 缠论K线(object):
"""
缠论K线 — 经包含处理后的标准化K线,有方向和分型结构标记。
:ivar 序号: 序号
:ivar 时间戳: 时间戳
:ivar 高: 最高价
:ivar 低: 最低价
:ivar 方向: 运行方向
:ivar 分型: 分型结构(顶/底/上/下等)
:ivar 周期: 周期(秒)
:ivar 标识: 标识符
:ivar 分型特征值: 分型特征值(顶取高,底取低)
:ivar 原始起始序号: 合并前的原始K线起始序号
:ivar 原始结束序号: 合并前的原始K线结束序号
:ivar 标的K线: 对应的原始K线
:ivar 买卖点信息: 买卖点信息(预留)
"""
@property
def 序号(self) -> int: ...
@序号.setter
def 序号(self, value: int) -> None: ...
@property
def 时间戳(self) -> datetime: ...
@时间戳.setter
def 时间戳(self, value: datetime) -> None: ...
@property
def 最高价(self) -> float: ...
@最高价.setter
def 最高价(self, value: float) -> None: ...
@property
def 最低价(self) -> float: ...
@最低价.setter
def 最低价(self, value: float) -> None: ...
@property
def 最终方向(self) -> 相对方向: ...
@最终方向.setter
def 最终方向(self, value: 相对方向) -> None: ...
@property
def 普K(self) -> "K线": ...
@普K.setter
def 普K(self, value: "K线") -> None: ...
@property
def 原始起始序号(self) -> int: ...
@原始起始序号.setter
def 原始起始序号(self, value: int) -> None: ...
@property
def 原始结束序号(self) -> int: ...
@原始结束序号.setter
def 原始结束序号(self, value: int) -> None: ...
@property
def 分型(self) -> Optional[分型结构]: ...
@分型.setter
def 分型(self, value: Optional[分型结构]) -> None: ...
def __init__(self, 序号: int, 时间戳: datetime, 最高价: float, 最低价: float, 最终方向: 相对方向, 普K: "K线", 原始起始序号: int, 原始结束序号: int, 分型: Optional[分型结构] = None) -> Any:
"""
:param 序号: 缠论K线序号
:param 时间戳: 时间戳
:param 最高价: 最高价
:param 最低价: 最低价
:param 最终方向: 方向
:param 普K: 对应的原始K线
:param 原始起始序号: 合并起始序号
:param 原始结束序号: 合并结束序号
:param 分型: 分型结构(可选)
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 镜像(self) -> Any:
"""
创建当前缠K的浅拷贝副本
:return: 新的缠论K线实例
"""
...
def 与MACD柱子匹配(self) -> bool:
""":return: 底分型时MACD柱<0,顶分型时MACD柱>0"""
...
def 与RSI匹配(self) -> bool:
""":return: 底分型时RSI < RSI_SMA,顶分型时RSI > RSI_SMA"""
...
def 与KDJ匹配(self) -> bool:
""":return: 底分型时K<D,顶分型时K>D"""
...
@classmethod
def 时间戳对齐(cls, 基线: List["缠论K线"], k线: "缠论K线") -> Any:
"""
在基线序列中找到与k线时间戳对齐的时间戳
:param 基线: 参照缠K序列
:param k线: 需要对齐的缠K
:return: 对齐后的时间戳
"""
...
@classmethod
def 创建缠K(cls, 时间戳: datetime, : float, : float, 方向: 相对方向, 结构: 分型结构, 原始序号: int, 普k: "K线", 之前: Optional["缠论K线"] = None) -> "缠论K线":
"""
创建新的缠论K线
:param 时间戳: K线时间
:param 高: 最高价
:param 低: 最低价
:param 方向: K线运行方向
:param 结构: 分型结构
:param 原始序号: 原始K线序号
:param 普k: 标的原始K线
:param 之前: 前一缠K(可选,自动校验包含关系)
:return: 缠论K线实例
:raises ValueError: 包含关系错误
"""
...
@classmethod
def 兼并(cls, 之前缠K: Optional["缠论K线"], 当前缠K: "缠论K线", 当前普K: "K线", 配置: 缠论配置) -> Tuple[Optional["缠论K线"], Optional[str]]:
"""
K线包含处理(合并)
:param 之前缠K: 前一缠K
:param 当前缠K: 当前待处理的缠K
:param 当前普K: 当前原始K线
:param 配置: 缠论配置
:return: (新缠K或None, 操作模式:"添加"/"替换"/None)
"""
...
@classmethod
def 分析(cls, 当前K线: "K线", 缠K序列: List["缠论K线"], 普K序列: List["K线"], 配置: 缠论配置) -> tuple[str, Optional["分型"]]:
"""
分析K线,执行指标计算+包含处理+分型判定
:param 当前K线: 新到的原始K线
:param 缠K序列: 现有缠K序列(会被原地修改)
:param 普K序列: 现有普K序列(会被原地修改)
:param 配置: 缠论配置
:return: (操作状态, 新形成的分型或None)
"""
...
@staticmethod
def 截取(序列: List["缠论K线"], : "缠论K线", : "缠论K线") -> List["缠论K线"]:
"""
:param 序列: 缠K序列
:param 始: 起始缠K
:param 终: 终点缠K
:return: 缠K子列表
"""
...
class 分型(object):
"""
分型 — 由左中右三根缠论K线构成的顶/底分型结构。
:ivar 左: 左侧缠K(可能为None
:ivar 中: 中间缠K(分型顶点/底点)
:ivar 右: 右侧缠K(可能为None
:ivar 结构: 分型结构(顶/底/上/下/包含)
:ivar 时间戳: 分型时间戳
:ivar 分型特征值: 顶分型取最高价,底分型取最低价
:ivar 关系组: 左中、中右、左右三对相对方向
:ivar 强度: 分型强度(强/中/弱/未知)
:ivar 与MACD柱子分型匹配: 是否与MACD柱子分型匹配
"""
@property
def (self) -> Optional[缠论K线]: ...
@左.setter
def (self, value: Optional[缠论K线]) -> None: ...
@property
def (self) -> 缠论K线: ...
@中.setter
def (self, value: 缠论K线) -> None: ...
@property
def (self) -> Optional[缠论K线]: ...
@右.setter
def (self, value: Optional[缠论K线]) -> None: ...
def __init__(self, : Optional[缠论K线], : 缠论K线, : Optional[缠论K线]) -> Any:
"""
:param 左: 左侧缠K
:param 中: 中间缠K
:param 右: 右侧缠K
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 关系组(self) -> Optional[Tuple[相对方向, 相对方向, 相对方向]]:
"""
左、中、右三对相对方向关系
:return: (左中关系, 中右关系, 左右关系) 或 None
"""
...
def 强度(self) -> Any:
"""
分型强度(强/中/弱/未知)
:return: 强度字符串
"""
...
def 与MACD柱子分型匹配(self) -> bool:
""":return: 底分型时左右MACD柱 > 中MACD柱,顶分型时左右MACD柱 < 中MACD柱"""
...
@classmethod
def 判断分型(cls, : "分型", : "分型", 模式: str = "中") -> bool:
"""
判断两个分型是否相同(identity比较)
:param 左: 左分型
:param 右: 右分型
:param 模式: 比较模式(默认"中"
:return: 是否为同一对象
"""
...
@staticmethod
def 从缠K序列中获取分型(K线序列: List[缠论K线], : 缠论K线) -> "分型":
"""
从缠K序列中提取以指定缠K为中元素的分型
:param K线序列: 缠K列表
:param 中: 中间K线
:return: 分型实例(右可能为None
"""
...
@staticmethod
def 向序列中添加(分型序列: List["分型"], 当前分型: "分型") -> Any:
"""
向分型序列尾部添加,自动校验顶底交替
:param 分型序列: 现有分型列表
:param 当前分型: 待添加分型
:raises ValueError: 首元素非顶底、连续同向分型时抛出
"""
...
class 虚线(object):
"""
虚线 — 笔/线段的通用数据结构,持有一组分型端点(文=起点分型, 武=终点分型)。
:ivar 标识: 类型标识("笔"/"线段"/"扩展线段"等)
:ivar 序号: 序号
:ivar 级别: 级别
:ivar 文: 起点分型
:ivar 武: 终点分型
:ivar 有效性: 是否有效
:ivar 基础序列: 内部虚线序列(笔序列/线段序列)
:ivar 特征序列: 特征序列列表(线段专用)
:ivar 实_中枢序列: 实中枢列表
:ivar 虚_中枢序列: 虚中枢列表
:ivar 合_中枢序列: 合中枢列表
:ivar 确认K线: 确认K线
:ivar 模式: 买卖点模式
:ivar 前一缺口: 前一缺口
:ivar 前一结束位置: 前一笔/线段的终点
:ivar 短路修正: 是否短路修正
:ivar 方向: 运行方向(只读)
:ivar 高: 最高价(只读)
:ivar 低: 最低价(只读)
:ivar 笔序列: 所有笔(只读)
:ivar 图表标题: 图表显示标题(只读)
"""
@property
def 序号(self) -> int: ...
@序号.setter
def 序号(self, value: int) -> None: ...
@property
def 标识(self) -> str: ...
@标识.setter
def 标识(self, value: str) -> None: ...
@property
def (self) -> 分型: ...
@文.setter
def (self, value: 分型) -> None: ...
@property
def (self) -> 分型: ...
@武.setter
def (self, value: 分型) -> None: ...
@property
def 级别(self) -> int: ...
@级别.setter
def 级别(self, value: int) -> None: ...
@property
def 有效性(self) -> bool: ...
@有效性.setter
def 有效性(self, value: bool) -> None: ...
def __init__(self, 序号: int, 标识: str, : 分型, : 分型, 级别: int, 有效性: bool = True) -> Any:
"""
:param 序号: 序号
:param 标识: 类型标识
:param 文: 起点分型
:param 武: 终点分型
:param 级别: 级别
:param 有效性: 是否有效
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 笔序列(self) -> Any:
"""笔序列"""
...
def 图表标题(self) -> str:
""":return: 图表显示标题"""
...
def 方向(self) -> "相对方向":
"""
:return: 运行方向
:raises RuntimeError: 无法识别的方向
"""
...
def (self) -> float:
"""虚线区间的最高价(向上线段为终点分型最高价,向下线段为起点分型最高价)"""
...
def (self) -> float:
"""虚线区间的最低价(向下线段为终点分型最低价,向上线段为起点分型最低价)"""
...
def 之前是(self, 之前: "虚线") -> bool:
"""
:param 之前: 前一条虚线
:return: 当前虚线的起点是否为前一条虚线的终点
"""
...
def 之后是(self, 之后: "虚线") -> bool:
"""
:param 之后: 后一条虚线
:return: 当前虚线的终点是否为后一条虚线的起点
"""
...
def 获取普K序列(self, 观察员: "观察者") -> List[K线]:
"""
:param 观察员: 观察者实例
:return: 区间内的原始K线列表
"""
...
def 获取缠K序列(self, 观察员: "观察者") -> List[缠论K线]:
"""
:param 观察员: 观察者实例
:return: 区间内的缠K列表
"""
...
def 获取数据文本(self) -> str:
"""获取用于保存的数据文本"""
...
@classmethod
def 创建笔(cls, : 分型, : 分型, 有效性: bool = True) -> "虚线":
"""
:param 文: 起点分型
:param 武: 终点分型
:param 有效性: 是否有效
:return: 虚线实例(标识="笔"
"""
...
@classmethod
def 创建线段(cls, 虚线序列: List["虚线"]) -> "虚线":
"""
:param 虚线序列: 构成线段的虚线列表(笔)
:return: 虚线实例(标识="线段"或"线段<...>"
"""
...
@classmethod
def 缠K买卖点模式(cls, 模式: str, 缠K: "缠论K线", 配置: 缠论配置) -> Any:
"""
:param 模式: "全量"/"任意"/"配置"/"相对"
:param 缠K: 待检测的缠论K线
:param 配置: 缠论配置
:return: 是否满足买卖点条件
"""
...
@classmethod
def 买卖点配置匹配(cls, 缠K: "缠论K线", 配置: 缠论配置) -> bool:
"""根据配置中的指标开关检测缠K匹配情况(MACD/KDJ/RSI组合)"""
...
@classmethod
def 买卖点任意匹配(cls, 缠K: "缠论K线") -> bool:
"""
:param 缠K: 缠论K线
:return: MACD/KDJ/RSI 任一匹配
"""
...
@classmethod
def 买卖点全量匹配(cls, csl: Any, 缠K: "缠论K线") -> bool:
"""
:param 缠K: 缠论K线
:return: MACD/KDJ/RSI 全部匹配
"""
...
@classmethod
def 买卖点相对匹配(cls, 缠K: "缠论K线") -> bool:
"""
:param 缠K: 缠论K线
:return: 三个指标中至少两个匹配
"""
...
@classmethod
def 计算MACD柱子均值(cls, 普K序列: List[K线], 实线: "虚线") -> float:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线(笔/线段)
:return: 区间内MACD柱绝对值的平均值
"""
...
@classmethod
def 计算MACD柱子均值_阴(cls, 普K序列: List[K线], 实线: "虚线") -> float:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 区间内负数MACD柱绝对值的平均值,无负数时返回False
"""
...
@classmethod
def 计算MACD柱子均值_阳(cls, 普K序列: List[K线], 实线: "虚线") -> float:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 区间内正数MACD柱绝对值的平均值,无正数时返回False
"""
...
@classmethod
def 武之全量MACD均值(cls, 普K序列: List[K线], 实线: "虚线") -> bool:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 终点K线的MACD柱是否小于区间均值(全量背驰信号)
"""
...
@classmethod
def 武之MACD均值(cls, 普K序列: List[K线], 实线: "虚线") -> bool:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 根据方向选择阳/阴均值判断
"""
...
@classmethod
def 武之MACD均值_阴(cls, 普K序列: List[K线], 实线: "虚线") -> bool:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 终点MACD柱绝对值小于阴均值时True(背驰)
"""
...
@classmethod
def 武之MACD均值_阳(cls, 普K序列: List[K线], 实线: "虚线") -> bool:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 终点MACD柱绝对值小于阳均值时True(背驰)
"""
...
@classmethod
def 武之MACD极值(cls, 普K序列: List[K线], 实线: "虚线") -> bool:
"""
:param 普K序列: 完整K线序列
:param 实线: 虚线
:return: 终点MACD柱是否为区间内极值
"""
...
@classmethod
def 计算K线序列MACD趋向背驰(cls, 普K序列: Sequence["K线"], 方向: 相对方向) -> Any:
"""
计算K线序列的MACD柱/DIF/DEA趋向背驰(三元素判断)
:param 普K序列: K线序列
:param 方向: 运行方向
:return: [柱子背驰, DIF背驰, DEA背驰]
"""
...
@classmethod
@lru_cache(maxsize=128)
def 买卖意义(cls, 实线: "虚线", 观察员: "观察者") -> Tuple[bool, str]:
"""
静止是相对的,而运动是绝对的
:param 实线: 虚线(笔/线段)
:param 观察员: 观察者实例
:return: (是否具有买卖意义, 原因字符串)
"""
...
@classmethod
def 计算MACD柱子分段(cls, k线序列: List["K线"]) -> Tuple[List[List["K线"]], ...]:
"""
:param k线序列: K线序列
:return: 按正负分段的MACD柱列表
"""
...
@classmethod
def 密集区域按间隔(cls, 交叉标记: List[int], 最大间隔: int = 5, 最少交叉数: int = 3) -> List[Tuple[int, int, int]]:
"""
交叉标记: 长度为len(macd_list)的列表,0=无交叉, 1=金叉, -1=死叉
最大间隔: 相邻交叉索引差 ≤ 此值则归入同一密集区
最少交叉数: 一个密集区内至少包含的交叉次数
:return: [(起始交叉索引, 结束交叉索引, 区内交叉次数), ...]
"""
...
@classmethod
def 统计MACD行为(cls, 普K序列: List[K线], 最大间隔: int = 8, 最少交叉数: int = 3) -> dict:
"""
:param 普K序列: K线序列
:param 最大间隔: 最大间隔 8
:param 最少交叉数: 最少交叉数 3
:return: 统计字典
"""
...
@classmethod
def 获取_武(cls, 实线: 虚线) -> 分型:
"""
递归获取虚线的终点分型(笔直接返回武,线段递归到底层笔的武)
:param 实线: 虚线
:return: 分型
"""
...
class (object):
"""
笔 — 纯静态方法容器,提供笔划分算法的所有函数。
主要方法:
获取缠K数量 — 获取笔内缠K数量
停顿 — 检测笔的停顿点
自检 — 校验笔的有效性
获取所有停顿位置 — 获取笔内所有停顿位置
获取起始分型 — 获取笔的起始分型
生成笔序列 — 从分型序列生成笔序列
是否背驰过 — 判断笔是否经过背驰
"""
@staticmethod
def 获取缠K数量(缠K序列: List[缠论K线], 笔序列: List[虚线], 配置: 缠论配置) -> int:
"""
获取笔内有效缠K数量(考虑笔弱化等配置)
:param 缠K序列: 候选笔的基础缠K序列
:param 笔序列: 已有笔序列
:param 配置: 缠论配置
:return: 有效缠K数量
"""
...
@staticmethod
def 次高(缠K序列: List[缠论K线], 笔内相同终点取舍: bool) -> 缠论K线:
"""
次高
:param 缠K序列: 缠K序列
:param 笔内相同终点取舍: 终点取舍方式
:return: 次高缠K
"""
...
@staticmethod
def 次低(缠K序列: List[缠论K线], 笔内相同终点取舍: bool) -> 缠论K线:
"""
次低
:param 缠K序列: 缠K序列
:param 笔内相同终点取舍: 终点取舍方式
:return: 次低缠K
"""
...
@staticmethod
def 实际高点(缠K序列: List[缠论K线], 笔内相同终点取舍: bool) -> 缠论K线:
"""
实际高点
:param 缠K序列: 缠K序列
:param 笔内相同终点取舍: 终点取舍方式
:return: 实际高点缠K
"""
...
@staticmethod
def 实际低点(缠K序列: List[缠论K线], 笔内相同终点取舍: bool) -> 缠论K线:
"""
实际低点
:param 缠K序列: 缠K序列
:param 笔内相同终点取舍: 终点取舍方式
:return: 实际低点缠K
"""
...
@staticmethod
def 相对关系(: 虚线, 配置: 缠论配置) -> bool:
"""
相对关系
:param 筆: 笔虚线
:param 配置: 缠论配置
:return: 方向是否匹配
"""
...
@classmethod
def 分析(cls, 当前分型: Optional[分型], 分型序列: List[分型], 笔序列: List[虚线], 缠K序列: List[缠论K线], 普K序列: List[K线], 递归层次: int, 配置: 缠论配置) -> Any:
"""
笔划分核心递归算法
:param 当前分型: 新形成的分型(可能为None)
:param 分型序列: 现有分型列表(原地修改)
:param 笔序列: 现有笔列表(原地修改)
:param 缠K序列: 缠K序列
:param 普K序列: 普K序列
:param 递归层次: 递归深度计数
:param 配置: 缠论配置
:return: 递归层次(int
"""
...
@staticmethod
def 以文会友(笔序列: List[虚线], : 分型) -> Optional[虚线]:
"""
以文会友
:param 笔序列: 笔列表
:param 文: 起点分型
:return: 匹配的笔或None
"""
...
@staticmethod
def 以武会友(笔序列: List[虚线], : 分型) -> Optional[虚线]:
"""
以武会友
:param 笔序列: 笔列表
:param 武: 终点分型
:return: 匹配的笔或None
"""
...
@staticmethod
def 根据缠K找笔(笔序列: List[虚线], 缠K: "缠论K线", 偏移: int = 1) -> Any:
"""
根据缠K找笔
:param 笔序列: 笔列表
:param 缠K: 缠论K线
:param 偏移: 序号偏移量
:return: 包含该缠K的笔或None
"""
...
@classmethod
def 自检(cls, : 虚线, 观察员: "观察者") -> bool:
"""
校验笔的有效性:高/低点是否为实际极值
:param 筆: 待校验的笔
:param 观察员: 观察者
:return: 有效为True
"""
...
@classmethod
def 获取所有停顿位置(cls, : 虚线, 观察员: "观察者") -> List[虚线]:
"""
获取笔内所有可能的停顿位置(用于背驰检测)
:param 筆: 笔
:param 观察员: 观察者
:return: 停顿位置的笔列表
"""
...
@classmethod
def 是否背驰过(cls, 当前筆: 虚线, 观察员: "观察者") -> List[缠论K线]:
"""
判断笔内是否发生过MACD趋向背驰
:param 当前筆: 笔
:param 观察员: 观察者
:return: 发生背驰的停顿位置列表
"""
...
class 线段特征(list):
"""
线段特征 — list 子类,持有一组同向虚线(笔),是线段划分的中间结构。
继承 list,元素为虚线。特征序列用于线段划分算法中的包含处理。
:ivar 序号: 序号
:ivar 标识: 标识
:ivar 线段方向: 线段运行方向(特征序列方向为其翻转)
:ivar 文: 第一个元素的起点分型(根据方向选取极值)
:ivar 武: 最后一个元素的终点分型(根据方向选取极值)
:ivar 高: 最高价
:ivar 低: 最低价
:ivar 方向: 特征序列方向(线段方向的翻转)
:ivar 图表标题: 图表标题
"""
@property
def 标识(self) -> str: ...
@标识.setter
def 标识(self, value: str) -> None: ...
@property
def 基础序列(self) -> List[虚线]: ...
@基础序列.setter
def 基础序列(self, value: List[虚线]) -> None: ...
@property
def 线段方向(self) -> 相对方向: ...
@线段方向.setter
def 线段方向(self, value: 相对方向) -> None: ...
def __init__(self, 标识: str, 基础序列: List[虚线], 线段方向: 相对方向) -> Any:
"""
:param 标识: 标识符
:param 基础序列: 基础虚线列表
:param 线段方向: 线段运行方向
"""
...
def 图表标题(self) -> str:
""":return: 图表标题"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def (self) -> 分型:
"""起点分型(向上线段取高高中的最大者,向下线段取低低中的最小者)"""
...
def (self) -> 分型:
"""终点分型(向上线段取高高中的最大者,向下线段取低低中的最小者)"""
...
def (self) -> float:
""":return: 文和武中分型特征值的较大者"""
...
def (self) -> float:
""":return: 文和武中分型特征值的较小者"""
...
def 方向(self) -> 相对方向:
""":return: 特征序列方向(线段方向的翻转)"""
...
def 添加(self, 待添加虚线: Union[虚线]) -> Any:
"""
:param 待添加虚线: 待添加的虚线
:raises ValueError: 方向不匹配时抛出
"""
...
def 删除(self, 待删除虚线: Union[虚线]) -> Any:
"""
:param 待删除虚线: 待删除的虚线
:raises ValueError: 方向不匹配时抛出
"""
...
@classmethod
def 新建(cls, 虚线序列: List[虚线], 线段方向: 相对方向) -> "线段特征":
"""
:param 虚线序列: 基础虚线列表
:param 线段方向: 线段方向
:return: 线段特征实例
"""
...
@classmethod
def 静态分析(cls, 虚线序列: List[虚线], 线段方向: 相对方向, 四象: str, 是否忽视: bool = False) -> List["线段特征"]:
"""
静态分析虚线序列,生成特征序列
:param 虚线序列: 笔/虚线列表
:param 线段方向: 线段运行方向
:param 四象: "老阳"/"老阴"/"小阳"/"少阴"
:param 是否忽视: True时不严格处理缺口包含
:return: 特征序列列表
"""
...
@classmethod
def 获取分型序列(cls, 特征序列: List) -> List[Any]:
"""
从特征序列提取特征分型序列
:param 特征序列: 线段特征列表
:return: 特征分型列表
"""
...
class 特征分型:
"""
特征分型 — 由左右中三个线段特征构成的顶/底分型,用于线段划分算法。
:ivar 左: 左侧特征序列
:ivar 中: 中间特征序列
:ivar 右: 右侧特征序列
:ivar 结构: 分型结构(顶/底)
"""
@property
def (self) -> 线段特征: ...
@左.setter
def (self, value: 线段特征) -> None: ...
@property
def (self) -> 线段特征: ...
@中.setter
def (self, value: 线段特征) -> None: ...
@property
def (self) -> 线段特征: ...
@右.setter
def (self, value: 线段特征) -> None: ...
@property
def 结构(self) -> 分型结构: ...
@结构.setter
def 结构(self, value: 分型结构) -> None: ...
def __init__(self, : 线段特征, : 线段特征, : 线段特征, 结构: 分型结构) -> Any:
"""
:param 左: 左侧特征序列
:param 中: 中间特征序列
:param 右: 右侧特征序列
:param 结构: 分型结构
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
class 线段(object):
"""
线段 — 纯静态方法容器,提供线段划分算法的所有函数。
主要方法:
检查线段破坏(前一线段, 当前线段) — 检查线段是否被破坏
获取线段特征序列(笔序列, 线段方向, 需要被合并方向序列) — 提取特征序列
线段有缺口(特征序列, 线段方向, 当前分型序列, 特征分型序列) — 判断线段是否有缺口
判断新线段(笔序列) — 判断是否形成新线段
静态分析(观察员) — 静态线段分析
生成线段序列(笔序列, 观察员) — 从笔序列生成线段序列
"""
@classmethod
def 添加虚线(cls, : 虚线, : 虚线) -> Any:
"""
向线段中添加一笔
:param 段: 线段
:param 筆: 待添加的笔
:raises ValueError: 不连续或标识不符时抛出
"""
...
@classmethod
def 武斗(cls, : 虚线, : 分型, 行号: int) -> Any:
"""
更新线段的终点分型(武)
:param 段: 线段
:param 武: 新的终点分型
:param 行号: 调用行号(用于调试)
"""
...
@classmethod
def 特征分型终结(cls, : 虚线) -> bool:
"""
是否符合特征序列正常分型终结
:param 段: 线段
:return: 是否终结
"""
...
@classmethod
def 特征序列状态(cls, : 虚线) -> Tuple[bool, bool, bool]:
"""
:param 段: 线段
:return: (左是否存在, 中是否存在, 右是否存在)
"""
...
@classmethod
def 获取缺口(cls, : 虚线) -> Optional[缺口]:
"""
获取线段特征序列第一二元素间的缺口
:param 段: 线段
:return: 缺口或None
"""
...
@classmethod
def 四象(cls, : 虚线) -> str:
"""
判断线段的四象属性
:param 段: 线段
:return: "老阳"(向下线段后继缺口向上线段) / "老阴"(向上线段后继缺口向下线段) / "小阳"(普通向上) / "少阴"(普通向下)
"""
...
@classmethod
def 设置特征序列(cls, : 虚线, 序列: Any, 行号: Any) -> Any:
"""
设置特征序列
:param 段: 线段
:param 序列: 特征序列三元组 (左,中,右)
:param 行号: 调用行号
"""
...
@classmethod
def 刷新特征序列(cls, : 虚线, 配置: 缠论配置) -> Any:
"""
刷新特征序列
:param 段: 线段
:param 配置: 缠论配置
"""
...
@classmethod
def 分割序列(cls, : 虚线, 所属中枢: Optional["中枢"] = None) -> Tuple[List[虚线], List[虚线], List[虚线], Optional[虚线]]:
"""
将线段基础序列分割为前/后/第三买卖/贯穿伤四部分
:param 段: 线段
:param 所属中枢: 所属中枢(用于第三买卖点检测)
:return: (前序列, 后序列, 第三买卖线, 贯穿伤)
"""
...
@classmethod
def 刷新(cls, : 虚线, 配置: 缠论配置) -> Any:
"""
刷新线段的特征序列和内部中枢序列
:param 段: 线段
:param 配置: 缠论配置
"""
...
@classmethod
def 序列重置(cls, : 虚线, 序列: Sequence) -> Any:
"""
序列重置
:param 段: 线段
:param 序列: 参考序列
"""
...
@classmethod
def 查找贯穿伤(cls, : 虚线) -> Optional[虚线]:
"""
查找贯穿伤
:param 段: 线段
:return: 贯穿伤虚线或None
"""
...
@classmethod
def 获取内部中枢序列(cls, : 虚线, 配置: 缠论配置) -> Tuple[List["中枢"], List["中枢"], List["中枢"]]:
"""
获取内部中枢序列
:param 段: 线段
:param 配置: 缠论配置
:return: (虚中枢列表, 实中枢列表, 合中枢列表)
"""
...
@classmethod
def 基础判断(cls, : 虚线, : 虚线, : 虚线, 关系序列: List[相对方向]) -> bool:
"""
连续三笔且重叠
:param 左: 左侧虚线
:param 中: 中间虚线
:param 右: 右侧虚线
:param 关系序列: 允许的方向关系
:return: 是否满足基础条件
"""
...
@classmethod
def 分析(cls, 笔序列: List[虚线], 线段序列: List[虚线], 配置: 缠论配置, 层级: int = 0, 关系序列: Any = [相对方向.向上, 相对方向.向下]) -> None:
"""
线段划分核心递归算法
:param 笔序列: 笔列表
:param 线段序列: 线段列表(原地修改)
:param 配置: 缠论配置
:param 层级: 递归深度
:param 关系序列: 允许的方向关系
"""
...
@classmethod
def 武终(cls, : 虚线, 行号: int) -> Any:
"""
武终
:param 段: 线段
:param 行号: 调用行号
"""
...
@classmethod
def 验证序列(cls, : 虚线, 序列: Sequence) -> Any:
"""
验证序列
:param 段: 线段
:param 序列: 参考序列
"""
...
@classmethod
def 扩展分析(cls, 虚线序列: List[虚线], 线段序列: List[虚线], 配置: 缠论配置) -> None:
"""
即同级别分析
将笔看成线段
:param 虚线序列: 基础虚线列表
:param 线段序列: 扩展线段列表(原地修改)
:param 配置: 缠论配置
"""
...
@classmethod
@lru_cache(maxsize=128)
def 判断线段内部是否背驰(cls, 当前段: 虚线, 观察员: 观察者) -> bool:
"""
判断线段内部是否发生背驰(基于内部中枢和MACD)
:param 当前段: 线段
:param 观察员: 观察者
:return: bool
"""
...
@classmethod
def 获取所有停顿位置(cls, : 虚线, 观察员: "观察者") -> List[虚线]:
"""
获取所有停顿位置
:param 段: 线段
:param 观察员: 观察者
:return: 停顿位置的线段列表
"""
...
@classmethod
def 是否背驰过(cls, 当前段: 虚线, 观察员: "观察者") -> List[缠论K线]:
"""
判断线段内是否发生过背驰(遍历所有停顿位置)
:param 当前段: 线段
:param 观察员: 观察者
:return: 背驰点列表
"""
...
class 中枢(object):
"""
中枢 — 三段虚线重叠区间构成的价格中枢,支持延伸和扩展。
:ivar 序号: 序号
:ivar 标识: 标识
:ivar 级别: 级别
:ivar 基础序列: 构成中枢的基础虚线(至少3条)
:ivar 第三买卖线: 第三类买卖点关联虚线
:ivar 本级_第三买卖线: 本级第三类买卖点虚线
:ivar 高: 中枢上沿(虚线低点的最大值)
:ivar 低: 中枢下沿(虚线高点的最小值)
:ivar 高高: 全区间最高价
:ivar 低低: 全区间最低价
:ivar 文: 起点分型
:ivar 武: 终点分型
:ivar 方向: 中枢方向(首条虚线的方向翻转)
:ivar 离开段: 最后一条虚线
"""
@property
def 序号(self) -> int: ...
@序号.setter
def 序号(self, value: int) -> None: ...
@property
def 标识(self) -> str: ...
@标识.setter
def 标识(self, value: str) -> None: ...
@property
def 级别(self) -> int: ...
@级别.setter
def 级别(self, value: int) -> None: ...
@property
def 基础序列(self) -> List[虚线]: ...
@基础序列.setter
def 基础序列(self, value: List[虚线]) -> None: ...
def __init__(self, 序号: int, 标识: str, 级别: int, 基础序列: List[虚线]) -> Any:
"""
:param 序号: 序号
:param 标识: 标识
:param 级别: 级别
:param 基础序列: 基础虚线列表
"""
...
def 添加虚线(self, 实线: 虚线) -> Any:
"""
向中枢添加新虚线(延伸),重置第三买卖线
:param 实线: 新虚线
"""
...
def __str__(self) -> str: ...
def __repr__(self) -> str: ...
def 图表标题(self) -> str:
""":return: 图表标题"""
...
def 离开段(self) -> 虚线:
""":return: 最后一条虚线"""
...
def 方向(self) -> 相对方向:
""":return: 中枢方向(首条虚线的方向翻转)"""
...
def (self) -> float:
""":return: 中枢上沿(前三段中虚线高点的最小值)"""
...
def (self) -> float:
""":return: 中枢下沿(前三段中虚线低点的最大值)"""
...
def 高高(self) -> float:
""":return: 全区间最高价"""
...
def 低低(self) -> float:
""":return: 全区间最低价"""
...
def (self) -> 分型:
""":return: 起点分型"""
...
def (self) -> 分型:
""":return: 终点分型"""
...
def 获取数据文本(self) -> str:
"""获取用于保存的数据文本"""
...
def 完整性(self, 虚实: str) -> Any:
"""
判断中枢是否完整(是否有第三买卖点或内部中枢离开)
详情见 教你炒股票 43:有关背驰的补习课(2007-04-06 15:31:28)
不完整时 下一个中枢大概率会与当前中枢发生扩展!
:param 虚实: "实"/"虚"/"合"
:return: 完整为True
"""
...
def 获取序列(self) -> List[虚线]:
"""
获取中枢的完整虚线序列(基础序列+第三买卖线)
:return: 虚线列表
"""
...
def 获取扩展中枢(self, 扩展中枢: List, 配置: 缠论配置) -> Any:
"""
当基础序列>=9时,从中枢中提取扩展线段中枢
:param 扩展中枢: 存放扩展中枢的列表
:param 配置: 缠论配置
"""
...
def 校验合法性(self, 序列: Sequence[虚线], 中枢序列: List["中枢"]) -> bool:
"""
校验当前中枢在给定序列中是否仍然合法
:param 序列: 基础虚线序列
:param 中枢序列: 中枢列表
:return: 合法为True,不合法会原地裁剪基础序列
"""
...
def 设置第三买卖线(self, 线: Union[虚线, None]) -> Any:
"""
设置第三类买卖点关联虚线
:param 线: 第三买卖虚线或None
"""
...
def 当前状态(self) -> Any:
"""
获取中枢当前状态:中枢之中/中枢之上/中枢之下
详情见 教你炒股票 49:利润率最大的操作模式(2007-04-26 08:16:56)
当前中枢最后一段所处的位置关系
一、当下在该中枢之中。
因为在中枢里,由于这时候怎么演化都是对的,不操作是最好的操作,等待其演化第二、三类,
当然,如果你技术好点,可以判断出次级别的第二类买点,这些买点很多情况下都是在中枢中出现的,那当然也是可以参与的。
但如果没有这种技术,那就有了再说了。只把握你自己当下技术水平能把握的机会,这才是最重要的。
二、当下在该中枢之下。
1.当下之前未出现该中枢第三类卖点。
2.当下之前已出现该中枢第三类卖点(正出现也包括在这种情况下,按最严格的定义,这最精确的卖点,是瞬间完成的,而具有操作意义的第三类卖点,其实是一个包含该最精确卖点的足够小区间)
三、当下在该中枢之上。
1.当下之前未出现该中枢第三类买点。
2.当下之前已出现该中枢第三类买点。
:return: "中枢之中" / "中枢之上" / "中枢之下"
"""
...
@classmethod
def 基础检查(cls, : 虚线, : 虚线, : 虚线) -> bool:
"""
检查三条虚线是否构成中枢(连续且重叠)
:param 左: 左侧虚线
:param 中: 中间虚线
:param 右: 右侧虚线
:return: bool
"""
...
@classmethod
def 创建(cls, : 虚线, : 虚线, : 虚线, 级别: int, 标识: str = "") -> "中枢":
"""
从三条连续且重叠的虚线创建中枢
:param 左: 左侧虚线
:param 中: 中间虚线
:param 右: 右侧虚线
:param 级别: 中枢级别
:param 标识: 中枢标识前缀
:return: 中枢实例
"""
...
@classmethod
def 从序列中获取中枢(cls, 虚线序列: Sequence[虚线], 起始方向: 相对方向, 标识: str) -> Optional["中枢"]:
"""
从虚线序列中按起始方向查找第一个中枢
:param 虚线序列: 虚线列表
:param 起始方向: 第一条虚线的方向
:param 标识: 中枢标识前缀
:return: 中枢或None
"""
...
@classmethod
def 向中枢序列尾部添加(cls, 中枢序列: List["中枢"], 待添加中枢: "中枢") -> Any:
"""
:param 中枢序列: 中枢列表
:param 待添加中枢: 待添加的中枢
"""
...
@classmethod
def 从中枢序列尾部弹出(cls, 中枢序列: List["中枢"], 待弹出中枢: "中枢") -> Optional["中枢"]:
"""
:param 中枢序列: 中枢列表
:param 待弹出中枢: 待弹出的中枢
:return: 弹出的中枢或None
"""
...
@classmethod
def 分析(cls, 虚线序列: Sequence[虚线], 中枢序列: List["中枢"], 跳过首部: bool = True, 标识: str = "", 层级: int = 0) -> None:
"""
中枢识别核心递归算法
:param 虚线序列: 基础虚线列表
:param 中枢序列: 中枢列表(原地修改)
:param 跳过首部: True: 跳过首元素中枢
:param 标识: 中枢标识前缀
:param 层级: 递归深度
"""
...
class 观察者:
"""
观察者 — 单周期缠论分析器,接收K线流式输入并逐层计算所有层级序列。
核心入口为 增加原始K线(普K),每收到一根新K线就增量更新:
原始K线 → 缠论K线(包含处理+合并)→ 分型 → 笔 → 线段 → 中枢 → 买卖点
:ivar 标识: "{符号}:{周期}"
:ivar 当前K线: 最后一根原始K线
:ivar 当前缠K: 最后一根缠论K线
:ivar 普通K线序列 / 缠论K线序列 / 分型序列 / 笔序列 / 线段序列 / 中枢序列 等
"""
@property
def 符号(self) -> str: ...
@符号.setter
def 符号(self, value: str) -> None: ...
@property
def 周期(self) -> int: ...
@周期.setter
def 周期(self, value: int) -> None: ...
@property
def 配置(self) -> 缠论配置: ...
@配置.setter
def 配置(self, value: 缠论配置) -> None: ...
def __init__(self, 符号: str, 周期: int, 配置: 缠论配置) -> Any:
"""
初始化观察者
:param 符号: 交易对符号
:param 周期: K线周期(秒)
:param 配置: 缠论配置
"""
...
def 观察员(self) -> Any:
"""观察员(自引用)"""
...
def 标识(self) -> str:
''':return: "{符号}:{周期}"'''
...
def 当前K线(self) -> Optional["K线"]:
""":return: 最后一根原始K线"""
...
def 当前缠K(self) -> Optional["缠论K线"]:
""":return: 最后一根缠论K线"""
...
def 重置基础序列(self) -> Any:
"""清空所有分析序列,重置为初始状态"""
...
@final
def 增加原始K线(self, 普K: K线) -> Any:
"""
核心入口 — 投喂一根原始K线,增量更新所有层级
:param 普K: 新到的原始K线
处理流程: 原始K线→缠论K线(包含处理+合并)→分型→笔→线段→中枢→买卖点
"""
...
def 测试_保存数据(self, root: str = None) -> Any:
"""
拆分各序列数据,单独存文件,文件名为对应变量名
:param root: 保存根目录(可选)
"""
...
def 识别买卖点(self) -> Any:
"""识别买卖点(占位方法,具体逻辑在子类或Rust核心中实现)"""
...
def 静态重新分析(self) -> Any:
"""静态重新分析(占位方法)"""
...
def 加载本地数据(self, 文件路径: str) -> Any: ...
@classmethod
def 读取数据文件(cls, 文件路径: str, 配置: Any = 缠论配置()) -> Self:
"""
:param 文件路径: 数据文件路径 格式如: btcusd-300-1631772074-1632222374.nb
:param 配置: 缠论配置
:return: 观察者实例
"""
...
class K线合成器:
"""
K线合成器 — 将小周期K线合成为大周期K线,支持多周期级联合成。
:ivar 标识: 合成器标识
:ivar 周期组: 从小到大排列的周期组
:ivar 当前K线: 各周期当前K线
:ivar 合成K线列表: 各周期已合成的K线列表
"""
@property
def 标识(self) -> str: ...
@标识.setter
def 标识(self, value: str) -> None: ...
@property
def 周期组(self) -> List[int]: ...
@周期组.setter
def 周期组(self, value: List[int]) -> None: ...
@property
def 事件回调(self) -> Optional[Callable]: ...
@事件回调.setter
def 事件回调(self, value: Optional[Callable]) -> None: ...
def __init__(self, 标识: str, 周期组: List[int], 事件回调: Optional[Callable] = None) -> Any:
"""
初始化K线合成器
:param 标识: 合成器标识
:param 周期组: 从小到大排列的周期列表
:param 事件回调: 可选,K线合成完成时的回调函数(信号类型, 标识, 周期, 完成K线)
"""
...
def 设置事件回调(self, 回调函数: Callable) -> Any:
"""
设置事件回调函数
:param 回调函数: 回调函数
"""
...
def 投喂(self, 时间戳: datetime, : float, : float, : float, : float, : float) -> Any:
"""
投喂原始tick数据
:param 时间戳: 时间戳
:param 开: 开盘价
:param 高: 最高价
:param 低: 最低价
:param 收: 收盘价
:param 量: 成交量
"""
...
def 投喂K线(self, 普K: K线) -> Any:
"""
统一入口 — 投喂最小周期K线,自动合成大周期并分发给各周期观察者
:param 普K: 最小周期原始K线
"""
...
def 获取当前K线(self, 周期: int) -> Optional[K线]:
"""
获取指定周期当前正在合成的K线
:param 周期: 目标周期
:return: 当前K线或None
"""
...
class 立体分析器:
"""
立体分析器 — 多周期缠论分析器,内部包含K线合成器 + 每周期一个观察者。
通过最小周期合成大周期K线,各周期观察者独立分析,实现多周期联立。
:ivar 周期组: 所有分析周期
:ivar 观察员: 各周期对应的观察者
:ivar K线合成器: 内部K线合成器
"""
@property
def 符号(self) -> str: ...
@符号.setter
def 符号(self, value: str) -> None: ...
@property
def 周期组(self) -> List[int]: ...
@周期组.setter
def 周期组(self, value: List[int]) -> None: ...
@property
def 配置(self) -> 缠论配置: ...
@配置.setter
def 配置(self, value: 缠论配置) -> None: ...
@property
def 配置组(self) -> Dict[int, 缠论配置]: ...
@配置组.setter
def 配置组(self, value: Dict[int, 缠论配置]) -> None: ...
def __init__(self, 符号: str, 周期组: List[int], 配置: 缠论配置 = 缠论配置(), 配置组: Dict[int, 缠论配置] = dict()) -> Any:
"""
初始化多周期立体分析器
:param 符号: 交易对符号
:param 周期组: 所有分析周期列表(第一个为最小输入周期)
:param 配置: 默认配置
:param 配置组: 各周期独立配置 {周期: 缠论配置}
"""
...
def 投喂K线(self, 普K: K线) -> Any:
"""
统一入口 — 投喂最小周期K线,自动合成大周期并分发给各周期观察者
:param 普K: 最小周期原始K线
:raises RuntimeError: 当投喂的K线周期与输入周期不匹配时
"""
...
def 测试_保存数据(self) -> Any:
"""拆分各序列数据,单独存文件,文件名为对应变量名"""
...
def 转化为时间戳(ts: Any) -> int: ...
def 转化为时间戳_数字(ts: Any) -> int: ...