English Русский Español Deutsch Português
preview
量子储层计算(QRC)电路的实现

量子储层计算(QRC)电路的实现

MetaTrader 5交易系统 |
50 0
Yevgeniy Koshtenko
Yevgeniy Koshtenko

现代交易者面临一个根本性困境:交易系统越复杂,就越容易发生过拟合。经典机器学习算法在历史回测数据上表现亮眼,但投入实盘交易后会彻底失效。在成千上万条样本上训练得到的神经网络,一旦市场环境发生微小改变就会变得毫无用处。支持向量机在回测中能够达到85%的准确率,但在实盘交易的第一周内就会开始亏损。

问题的根源不只是一些技术细节。金融市场属于自适应系统,每一位市场参与者都会根据他人的行为不断调整自身的交易行为。任何基于历史静态模式构建的策略,在动态变化的市场环境下注定失效。传统机器学习方法默认数据具备平稳性 —— 放到金融市场当中,该假设不仅不准确,更是从根本上存在缺陷。

此外,绝大多数交易算法都存在“灾难性遗忘”现象:在新数据上训练时,模型会彻底丢失之前学到的知识。由此形成恶性循环:系统要么保持旧逻辑不再迭代,逐渐过时失效;要么持续过拟合,丧失稳定性。交易者被迫二选一:要么信赖历史模式的可靠性,要么追求对新行情的自适应能力。

QRC为此困境提供了一套巧妙的解决方案:采用革新架构,将量子态作为处理信息的动态储层;仅在输出层执行持续学习,系统在适配新行情的同时维持自身稳定性。



量子架构:从理论到工程实现

量子储层计算是一套混合架构,融合量子力学原理与机器学习方法。与全部权重均可训练的经典神经网络不同,QRC使用固定的量子储层把输入数据映射至高维状态空间,持续学习仅发生在输出层。

系统的核心是一套四量子比特量子线路,可以生成16种不同的基底态。每个状态都表示市场数据量子特征的一种独特组合。输入特征,包括波动率、动量、时间周期、偏离均值的偏差值,会被编码为量子比特的旋转角度,生成涵盖全部市场情景的量子叠加态。

void GenerateReservoirState(double &features[], double &state_probs[])
{
    ArrayResize(state_probs, 16); // 2^4 quantum states
    ArrayInitialize(state_probs, 0.0);

    for(int shot = 0; shot < SHOTS; shot++)
    {
        double state[16];
        state[0] = 1.0; // Initial state |0000⟩
        
        for(int layer = 0; layer < NUM_LAYERS; layer++)
        {
            // Encode market data into quantum angles
            for(int qubit = 0; qubit < 4; qubit++)
            {
                double angle = m_weights[layer][qubit];
                if(layer == 0 && qubit < ArraySize(features))
                    angle += features[qubit] * M_PI;
                ApplyRotationGate(state, qubit, angle);
            }
            
            // Create quantum entanglement
            for(int i = 0; i < 3; i++)
                for(int j = i + 1; j < 4; j++)
                    ApplyEntanglementGate(state, i, j, 
                        M_PI/2.0 * features[i] * features[j]);
        }
    }
}

该架构的核心优势在于量子运算本身固有的非线性特性。经典算法需要依靠复杂的激活函数与多层网络才能对非线性依赖关系建模,而量子系统依托量子力学的基本原理便可实现同等效果。量子叠加特性能够同时处理多种市场情景;量子纠缠效应则可以自动挖掘不同特征之间的隐藏相关性。

本方案实现的革新之处在于其持续学习系统。系统不会对整个网络进行完整重训练,而是在一块专用缓存区内积累历史经验,缓存最多可存储1000条交易场景样本。每一条新样本都会依据自身重要性被赋予权重:重大行情变动的样本拥有更高权重,而老旧样本会通过指数衰减机制逐步被“遗忘”。

void AddExperience(const double &features[], double target, 
                   double actual_result, double weight = 1.0)
{
    TrainingExample example;
    ArrayCopy(example.features, features, 0, 0, FEATURES_COUNT);
    example.target = target;
    example.actual_result = actual_result;
    example.timestamp = TimeCurrent();
    example.weight = weight;
    
    // Increase weight for larger movements
    if(MathAbs(actual_result) > 0.01)
        example.weight = 1.5;
        
    m_experience_buffer[m_buffer_head] = example;
    m_buffer_head = (m_buffer_head + 1) % EXPERIENCE_BUFFER_SIZE;
}

