Moralis 历史价格复查:区块单价与指定池OHLC如何对齐
链小知 · 进阶 · 核验 · 依官方文档整理
选择正确地址与时间参数,核对蜡烛窗口、分页和单位,避免把块末价格当整小时开高低收。
开始前准备
- 已有脱敏历史Price/OHLC响应或官方示例,以及目标链、token/pair、区块或带时区时间范围。
- 只整理请求与既有记录;不运行需要API key的示例脚本。
1. 先选区块价格还是池蜡烛图
token Price按合约与to_block检查某区块价格;OHLC是GET /api/v2.2/pairs/{address}/ohlcv,address必须是交易对地址。两个端点都能用于历史分析,但返回对象和计价口径不同。
官方OHLC教程用Uniswap V3 WETH/USDC pair作为示例,不能把token合约替换进pair路径。没有明确pair时先标为输入不足,不从同名token或响应示例的tokenAddress推池身份。
检查结果:任务明确为区块单价或指定池蜡烛,输入地址类型正确。
2. 用带时区日期准备范围并核对区块优先级
区块查询to_block是高度,不是Unix秒/毫秒。OHLC fromDate/toDate正文接受秒或日期串;优先用明确带Z的ISO格式,例如2026-10-01T00:00:00.000Z,避免把本地日界线当UTC。
OHLC正文说明同时给fromBlock与fromDate时取fromBlock,toBlock与toDate同理。已有请求混填时按该优先级解释,并保留与日期参数schema的差别;不要声称日期必然生效。仅有块高时也不要把高度直接转换成时间戳。
检查结果:范围每一边都有明确类型/时区,冲突参数按官方说明显式标注。
3. 固定蜡烛粒度和价格币种
检查timeframe和currency,示例1h与usd表示每小时的美元OHLC,不是秒级价格或原币余额。currency=native时价格币种不同,不能把两套close直接相减。
官方教程timestamp定义为蜡烛开始时间,volume说明为USD、trades为交易数;交易量与成交数分开。没有结束或成熟状态证据的最后一根蜡烛不要默认已完整,不能因有一行结果就宣称整个小时终值。
检查结果:每根蜡烛带开始时间、粒度和币种;volume与trades及OHLC单位清楚。
4. 核对分页和 OHLC 自洽性
从已有OHLC对象核对pairAddress、timeframe、currency与result;cursor是下一页定位,不是区块高度。多页已有数据按同一pair+开始时间合并,记录重复行或冲突,不把一页称为全时间范围。
对每行做基本检查:high不小于open/close,low不大于open/close,volume/trades若缺失或异常则保留原值。缺行不自动补为0,也不在没有方法证据时补成上一根收盘价;这是核对性规则,不是本轮服务返回实测。
检查结果:已有页覆盖范围明确,重复/缺行和异常有记录,没有虚构补齐完整历史。
5. 解释两端点差异并列出成本边界
token自动选池历史规则与OHLC指定pair的市场可能不同;块末最后swap价格也不能直接推小时open/high/low。只有链、市场、时间与币种对齐后才比较同种价格字段。
当前EVM CU表单币50、OHLC150,不把分页和重复查询当零成本。完成时列出匹配字段与不能直接比较的字段;数据服务要求X-API-Key,公开文档示例不代表本次已获历史数据或稳定延迟。
检查结果:差异结论可追溯到池/时间/单位,未把接口差异误报成价格错误或交易信号。
怎样确认完成
- 完成一份区块单价与池OHLC的可比性记录,以及已有页覆盖和未确认项。
- 全部为文档核验流程,未请求价格API、未测量CU消费或实际延迟。
常见错误与边界
- 1M与1min是不同timeframe标识,参数保持当前方法页原样。
- OHLC示例里page类型/示例及部分tokenAddress字段不能替代实际结构校验,更不能证明地址是代币或pair。