挖掘央行资产负债表数据,描绘全球流动性全貌·综合运用
🌐

挖掘央行资产负债表数据,描绘全球流动性全貌·综合运用

(3/3)·从原始资产负债表到 MT5 实盘,搭建一套跨市场流动性推导系统

含代码示例偏理论 第 3/3 篇
很多交易者盯着 K 线找转折,却忽略了背后那只看不见的手——四大央行的资产负债表每周都在重写货币对的底层逻辑。把流动性数据接进终端,你看到的就不是孤立的烛台,而是一张实时流动的资本地图。

把行情和流动性喂给 MT5 做信号

实盘衔接的核心,是让预测模块直接吃 MT5 的行情,而不是离线 CSV。系统初始化时调一次 mt5.initialize(),之后每日级 K 线通过 copy_rates_from 拉取,输入特征同时混了技术指标和流动性指标,构成一套偏短期的预测集。 下面这段 Python 封装值得直接抄进你的策略工程里看逻辑: import MetaTrader5 as mt5 from datetime import datetime, timedelta class TradingIntegration: def __init__(self, forecaster: ForexLiquidityForecaster): self.forecaster = forecaster mt5.initialize() def fetch_forex_data(self, symbol: str, days: int = 1460) -> pd.DataFrame: """Fetching data from MetaTrader 5.""" utc_from = datetime.now() - timedelta(days=days) rates = mt5.copy_rates_from(symbol, mt5.TIMEFRAME_D1, utc_from, days) if rates is None: return pd.DataFrame() df = pd.DataFrame(rates) df['date'] = pd.to_datetime(df['time'], unit='s') df.set_index('date', inplace=True) return df def generate_trading_signals(self, symbol: str, forecasts: dict) -> dict: """Generating trading signals.""" signals = {} short_term_returns = [f['return'] for h, f in forecasts['forecasts'].items() if h in ['1d', '2d', '3d']] avg_return = np.mean(short_term_returns) if short_term_returns else 0 signals['short_term'] = { 'signal': 'BUY' if avg_return > 0.005 else 'SELL' if avg_return < -0.005 else 'HOLD', 'strength': min(abs(avg_return) * 100, 100) } return signals 逐行拆一下关键点:__init__ 里把预测器存好并初始化 MT5 终端连接;fetch_forex_data 默认回溯 1460 天(约 4 个自然年)的 D1 数据,若终端没返回就丢空表;generate_trading_signals 只取 1d/2d/3d 三档短期预期收益做平均,阈值卡在 ±0.005(即 ±0.5%)决定 BUY/SELL/HOLD,强度按绝对收益乘 100 封顶 100。 外汇和贵金属杠杆高、滑点随机,这套信号只是概率倾向,真要上 MT5 验证,先把 days 改成 300 跑小样本,看信号频率和你的风控是否撞车。

