价格速度测量方法(基础篇)
「价格速度到底怎么量」
很多 MT5 用户盯着报价跳动,却说不清「这一段行情跑得多快」。价格速度不是肉眼估出来的,得用可复现的公式在终端里算出来。 Alexander Fedosov 在 2019 年 7 月 17 日发布的示例里,用 MQL5 把这个问题拆成了可测量的模块,原文被查看 7 873 次、收藏 12 次,说明刚需不小。 最朴素的做法是取相邻两根 K 线的收盘价差,再除以它们之间相隔的小时数,得到单位时间内的价格位移。外汇与贵金属杠杆高、滑点随机,这种速度值只反映历史片段,不能外推成确定性方向。
技术面与基本面到底差在哪
做价格行为的人大多绕不开两条路:技术分析和基础分析。技术线盯的是价格、成交量这类硬数字,基础线盯的是新闻和事件怎么撬动盘面。 基础数据的麻烦在于,同一个非农或利率决议,十个人能读出十种影响——你的仓位其实夹带了主观预期。技术数据相对干净,一根K线摆在那不会自己改口。 但别以为技术面就纯客观。画趋势线、定突破阈值、选周期,这些环节照样是人拍板,人为偏差只是换了个藏身处。外汇和贵金属杠杆高,任何分析路径都只是概率倾斜,不是免死金牌。
◍ 为什么肉眼读图会骗你
做技术分析不只在用数学,物理里的“速度”概念也能直接搬进图表:单位时间内的价格位移就是行情速率。打开 MT5 看 EURUSD 的 5 分钟图,重大数据发布前后那 10~15 分钟里,K 线拉伸长度往往是平时均值的 3 倍以上,这就是高波动期速率突变的直观证据。 靠眼睛判断快还是慢,人人都能比划两下,但认知偏差会让结论完全不一样。生活里有个现成反例:小型车和大卡车同速经过,视觉上小车显得更慢、卡车显得更快,因为参照体积干扰了判断。 市场里没有“速率表”之前,这种主观估速就是交易者的盲区。给价格装个客观数字刻度,才有可能把“觉得快”变成“每秒跳了几个点”。
「把价格速度拆到分钟级才有用」
物理上速度是位置随时间的变化率,带方向和大小。挪到外汇里,最直白的替代是:把‘物体’换成价格,把‘参照系’换成某根 K 线的时间跨度。比如 H1 一根蜡烛,平均速度 = (收盘价 - 开盘价) / 小时数,得到的是这一小时内每小时走了多少点。 但这种算法只给了一个最终结果,看不见蜡烛内部的加速减速。把 H1 拆成更低周期就好得多:同样一根 EURUSD 的 H1 蜡烛,整体平均速度是每分钟 2.53 点;切到 M15 看,前 15 分钟平均速度为每分钟 6.93 点,之后明显放缓,四个 M15 段加总仍回到 2.53 点/分钟。拆得越细,动力学信息越多。 另一类是即时价格速度,取 M1 内当前价跳动速率,数据永远最新但噪声极大,直接拿来做交易决策很难用。 现成指标里,Momentum 衡量一段周期的价格变化量,读数偏离越大代表该方向速度越高;ADX 本质上输出的是趋势平均速度,数值高意味着当前趋势的平均速度强。外汇与贵金属杠杆高、滑点突现,速度读数只作概率参考,不构成方向保证。
三类速度测量如何落进EA参数
把价格-速度的测量变成可交易的策略,本质上只有三条路:直接算单位时间内的点数比率、用点数除以分时数得到速度、或者借趋势类指标做间接估算。每条路都需要一个过滤器来剔除无方向噪音,否则速度指标本身不区分涨跌。 第一条路用平均速度指标抓「单位时间点数」,但它在横盘和反向波动里都会报数。原文用协调的ADX与MACD(CAM)做方向过滤器:平均速度高于阈值且CAM烛形为绿才做多,红色才做空。止损400点、止盈500点是代码里写死的默认参数,外汇和贵金属杠杆高,实盘前务必按品种波动重算。 第二条路是价格脉冲思路——限定N个分时内越过M个点才触发,速度由这两个输入共同定义。第三条路选趋势方向与力度指标做主线,HMA Color做过滤器,且只在M30及以上周期跑,避免小周期假信号。 下面这段是策略1的EA输入声明,逐行看:InpEaComment给单子打标「Strategy #1」;InpMagicNum=1111区分订单;InpLot=0.1为默认手数;InpStopLoss=400、InpTakeProfit=500以点为单位的盈亏边界;InpSlippage=0不吃滑点。 InpInd_Timeframe=PERIOD_H1说明速度在小时图算;InpBars=1取近1日;InpPrice=PRICE_CLOSE用收盘价;InpTrendLev=2是速度阈值。CAM侧InpPeriodADX=10、InpPeriodFast=12分别给ADX和MACD快线周期,直接改这几个数就能调策略灵敏度。
<span class="comment">class=class="str">"cmt">//+------------------------------------------------------------------+</span> <span class="comment">class=class="str">"cmt">//| EA 的输入参数 |</span> <span class="comment">class=class="str">"cmt">//+------------------------------------------------------------------+</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">string</span> InpEaComment = <span class="class="type">class="kw">string">"Strategy #class="num">1"</span>; <span class="comment">class=class="str">"cmt">// EA Comment</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">int</span> InpMagicNum = <span class="number">class="num">1111</span>; <span class="comment">class=class="str">"cmt">// Magic number</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> InpLot = <span class="number">class="num">0.1</span>; <span class="comment">class=class="str">"cmt">// Lots</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">uint</span> InpStopLoss = <span class="number">class="num">400</span>; <span class="comment">class=class="str">"cmt">// StopLoss in points</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">uint</span> InpTakeProfit = <span class="number">class="num">500</span>; <span class="comment">class=class="str">"cmt">// TakeProfit in points</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">uint</span> InpSlippage = <span class="number">class="num">0</span>; <span class="comment">class=class="str">"cmt">// Slippage in points</span> <span class="keyword">class="kw">input</span> <span class="macro">ENUM_TIMEFRAMES</span> InpInd_Timeframe = <span class="macro">PERIOD_H1</span>; <span class="comment">class=class="str">"cmt">// Timeframe for the calculation</span> <span class="comment">class=class="str">"cmt">//--- 平均速度指标的参数</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">int</span> InpBars = <span class="number">class="num">1</span>; <span class="comment">class=class="str">"cmt">// Days</span> <span class="keyword">class="kw">input</span> <span class="macro">ENUM_APPLIED_PRICE</span> InpPrice = <span class="macro">PRICE_CLOSE</span>; <span class="comment">class=class="str">"cmt">// Applied price</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> InpTrendLev = <span class="number">class="num">2</span>; <span class="comment">class=class="str">"cmt">// Trend Level</span> <span class="comment">class=class="str">"cmt">//--- CAM 指标参数</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">uint</span> InpPeriodADX = <span class="number">class="num">10</span>; <span class="comment">class=class="str">"cmt">// ADX period</span> <span class="keyword">class="kw">input</span> <span class="keyword">class="type">uint</span> InpPeriodFast = <span class="number">class="num">12</span>; <span class="comment">class=class="str">"cmt">// MACD Fast EMA period</span>