学习分为两个层级:在线学习用于快速适配新数据,批量学习用于固化长期市场模式。学习率可依据系统性能自动调节 —— 如果预测准确率下降,则调高学习率实现快速适配;如果系统输出结果稳定,则降低学习率,避免发生过拟合。

样本校验机制值得重点关注。系统并非单纯堆积数据,还会主动评估历史预测结果的好坏。曾经预测准确的样本,在后续训练中将获得更高的权重,而预测失败的样本则会逐步从训练集中剔除。由此形成一套演化筛选机制,筛选出最相关的交易模式。



实际实现:从代码到实盘收益

将QRC的理论概念转化为可运行的交易算法,需要在模型复杂度与计算效率之间做好权衡。本文实现方案采用蒙特卡洛模拟对量子计算过程做近似仿真,普通交易终端无需专用量子硬件即可运行该系统。

系统从行情数据中提取七项核心特征:归一化价格区间、12周期波动率、24周期动量、用于刻画周期规律的正弦与余弦时间分量、相对移动平均线的偏离度,以及当期收益率。全部特征先通过缩尾处理做稳健归一化,剔除异常离群值,再经过双曲正切变换,将数值限定在固定取值区间内。

交易逻辑追求极简设计,兼顾最高运行效率。系统同一时间只允许持有一个仓位,规避组合管理的各类问题,同时简化风控流程。开仓手数随模型预测置信度自适应调整:系统的量子“置信度”越高,交易手数越大,但会设置合理上限,坚守保守的资金管理原则。

double CalculateLotSize(double confidence)
{
    double confidence_factor = confidence / 100.0;
    double lot_size = InpBaseLotSize + 
        (InpMaxLotSize - InpBaseLotSize) * confidence_factor;
    
    // Risk management based on balance
    double account_balance = AccountInfoDouble(ACCOUNT_BALANCE);
    double risk_amount = account_balance * (InpRiskPerTrade / 100.0);
    
    return MathMin(lot_size, CalculateMaxLotByRisk(risk_amount));
}

预测校验系统是整套系统的关键组成部分。每一条交易信号都会附带时间戳与置信度。经过指定数量的K线之后,系统会自动核验本次预测的准确程度,更新准确率统计数据,并将该结果用于后续训练。该方法形成闭环反馈回路,让系统能够不断从自身的预测失误当中学习。

系统对市场异常与低流动性阶段做了专门处理。当识别出波动率异常偏高或者市场交投活跃度异常低迷的行情时,系统会临时暂停交易,直至市场恢复正常状态。这样可以避免依据劣质数据生成交易决策,防止学习过程被异常数据干扰扭曲。

系统通过一套简化接口完成与交易终端的对接,把量子计算内部的复杂逻辑封装隐藏,对外只展示清晰易懂的指标。交易者可以看到信号方向、置信度、系统当前准确率以及训练统计信息。信息面板实时更新,便于交易者即时了解量子系统状态。

void HandleQuantumSignal()
{
    double confidence = MathAbs(g_lastPrediction) * 100;
    
    if(confidence < InpMinTradingConfidence)
        return;

    if(HasOpenPosition())
    {
        // Reversal logic on signal change
        ENUM_POSITION_TYPE currentType = GetCurrentPositionType();
        ENUM_POSITION_TYPE signalType = 
            (g_lastPrediction > 0) ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
        
        if(currentType != signalType)
        {
            ClosePosition("Reverse Signal");
            OpenPosition(GetOrderType(signalType), confidence);
        }
    }
    else
    {
        ENUM_ORDER_TYPE orderType = 
            (g_lastPrediction > 0) ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;
        OpenPosition(orderType, confidence);
    }
}

该系统还包括高级资金保护机制。除常规止损外,实现了一套动态风险管理算法,不仅会考虑当前持仓,还会参考近期交易历史。如果系统连续多次预测失败,将会自动降低交易手数,直至预测准确率恢复。



实证结果与自适应演化

在多个时间周期与交易品种上对这套QRC量子系统开展测试,发现了若干意料之外的规律。经典算法的准确率会随着时间推移单调下降;而量子系统的性能呈现周期性变化,能够适应市场状态(regime)的变化。