MQL5 / C++
class="kw">import MetaTrader5 as mt5
from class="type">class="kw">datetime class="kw">import class="type">class="kw">datetime, timedelta
class TradingIntegration:
    def __init__(self, forecaster: ForexLiquidityForecaster):
        self.forecaster = forecaster
        mt5.initialize()
    
    def fetch_forex_data(self, symbol: str, days: class="type">int = class="num">1460) -> pd.DataFrame:
        """Fetching data from MetaTrader class="num">5."""
        utc_from = class="type">class="kw">datetime.now() - timedelta(days=days)
        rates = mt5.copy_rates_from(symbol, mt5.TIMEFRAME_D1, utc_from, days)
        
        if rates is None:
            class="kw">return pd.DataFrame()
        
        df = pd.DataFrame(rates)
        df[&class="macro">#x27;date&class="macro">#x27;] = pd.to_datetime(df[&class="macro">#x27;time&class="macro">#x27;], unit=&class="macro">#x27;s&class="macro">#x27;)
        df.set_index(&class="macro">#x27;date&class="macro">#x27;, inplace=True)
        class="kw">return df
    
    def generate_trading_signals(self, symbol: str, forecasts: dict) -> dict:
        """Generating trading signals."""
        signals = {}
        short_term_returns = [f[&class="macro">#x27;class="kw">return&class="macro">#x27;] for h, f in forecasts[&class="macro">#x27;forecasts&class="macro">#x27;].items() if h in [&class="macro">#x27;1d&class="macro">#x27;, &class="macro">#x27;2d&class="macro">#x27;, &class="macro">#x27;3d&class="macro">#x27;]]
        avg_return = np.mean(short_term_returns) if short_term_returns else class="num">0
        
        signals[&class="macro">#x27;short_term&class="macro">#x27;] = {
            &class="macro">#x27;signal&class="macro">#x27;: &class="macro">#x27;BUY&class="macro">#x27; if avg_return > class="num">0.005 else &class="macro">#x27;SELL&class="macro">#x27; if avg_return < -class="num">0.005 else &class="macro">#x27;HOLD&class="macro">#x27;,
            &class="macro">#x27;strength&class="macro">#x27;: min(abs(avg_return) * class="num">100, class="num">100)
        }
        
        class="kw">return signals

「把流动性和价格联动画成一张图」

做全球盘面的流动性分析,最怕只盯着数字表格。把价格预测曲线、流动性指数走势和特征重要性排在一起,肉眼就能看出哪段行情是流动性推出来的,哪段只是噪声。 上面这段 Python 函数给出了一个可直接跑的可视化骨架:取某品种近 180 天历史,只画最后 60 根收盘线,再把模型输出的预测日期和价格用红色虚线接在后面。图存成 300dpi 的 PNG, MT5 里虽不能直接跑 Python,但你可以把同一组历史导出到本地用这套脚本复刻。 外汇和贵金属杠杆高、跳空频繁,预测曲线只代表模型在已知流动性下的倾向,实盘仍可能偏离。建议每次切换品种时重跑一遍,观察特征重要性排序是否发生明显漂移。

MQL5 / C++
class="kw">import matplotlib.pyplot as plt
class="kw">import numpy as np
def create_comprehensive_visualization(self, symbol: str):
    """Building a set of visualizations."""
    forecasts = self.forecaster.forecasts.get(symbol, {})
    historical_data = self.fetch_forex_data(symbol, days=class="num">180)
    
    plt.figure(figsize=(class="num">15, class="num">8))
    plt.plot(historical_data.index[-class="num">60:], historical_data[&class="macro">#x27;close&class="macro">#x27;].iloc[-class="num">60:], label=&class="macro">#x27;Historical prices&class="macro">#x27;, linewidth=class="num">2)
    
    forecast_dates = [class="type">class="kw">datetime.strptime(f[&class="macro">#x27;date&class="macro">#x27;], &class="macro">#x27;%Y-%m-%d&class="macro">#x27;) for f in forecasts.get(&class="macro">#x27;forecasts&class="macro">#x27;, {}).values()]
    forecast_prices = [f[&class="macro">#x27;price&class="macro">#x27;] for f in forecasts.get(&class="macro">#x27;forecasts&class="macro">#x27;, {}).values()]
    
    if forecast_dates:
        plt.plot(forecast_dates, forecast_prices, &class="macro">#x27;r--&class="macro">#x27;, label=&class="macro">#x27;Forecast&class="macro">#x27;, linewidth=class="num">2)
    
    plt.title(f&class="macro">#x27;{symbol}: Price forecast considering liquidity&class="macro">#x27;, fontsize=class="num">14, fontweight=&class="macro">#x27;bold&class="macro">#x27;)
    plt.xlabel(&class="macro">#x27;Date&class="macro">#x27;, fontsize=class="num">12)
    plt.ylabel(&class="macro">#x27;Price&class="macro">#x27;, fontsize=class="num">12)
    plt.legend()
    plt.grid(True, alpha=class="num">0.3)
    plt.savefig(f&class="macro">#x27;forecast_{symbol}.png&class="macro">#x27;, dpi=class="num">300)
    plt.close()

◍ 最后一句大实话

把央行资产负债表、机器学习和技术分析揉进一个框架,确实能帮有经验的交易者在 MT5 里把全球流动性变成可执行的信号,而不是盯着裸 K 拍脑袋。 但得泼盆冷水:人民银行这类数据源公开有限,只能拿替代指标凑,测算精度天生有缺口;机器学习也不是算命,地缘冲突这种黑天鹅一来,预测大概率失灵。 后续接神经网络啃新闻和社媒、加自适应权重,方向是对的,可外汇和贵金属本身就是高杠杆高风险场子,再聪明的系统也只是提高概率,亏钱永远可能发生。 真要上手,先跑一遍作者放出的 FREED_Predict.py(27.15 KB)回测,别光看结论就冲实盘。

把多央行数据拉取交给小布
这些诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到全球流动性综合指标的边际变化,你只需要在扩表斜率异常时做决策。

常见问题

可通过 MQL5 的 WebRequest 调用公开数据接口,用结构体缓存序列,文中给出了 CSV 与 JSON 两种解析示例。
多国货币同步贬值抵消了单边供需压力,汇率差异主要由相对扩表速度决定,绝对量不再单独驱动行情。
对 EURUSD、USDJPY 及贵金属这类受宏观资本流主导的品种倾向更有效,短线噪音仍建议结合价格行为过滤。
可以,小布盯盘的品种页已聚合主要央行扩表增速差,并标注历史分位,省去自己写爬取脚本的重复劳动。
文中用热力矩阵展示各央行边际变化,配合 MT5 子窗口叠加,能直观看出流动性收敛与发散区间。