请求指导:Pine Script中同一时间点多框架开盘价去重方案
多时间框架开盘线去重的实用思路
核心原则:优先级分层
先给不同时间框架明确优先级,比如:
- 月开盘(最高优先级)> 周开盘 > 交易日开盘(最低优先级)
同一时间点只保留优先级最高的那条开盘数据,从根源避免重复。
具体实现方向
1. 结构化数据+分组去重
把所有时间框架的开盘数据整理成包含以下字段的数据集:
- 时间戳(统一用UTC时间戳避免时区混乱)
- 开盘价
- 优先级标记(比如用数字:1=月,2=周,3=日)
用数据工具做分组去重,比如用pandas的向量化操作(比循环高效,资源友好):
import pandas as pd # 假设已经有整理好的df,包含timestamp、open_price、priority三列 deduped_df = df.groupby('timestamp').apply(lambda x: x.loc[x['priority'].idxmin()])
这个操作会按时间戳分组,每组只留下优先级最高的那条记录。
2. 适配特殊交易场景
- 24/7加密货币:直接按自然日/周/月的UTC时间分界判断开盘点即可,不需要考虑休市。
- Forex/跨时区资产:用
pytz统一转换为交易时区(比如纽约时间、伦敦时间)后再判断时间框架分界,避免时区错位导致的错误开盘点。 - 股票/指数(含盘前):用
pandas_market_calendars获取对应交易所的交易日历,精准识别交易日开盘(包括盘前时段的开盘点),而不是硬编码自然日。
3. 实时数据优化
如果是实时绘制场景,不需要每次全量处理历史数据:
- 维护一个最近时间点的缓存,当新的开盘点触发时,先检查缓存里是否已有同时间戳的记录;
- 如果有,只保留优先级更高的那条;如果没有,直接添加到数据集。
内容的提问来源于stack exchange,提问作者i am different
相关产品推荐
相关产品推荐