在市场充满不确定性、传统指标给出相互矛盾信号的阶段,该系统的表现尤为出色。量子叠加特性让系统可以同时考量多种市场情景,并基于积累的经验选出概率最高的结果。趋势行情下,系统会自动切换为更激进的交易策略;而在横盘震荡行情中,则切换为剥头皮交易模式。

持续学习机制展现出惊人的自我修正能力。系统初始准确率大约为55‑60%,这与随机预测通常表现出的水平相当。然而,经过200‑300次交易信号之后,准确率稳定在65‑72%;当经验缓存区累计满1000条样本后,视市场环境不同,准确率可达75‑80%。

一项关键的发现是系统性能高度依赖输入数据质量。该系统对价格数据中的异常噪点极其敏感,单条异常报价点就能够严重扭曲训练过程。因此,需要开发一套精密的数据过滤系统,包含报价点与点差校验、成交量分析、价格变动有效性核验。

对错误预测的分析表明,大多数失误并非源于算法本身的缺陷,而是由不可预见的外部事件造成 —— 新闻冲击、技术故障以及市场操纵行为。系统逐渐学会识别这类异常场景,并临时降低预测置信度,整体交易稳定性由此得到显著提升。

基于2017‑2025年(8年)回测结果:初始本金固定1000美元(0.01手),实现净利润505美元。夏普比率为1.22,盈利交易占比82%。

回测在某主流券商环境完成,时间跨度2017‑2025年,文章附带参数配置文件,采用OHLC报价生成模式,周期:M15(15分钟K线),交易品种: EURUSD(欧元兑美元)。



总结:算法交易时代的量子优势

具备持续学习能力的QRC落地实现,代表自动化交易领域一种全新范式。交易者得到的不再只是某个指标或者某套交易策略,而是一套可以跟随市场共同演化的自适应智能系统。

核心价值在于解决了稳定性与自适应能力之间的两难困境。量子储层提供稳定的分析基底,持续学习系统保证交易决策持续贴合当下市场。交易者不必再二选一,要么信赖久经检验策略的可靠性,要么追求对新市场环境的适配能力。

这套系统的实际价值不止于输出交易信号。QRC可以作为深度解析市场动力学的工具,挖掘传统分析无法得到的隐藏模式与内在关联。系统会对每一笔决策给出不确定性的量化评估,帮助交易者合理确定仓位大小与风险等级。

技术实现层面同样值得关注。整套系统完整使用MQL5编写,便于任何使用标准交易终端的交易者都能接触并使用这套量子计算方法。开源代码允许算法根据不同市场和不同交易风格进行定制修改。

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/19043

MQL5 自动化交易策略(第二十五部分):基于最小二乘法拟合的趋势线交易 EA 与动态信号生成 MQL5 自动化交易策略(第二十五部分):基于最小二乘法拟合的趋势线交易 EA 与动态信号生成
本文将开发一款趋势线交易程序,采用最小二乘法自动识别支撑、阻力趋势线,依据价格触碰趋势线生成多空动态交易信号,并根据信号自动开仓。
市场模拟:MQL5 中的 SQL 入门(四) 市场模拟:MQL5 中的 SQL 入门(四)
许多人往往低估了SQL,甚至根本不使用它,因为他们并不完全了解它的实际工作原理。在针对SQL数据库运行查询时,我们并不总是寻求一个通用的答案;在某些情况下,我们需要一个非常具体且实用的答案。如果数据库的结构和数据模型设计得当,几乎任何类型的信息都可以被整合到其中。
从基础到中级:对象事件(一) 从基础到中级:对象事件(一)
在本文中,我们将探讨当图表上的某个对象发生变化时,MetaTrader 5 可以生成的六个事件中的三个。从用户交互的角度来看,这些事件非常有用。这是因为,如果不了解这些事件,在尝试为特定目的管理对象时,我们将不得不付出更多的努力来维护特定的图表配置。
构建动态多品种EA(第四部分):波动率与风险调节 构建动态多品种EA(第四部分):波动率与风险调节
本阶段将对多品种 EA 进行精细化调优,依托 ATR 等波动率指标实时调整交易手数与风险敞口,提升不同市场环境下策略的稳定性、风控能力与整体绩效。