价格行为分析工具包开发(第二十部分):外部资金流(4)相关性路径探索器·综合运用
EURUSD 十五分钟收盘序列的微观跳动
下面这组 EURUSD 十五分钟 K 线的收盘价,覆盖了 2025.04.03 16:30 到 2025.04.04 01:15 共 33 根 bar。从 1.10404 一路探到 1.10164(19:30),再拉回 1.10642(22:45),尾段在 1.10403–1.10610 之间窄幅来回。 把 19:00–20:00 这整点内的八根收盘拎出来看:1.10320 → 1.10164 → 1.10275 → 1.10253 → 1.10312 → 1.10448 → 1.10514 → 1.10488,单小时振幅约 38 点,下影探底后收复大半。这种先破后立的十五分钟节奏,在欧盘尾、美盘初的流动性切换段容易出现。 直接在 MT5 的 EURUSD H15 图表上调出 2025.04.03 那根日线,用十字光标逐根核对上面序列,能确认自己拿到的报价源和这套样本是否一致。外汇和贵金属杠杆高,十五分钟级别的反抽不代表趋势反转,仅作微观结构观察。
「EURUSD 15分钟收盘序列里的日内拐点」
下面这组 EURUSD 在 2025.04.03 亚洲至欧洲时段的 15 分钟收盘价,是从 07:30 的 1.09658 一路推到 14:30 的 1.11197,再回落到 16:15 的 1.10367。 单看序列,07:30–14:30 这七小时拉了约 154 点,14:30 见高后两小时内回吐近 80 点,这种「慢涨急回」在欧系货币对里往往对应伦敦定盘前后的流动性切换。 把 14:15 的 1.10950 与 14:30 的 1.11197 摆一起,会发现冲高那根的上影相对短,但下一根 14:45 直接收在 1.11182——说明当时买盘还没撤,真正的转弱是从 15:00 的 1.10922 跳空低开式收盘开始的。 外汇和贵金属这类高杠杆品种,单凭 15 分钟收盘序列不能断定趋势反转,但把它当「价格行为温度计」够用了:开 MT5 调出同期 EURUSD 的 M15,对照定盘时间圈出类似急回段,概率上更值得等确认而非追。
◍ EURUSD 15分钟收盘序列里的夜盘异动
下面这组 EURUSD 的 15 分钟收盘价,覆盖 2025.04.02 22:30 到 2025.04.03 07:15(GMT 近似),是直接抓自 MT5 历史中心的裸数据,没做任何平滑。 从 2025.04.02 22:30 的 1.08277,到 23:00 的 1.08552,再到 04.03 00:15 的 1.08831,价格沿 15 分钟级别连续抬了约 55 点;但 04.03 05:00 探到 1.09171 后,06:15 又回踩 1.09488 附近,节奏明显从单边变成震荡。 把这批数据贴进 MT5 的 CSV 回看,或写个脚本来算每段 15 分钟涨跌方差,你会看到 22:30–00:15 这段的方差显著小于凌晨盘——外汇 15 分钟级别在亚洲早盘前常有流动性断层,EURUSD 这类主流对也免不了假突破,杠杆交易高风险,别光看斜率就追。 真要验证,开 MT5 调出同期 EURUSD M15,把光标从 22:30 拖到 07:15,比对上面数字;差 1 个点都可能是点差或报价源偏移,值得记一笔。
回测日志里的相关性镜像
从 MT5 专家日志抓出来的这段原始回报,能看到 2025.04.02 当晚 EURUSD 的 M15 收盘价在 1.08156 到 1.08507 之间反复穿插,22:15 收在 1.08221,而 20:45 才是那根 1.08507 的高收。这种 30 分钟内来回 35 点以上的折返,是做滚动相关性前必须先剔除噪声的标本。 隔了几天跑 Correlation Pathfinder,GBPUSD 与 EURUSD 在 M15 上的全周期相关仅 0.37,但最近滚动窗口冲到 0.82;EURUSD 自身对照组全周期 0.34、滚动 0.83。服务端返回 commentary 直接点明:近期近乎镜像 movement,原本用于分散敞口的相对强弱思路可能得重估。 外汇与贵金属杠杆品种高风险,0.8 以上的短时相关不代表明天还粘在一起。开 MT5 把这段日志里的时点拉成折线,再叠加你自己的滚动相关 EA,验证一下 0.82 是不是只在美盘重叠段出现。
{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">22:class="num">15:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08221</span>},{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">22:class="num">00:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08161</span>},
{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">21:class="num">45:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08274</span>},{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">21:class="num">30:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08286</span>},
{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">21:class="num">15:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08156</span>},{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">21:class="num">00:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08350</span>},
{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">20:class="num">45:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08507</span>},{<span class="class="type">class="kw">string">"time"</span>:<span class="class="type">class="kw">string">"class="num">2025.04.class="num">02 class="num">20:class="num">30:class="num">00"</span>,<span class="class="type">class="kw">string">"close"</span>:<span class="number">class="num">1.08184</span>},
INFO:werkzeug:<span class="number">class="num">127.0</span><span class="number">.class="num">0</span><span class="number">.class="num">1</span> - - [<span class="number">class="num">09</span>/Apr/<span class="number">class="num">2025</span> <span class="number">class="num">09</span>:<span class="number">class="num">04</span>:<span class="number">class="num">18</span>] <span class="class="type">class="kw">string">"POST /analyze HTTP/class="num">1.1"</span> <span class="number">class="num">200</span> -
<span class="number">class="num">2025.04</span><span class="number">.class="num">09</span> <span class="number">class="num">00</span>:<span class="number">class="num">57</span>:<span class="number">class="num">33.296</span> Correlation Pathfinder(GBPUSD,M15) Server response:
{<span class="class="type">class="kw">string">"commentary"</span>:<span class="class="type">class="kw">string">"The overall correlation is weakly positive, suggesting occasional movement together but
limited consistency, which may offer diversification opportunities.\nRecently, the rolling correlation is at
class="num">0.82. This high correlation suggests near mirror-like movement. Relative strength approaches may need
reconsideration for diversification."</span>,<span class="class="type">class="kw">string">"correlation"</span>:<span class="number">class="num">0.3697032305325312</span>,<span class="class="type">class="kw">string">"message"</span>:<span class="class="type">class="kw">string">"Plot saved as rolling_
correlation.png"</span>}
<span class="number">class="num">2025.04</span><span class="number">.class="num">09</span> <span class="number">class="num">00</span>:
class="num">57 :class="num">33<span class="number">.class="num">296</span> Correlation Pathfinder(EURUSD,M15) Server response:
{<span class="class="type">class="kw">string">"commentary"</span>:<span class="class="type">class="kw">string">"The overall correlation is weakly positive, suggesting occasional movement together but
limited consistency, which may offer diversification opportunities.\nRecently, the rolling correlation is at
class="num">0.83. This high correlation suggests near mirror-like movement. Relative strength approaches may need
reconsideration for diversification."</span>,<span class="class="type">class="kw">string">"correlation"</span>:<span class="number">class="num">0.33874205977082567</span>,<span class="class="type">class="kw">string">"message"</span>:<span class="class="type">class="kw">string">"Plot saved as
rolling_correlation.png"</span>}「把这条线请下神坛」
整套流程从 MT5 抓取报价开始,经 JSON 打包推到 Python 服务端,用 Pandas 做解析、Matplotlib 出图,再回写解释性评论,节点 A 到 H 串起了数据进出两端。把它当全自动圣杯就错了——外汇与贵金属杠杆高,任何信号在实盘都只是概率倾斜。 工具清单里 20 个组件跨度从 01/10/24 的图表重影脚本到 10/04/25 的货币相关性绘图,版本号大多停在 1.0,说明多数只是单次验证原型而非长期实盘模块。 真要落地,挑「波动率导航仪」或「均值回归信号收割器」这种带明确指标逻辑的 EA,丢进策略测试器跑一轮,比追新工具更实在。