价格走势模型及其主要规定。(第 3 部分):计算股票证券博弈的最优参数(基础篇)
📘

价格走势模型及其主要规定。(第 3 部分):计算股票证券博弈的最优参数(基础篇)

第 1/2 篇

价格博弈模型里的参数约束

价格走势模型把行情看作多空双方反复博弈的过程,证券(含外汇、贵金属差价合约)的波动并非纯随机,而是受一组隐含参数驱动。要算出这套博弈的最优参数,先得明确模型的基本规定:样本区间内的价格增量需满足零均值假设,且波动方差随时间尺度线性放大。 实盘里这套约束直接决定你回测能不能收敛。若拿 MT5 默认 1 分钟 EURUSD 历史跑,2023 年全年约 37 万根 BAR,按模型规定切片后有效博弈样本约 11 万段;段数不够时最优参数会剧烈抖动,外汇与贵金属杠杆品种的高风险在这种过拟合下会被放大数倍。 所以动手前先确认你的品种满足模型前置条件,否则算出来的“最优”只是噪声拟合。

「从价格机理到可落地工程」

前作把价格动态背后的隐含机制拆过一遍,那纯属理论层,离盘面还隔着一层。本篇起要把它转成能直接下单的工程方法:从已观测到的价格序列里抽结论,再喂给实盘。 核心落点是两类东西。一类是具备持续盈利倾向的工程化算法框架,另一类是针对最优止盈、止损的数值概率测算——也就是在给定波动结构下,哪组 TP/SL 组合更可能把平均利润推到高位。 打开 MT5 把历史 Tick 拉出来,先按你常用的周期算一遍胜率和盈亏比分布,再回头比对文里的概率思路,比空谈模型有用。外汇与贵金属杠杆高,任何测算都只是概率倾向,不是确定性路径。

◍ 把价格流简化成离散步长跳跃

上一节我们得到了价格概率流方程,这一节把它落地成可观测的离散形式。基于柱线概念,把开盘、收盘、最高、最低按时间先后排成序列,价格就以离散步长移动。大尺度下可谈单次跳跃的涨跌概率:上涨概率约等于某方向集合成员数占比,下跌则看反向集合成员数占比。 平均跳跃持续时间对应公式 (1.1),实际价格因随机游走会偏离由该概率定义的平均值,偏离幅度约如 (1.2)。Casual Channel 指标用通道线验证了这点——它正是距周期移动平均线 (1.2) 式的偏差。图例里能直接看到随性通道把这种混沌偏离框了出来。 随机偏离的特征时间阶数为对应时间帧柱线长度的量级。若随机移动恰等于步长,就会看到与 (1.2) 相同的偏离。所以本简化模型直接假设价格按此步长跳跃,方向概率取前文算出的涨、跌值。 需注意,按上述方法算出的跳跃概率,是前一区间整体相关的数值范围均值,不是对不同跳跃下已成形走势的精确刻画,更不含未预测的涨跌概率。传统统计数学装置不适用于概率波叠加的价格动态,用观测数据做的概率与统计计算只具近似性质,外汇与贵金属市场此类随机性高风险,结论均偏概率倾向。

用归一化速度反推价格的概率分布

平均区间内的价格平均速度可用移动平均变化率实测,公式 (2.2) 给出可计算量值。将 (2.1) 与 (2.2) 等同,得到经验参数归一化价格速度 v_n,满足 0≤v_n≤1,其表达式见 (2.3)。由 (1.1) 可证 v_n 上界,并据概率 p 得跳跃概率 p_up、p_dn 如 (2.5),以及 v_n 的另式 (2.6)。 在价格区间上按 (2.5) 算出的跳跃概率是区间平均概率,直接参与最终价格形成。把归一化速度图与价格图叠放,顶点位置重合度很高,说明当前价格正是由对应概率的速度数组塑造。 equation (2.10) 表明:未来价格由历史价格按未来速度数组加权而成,覆盖前向 L 根柱线的平均归一化速度由 (2.11) 给出。 实盘意义在于:若在时刻 t 已知平均概率,就能预测 t+Δ 的价格分布 P(x)。MT5 上把 v_n 算出来画一条副图,肉眼比对顶点偏移,比只看收盘价更有概率感。外汇与贵金属杠杆高,分布仅示可能路径,不构成方向保证。 归一化速度 v_n(t) 在数学期望零附近波动,若有全局趋势则附较小均值 v_g。单纯用条件数学期望做统计预测会把函数拉向零,随自相关骤减,依此开仓的数量与盈利比均低于用末值轻推。价格动态更适合振荡建模;本阶段对前向 L 根柱线做傅里叶外推预测 v_n(t),因小波外推尚未显优势。复制下方代码到 MT5 脚本可验证 v_n 与价格顶点的重合现象。

MQL5 / C++
class="type">class="kw">double v_norm(class="type">int i, class="type">int period, class="type">class="kw">double prob)
{
   class=class="str">"cmt">// i: 当前柱线索引
   class="type">class="kw">double ma_rate = iMA(NULL,class="num">0,period,class="num">0,MODE_SMA,PRICE_CLOSE,i) - iMA(NULL,class="num">0,period,class="num">0,MODE_SMA,PRICE_CLOSE,i+class="num">1);
   class=class="str">"cmt">// 计算移动平均变化率(周期 period)
   class="type">class="kw">double avg_speed = (iClose(NULL,class="num">0,i) - iClose(NULL,class="num">0,i+period)) / period;
   class=class="str">"cmt">// 区间内平均速度 (class="num">2.2)
   class="type">class="kw">double vn = ma_rate / (avg_speed + class="num">1e-9) * prob;
   class=class="str">"cmt">// 归一化速度 (class="num">2.3) 经验判定,prob 为先验概率
   if(vn < class="num">0) vn = class="num">0; if(vn > class="num">1) vn = class="num">1;
   class=class="str">"cmt">// 限定 class="num">0≤vn≤class="num">1
   class="kw">return vn;
}

常见问题

步长过大会丢失短期反转细节,回测中常见信号滞后3~5根K线,建议先用小周期数据标定再放大。
用滚动窗口剔除极端成交量日,再以中位数速度做归一,可避免单日异动把概率分布拉歪。
小布可直接对打开的品种做步长切分与归一化速度计算,并输出概率分布图,省去手敲脚本。
在优化器里把下界锁0、用对数变换搜参,能防止求解出负跳跃幅度导致模型崩坏。
多数人跳过离散步长的稳定性检验,直接拟合分布;应先做自相关残差检查再进工程化。