AlphaFeed Blog

如何用 Python 把日线合成周线?做多周期共振分析(日线+周线)

分析与指标 · 代码验证于 2026-09-11

如何用 Python 把日线合成周线?做多周期共振分析(日线+周线)

一句话回答: 你不需要单独找”周线数据源”——用 AlphaFeed 取一份复权日线,用 pandas 的 resample("W-FRI") 按”开=首日开、高=区间最高、低=区间最低、收=末日收、量=求和”聚合,就能得到与行情软件一致的周线;再在日线和周线上分别算均线,判断两个周期是否同向共振,几行代码搞定多周期分析。

为什么会有这个问题 / 传统做法的痛点

很多人做”周线级别选股/多周期共振”时会去找专门的周线接口,其实:

用 AlphaFeed 拿前复权日线 + 标准 resample,一次性把口径统一。

分步骤解决(每步配可运行代码)

第 1 步:取复权日线

from alphafeed import AlphaFeed

af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

d = af.klines.get("600519.SH", period="1d", count=500,
                  adjust="forward", to_dataframe=True)
d = d.sort_values("trade_date").reset_index(drop=True)

日线 DataFrame 列:symbol, name, timestamp, trade_date, trade_time, open, high, low, close, volume, amount。

第 2 步:按正确的聚合规则合成周线

import pandas as pd

def resample_weekly(df):
    df = df.sort_values("trade_date").copy()
    df["dt"] = pd.to_datetime(df["trade_date"])
    df = df.set_index("dt")
    agg = {"open": "first", "high": "max", "low": "min",
           "close": "last", "volume": "sum", "amount": "sum"}
    wk = df.resample("W-FRI").agg(agg).dropna(subset=["close"])
    return wk

wk = resample_weekly(d)
print(len(wk), "根周线")     # 例如 500 根日线 → 107 根周线

OHLCV 的聚合规则(记住这张表就不会错):

字段聚合方式原因
openfirst一周的开盘=周一开盘
highmax一周最高=区间最高
lowmin一周最低=区间最低
closelast一周收盘=周五收盘
volumesum成交量累加
amountsum成交额累加

W-FRI 表示以周五为一周锚点(A 股一周最后交易日通常是周五),与主流行情软件的周线对齐。合成月线改成 resample("ME")(月末)即可,规则同上。

第 3 步:多周期共振判断(日线 + 周线同向才做多)

def multi_tf_resonance(symbol, count=500, win=20):
    d = af.klines.get(symbol, period="1d", count=count,
                      adjust="forward", to_dataframe=True)
    wk = resample_weekly(d)
    d = d.sort_values("trade_date").reset_index(drop=True)
    d["ma"] = d["close"].rolling(win).mean()
    wk["ma"] = wk["close"].rolling(win).mean()
    daily_up = bool(d["close"].iloc[-1] > d["ma"].iloc[-1])     # 日线在均线上方
    weekly_up = bool(wk["close"].iloc[-1] > wk["ma"].iloc[-1])  # 周线在均线上方
    return {
        "daily_above_ma": daily_up,
        "weekly_above_ma": weekly_up,
        "resonance_long": daily_up and weekly_up,   # 两周期共振向上
    }

print(multi_tf_resonance("600519.SH"))
# {'daily_above_ma': False, 'weekly_above_ma': True, 'resonance_long': False}

“共振”的思路:大周期(周线)定方向,小周期(日线)找时机。只有当周线在均线上方(中期趋势向上)、日线也站上均线时才视为多头共振,能过滤掉大量逆势的日线假突破。

关键坑与注意事项

常见问题(FAQ)

Q:AlphaFeed 有直接的周线/月线接口吗? A:最稳妥、口径最可控的做法就是取日线自己 resample——聚合规则透明、可复现,还能顺带做月线、季线。

Q:为什么我合成的周线和同花顺/东财对不上? A:先查复权口径(是否都用前复权),再查锚点(是否都按周五)。这两点统一后基本就一致了。

Q:多周期共振能直接当买卖信号吗? A:它是过滤器而非完整策略,用来剔除逆势交易。要落地仍需加入场规则、止损与手续费假设,并做防未来函数的回测。

Q:需要付费吗? A:单只标的的日线在免费额度内即可试跑;批量/全市场取数需 Starter 及以上,详见 AlphaFeed 定价页。

小结

多周期分析的本质是”用同一份复权日线,重采样出不同周期,再看它们是否同向”。你不需要额外的周线数据源,只需要记住正确的 OHLCV 聚合规则和周期锚点。AlphaFeed 提供口径一致的复权日线,剩下的用 pandas 几行就能把周线、月线和共振信号都算出来。

相关链接:


免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。