三线距离保持"问题的分析
你说的"三线距离保持"在不同场景下含义不同,我需要先明确一下你的具体语境,常见的有两种:

布林带三线(上轨/中轨/下轨)
如果是布林带(Bollinger Bands),三线距离反映的是波动率:
import pandas as pd
import numpy as np
# 假设已有 close 价格数据
def bollinger(close, n=20, k=2):
mid = close.rolling(n).mean()
std = close.rolling(n).std()
upper = mid + k * std
lower = mid - k * std
return mid, upper, lower
def band_width_metrics(close, n=20, k=2):
mid, upper, lower = bollinger(close, n, k)
# 1. 带宽(上轨-下轨)/中轨 —— 衡量距离"松紧"
bandwidth = (upper - lower) / mid
# 2. 上轨距离 / 下轨距离
up_dist = (upper - close) / close
dn_dist = (close - lower) / close
# 3. 对称性(三线是否居中)
skew = (up_dist - dn_dist) / bandwidth
df = pd.DataFrame({
'bandwidth': bandwidth, # 越小越"缩口"
'up_dist': up_dist,
'dn_dist': dn_dist,
'skew': skew # 0 附近=对称,正=偏上,负=偏下
})
return df
# 用法
metrics = band_width_metrics(df['close'])
print(metrics.tail(20))
如何看保持情况: | 指标 | 含义 | 观察点 | |------|------|--------| | bandwidth 持续小 | 三线收窄,即将变盘 | 找历史百分位<10% | | bandwidth 持续大 | 趋势/高波动 | 突破后跟随 | | skew 接近0 | 价居中轨,均衡 | 震荡特征 | | skew 偏离大 | 价贴某一边轨 | 趋势特征 |
均线三线(如 5/10/20 或 MA 多头排列)
如果是均线保持距离,重点关注间距稳定性:
def ma_gap(close, periods=(5, 10, 20)):
mas = {p: close.rolling(p).mean() for p in periods}
a, b, c = [mas[p] for p in periods]
# 相邻均线间距
d1 = a - b # 短期-中期
d2 = b - c # 中期-长期
# 间距是否稳定(标准差小 = 稳定发散/收敛)
stability = pd.DataFrame({
'd1': d1, 'd2': d2,
'd1_std': d1.rolling(20).std(),
'd2_std': d2.rolling(20).std(),
})
return stability
判断标准:
d1、d2同步放大且稳定 → 多头/空头健康d1快速接近d2=0 → 均线黏合,方向未定- 间距突然收缩 → 趋势可能衰竭
我需要你补充的点
因为"三线"具体指哪三条、判断"保持"的标准,直接决定代码怎么写,请告诉我:
- 三线是什么?(布林带?均线?MACD的DIF/DEA/柱?KDJ?还是自定义的三条线)
- "距离保持"的目标:是横向稳定不收敛?还是等距发散?还是回到某个阈值?
- 数据频率(日线/分钟)和是否已有 DataFrame 列名?
把这段代码贴出来,我直接帮你写"看保持情况"的判定函数和可视化。