基于季节性因素的MetaTrader 5外汇价差交易质量评估
引言
季节性是指与气候、经济及行为因素相关的周期性价格波动。该现象在商品市场中最为显著,但在外汇与股票市场中同样存在。季节性效应举例:圣诞行情、夏季咖啡价格上涨、一月效应等。
本文介绍如何利用MQL5编写一款用于评估季节性特征质量的指标。该指标既可分析单一品种的季节性,也可分析两个交易品种的价差。它能够识别具有统计显著性的季节性波动,应用加权系数,并生成指定月份的分析报告。
季节性与价差交易
价差交易是指在相关品种上同时开立多单与空单。利润来源于资产间相对价格的变动。与套利不同,价差头寸并非无风险,但其风险通常低于单一资产头寸交易。
价差头寸可分为:
- 市场内价差 —— 同一市场的不同品种(如货币对、贵金属)。
- 市场间价差 —— 不同但相关的商品(如“小麦–玉米”)。
- 交易所间价差 —— 同一商品在不同交易所(如CBOT与KCBT的小麦)。
在价差交易中运用季节性规律,可降低外部因素影响,提升可预测性。MetaTrader 5平台的SpreadMultiYearComparison指标可用于识别与分析此类规律,既适用于价差分析,也适用于单一资产分析。
在该指标中,价差通过两个品种开盘价的差值计算,且可对每个品种设置加权系数,以反映其在价差中的相对权重。
以下是一套可在实战中应用季节性规律的分步算法。遵循该流程有助于识别稳定的市场模式、做出更有依据的交易决策并有效管理风险。
季节性交易分步方法
-
模式分析:研究指标图表,识别逐年重复出现的价差上涨/下跌周期。
-
入场点位选择:如果某月份历史上价差持续走高,可在月初开仓。例如,如果观察到价差在特定月份倾向于扩大,可考虑在月初买入价差(买入第一个资产、卖出第二个资产)。
-
风险管理:设置止损与止盈,并根据风险承受能力调整仓位。
SpreadMultiYearComparison指标同样可用于识别单一资产的季节性规律。如果发现某类资产(如能源品种)连续多年在12月倾向于上涨,即可依据该规律在当年12月做出买入决策。
有时指标图表上并无明确趋势,这种情况在夏季假期尤为常见,市场交投清淡、走势更难预测。在此情况下,可利用指标数据,在包络线边界进行高抛低吸。例如,在通道下沿买入,并在上沿卖出。
季节性分析方法
为识别季节性规律,通常采用10至15年的日线历史数据,分析每年选定月份的日线级别波动,数据以去年同期区间为参照进行展示。
选择交易品种或价差(如白银或欧元兑美元–英镑兑美元),研究其15年及以上的历史走势,重点关注相同月份(如6月、7月)的规律重复性。如果在75%的年份中价格均在6月持续下跌,则表明存在强季节性。如果不同年份的收益大致相近(如月收益约+5%),则该规律被视为稳定可靠。
季节性规律同样可用于交易标普500、纳斯达克100等单一金融工具,只需依据识别出的趋势进行操作即可。图例1展示了标普500指数的季节性图表。左侧列为年份,表格中的收益按如下公式计算:月末报价 - 月初首日报价。

图例1. 标普500指数7月份走势概率
在下图中,黄线代表今年7月价格大概率呈上行走势;橄榄色曲线(绿色箭头上方)为该品种历年统计数据的平均走势线。绿色箭头用于更直观地展示基于整个研究周期的平均值,7月份曲线的变化特征。
图例1.1. 标普500指数走势概率
下图展示了英镑兑日元(GBPJPY)8月份的季节性走势:
图例2. 英镑兑日元8月报价走势概率

图例2.1. 英镑兑日元8月价格走势概率
黄色曲线代表该交易品种本年度8月的走势;橙色箭头用于突出走势变化,橄榄绿色曲线为历年统计得出的英镑兑日元平均历史走势。
下图为经过15年观测统计得出的澳元兑纽元(AUDNZD)8月份季节性价格规律:

图例3. 澳元兑纽元8月报价走势概率

图例3.1. 澳元兑纽元货币对8月价格变动走势
下图基于15年观测数据,展示澳元兑美元(AUDUSD)8月的季节性走势规律:

图例4. 澳元兑美元8月报价走势概率
图例4.1. 澳元兑美元8月价格变动走势
以下两组图表基于15年观测数据,展示英镑兑美元(GBPUSD)4月的季节性走势规律:

图例5. 英镑兑美元4月报价走势概率

图例5.1. 英镑兑美元4月价格变动走势
以下两组图表基于15年观测数据,展示纽元兑美元(NZDUSD)8月季节性走势规律:

图例6. 纽元兑美元8月报价走势概率

图例6.1. 纽元兑美元价格变动走势
以下两组图表基于10年观测周期,展示WTI原油11月价格季节性走势规律:

图例7. WTI原油11月报价走势概率

图例7.1. WTI原油11月价格变动走势
以下两组图表基于15年观测数据,展示了白银兑美元(XAGUSD)6月季节性走势;红色箭头上方粗橄榄色曲线代表该周期白银历史平均价格走势。
在图8.1中,黄色箭头与黄色曲线代表本年度6月白银价格走势。由此可见,该品种的季节性走势并非每年都会出现。

图例8. 白银兑美元6月报价走势概率

图例8.1. 白银兑美元 6月价格变动走势
图例8.1.1中黄色区域代表2025年9月白银期货合约,基于统计概率测算出的本年度6月价格延续走势:

8.1.1. 2025年9月白银期货
图例8.1.2为芝商所2025年9月纳斯达克100迷你期货当前图表,预测7月价格整体上行。
我们将持续跟踪该品种,并在MetaTrader 5中生成对应的分析报告。
8.1.2. 2025年9月纳指100迷你期货合约
这些数据由摩尔研究中心提供,基于期货合约在本年度各月份的季节性走势编制而成。
季节性价差交易:定义与图表展示
以下两张图表展示了经过15年观测,白银兑美元与黄金兑美元在1月份的价差季节性走势(指标加载于白银品种上):

图例9. 15年观测数据下金银价差1月走势概率
图例9.1. 金银价差1月价格变动走势
从图例9与图例9.1中(本文未刻意筛选特定周期与月份)可见:该贵金属价差整体走势、橄榄色历史平均曲线、橙色标注箭头,以及代表本年度价差走势的黄色曲线,全部朝着价差收窄的方向运行。这表明在15年观测周期内,该价差具备统计学有效的中期季节性规律。我们可在指标内设置配比系数:将白银权重设置为1,黄金权重设置为2。
以下两张图表基于15年观测数据,展示欧元兑美元 - 英镑兑美元价差12月的季节性特征(指标加载在价差第一品种欧元兑美元上):

图例10.欧元兑美元 - 英镑兑美元价差12月走势概率

图例10.1. 欧元兑美元 - 英镑兑美元价差12月价格变动走势
橄榄色上行曲线代表观测周期内该月份价差的平均走势,绿色箭头用于突出该趋势;黄色箭头与后续上行的黄色曲线代表本年度12月价差的预期走势。
以下两张图表基于15年观测周期,展示英镑兑美元 - 纽元兑美元价差4月季节性规律:

图例11.英镑兑美元 - 纽元兑美元价差4月走势概率

图例11.1. 英镑兑美元 - 纽元兑美元价差4月价格变动走势
由此可见,英镑兑美元 - 纽元兑美元价差的历史平均走势曲线(粗橄榄色线)与本年度价差走势曲线(黄色曲线 + 黄色箭头)趋势一致(本文未特意挑选与当前年度走势匹配的历史月份样本)。也就是说,两条曲线均自下而上,价差呈扩大趋势。
以下两张图表基于15年观测周期,展示英镑兑美元 - 白银兑美元价差6月季节性规律:

图例12. 英镑兑美元 - 白银兑美元价差6月走势概率

图例12.1. 英镑兑美元 - 白银兑美元价差6月价格变动走势
由此可见,本年度6月并未验证该英镑兑美元 - 白银兑美元价差的季节性规律。绿色箭头代表15年观测均值下该组合价差的运行方向,对应曲线为橄榄色。
以下两张图表基于15年观测数据,展示WTI - 布伦特原油价差7月季节性规律:

图例13. WTI - 布伦特原油价差7月走势概率

图例13.1. WTI–布伦特原油价差7月价格变动走势
预计今年7月,WTI–布伦特原油价差将呈现季节性走弱。黄线代表本年度价差曲线变化;橙色箭头根据观测期内的平均值,指示下行方向。图表表明,从历史规律看,7月WTI原油跌幅通常大于布伦特原油,因此可做空WTI–布伦特价差。
请注意,不同经纪商的品种代码可能不同。同时,本指标需加载在价差第一个品种(WTI)的图表上。配比系数为1:1。
基于季节性的交易质量评估可借助附带指标数据进行,方法如下:
- 样本期至少应覆盖10年,最好达到15至20年(需保证观测期内价差品种均有报价,可构建统计关系)。该方法同样可用于分析历史数据,只需从相关平台下载品种历史行情,例如美国芝加哥商业交易所(CME)官网数据。
- 各年份数据不应存在过大的离散度,数值应保持相近且平稳,如:100...150...90...166...200...150...130...125等。
样本中各年份不应出现异常极高或极低的月份值(即异常值/离群点),这样能提高统计结果的可靠性。
如果某一品种或价差在连续多年的同一月份中,走势方向(上涨或下跌)一致性达到70%,且数值区间相近,则说明该季节性模型可靠性高,适用于当年交易。
本文中,价差的计算公式为:价差 = 第一个品种报价 - 第二个品种报价,在此基础上可引入加权系数,以反映品种间最小变动价位(tick)的价值差异。例如,如果品种1欧元兑美元的系数为1,品种2英镑兑美元的系数0.8,这反映了第二个品种tick价值更高的特点。
权重允许存在小幅偏差,尤其在金银等品种上,可直接使用1:1配比。该方法有助于识别并利用价差走势中的正向季节性机会。
市场并非完全无序。许多资产会因经济周期、气候、节假日等因素呈现周期性季节性波动。如果某一资产在每年固定时段持续上涨或下跌,该规律可用于提升交易决策的合理性。
SpreadMultiYearComparison指标可基于历史数据,可视化展示价差的季节性波动。它会分析两个资产(如欧元兑美元与英镑兑美元)多年的价格差值并以图表呈现,帮助识别重复规律并确定最佳入场点位。
SpreadMultiYearComparison指标应用
参数:Symbol1、Symbol2、MonthToShow、YearsToShow。
下表为指标外部变量的名称与说明:
| 外部变量 | 描述 |
|---|---|
| Symbol1 | 主交易品种(如黄金兑美元) |
| Symbol2 | 第二个品种(留空则仅分析Symbol1) |
| MonthToShow | 分析月份(1至12) |
| YearsToShow | 统计年份数量(1至15) |
| FillGaps | 是否填充数据缺口(为true时用最近有效值替代缺失数据) |
核心功能:
- CalculateAllStatistics() —— 计算月初至月末的价差变化,兼顾小数点位数以保证点数计算准确
- DisplayFullStatistics() —— 显示各年度盈亏统计表,并给出趋势判断(强势趋势/横盘)
- GetRecommendation() —— 分析盈利月份占比,输出价差品种走势方向报告
指标季节性研究参数设置实用建议
代码中外部变量均带有注释,逻辑直观,指标显示在副图窗口中。
//+------------------------------------------------------------------+ //| SpreadMultiYearComparison.mq5 //| Copyright 2025, Roman Shiredchenko //+------------------------------------------------------------------+ #property copyright "Copyright 2025" #property version "7.1" #property strict #property indicator_separate_window #property indicator_buffers 18 #property indicator_plots 17 //--- Input parameters input string Symbol1 = "EURUSD"; // First symbol (required) input string Symbol2 = ""; // Second symbol (empty for single symbol analysis) input double k_Symbol1 = 1.0; // Weight coefficient for Symbol1 input double k_Symbol2 = 1.0; // Weight coefficient for Symbol2 input int MonthToShow = 6; // Month to analyze (1-12) input int YearsToShow = 15; // Number of years to analyze (1-15) input bool FillGaps = true; // Fill gaps in data
该价差计算指标的核心功能是在日线周期上,以点数为单位,针对第一个交易品种进行计算。
//+------------------------------------------------------------------+ //| Get spread/price value | //+------------------------------------------------------------------+ double GetSpreadValue(datetime dt) { //--- Get data for first symbol int shift1 = iBarShift(Symbol1, PERIOD_D1, dt, false); if(shift1 < 0) { Print("No data for ", Symbol1, " at ", TimeToString(dt)); return EMPTY_VALUE; } double price1 = k_Symbol1 * iOpen(Symbol1, PERIOD_D1, shift1); //--- Return first symbol price if second symbol not specified if(Symbol2 == "") { return price1; } //--- Get data for second symbol int shift2 = iBarShift(Symbol2, PERIOD_D1, dt, false); if(shift2 < 0) { Print("No data for ", Symbol2, " at ", TimeToString(dt)); return EMPTY_VALUE; } double price2 = k_Symbol2 * iOpen(Symbol2, PERIOD_D1, shift2); //--- Return price difference (spread) return price1 - price2; }
MetaTrader 5实用建议
基于季节性的交易品种,下表列出了月份、交易品种(价差)及交易方向:
| 月份 | 品种 | 方向 |
|---|---|---|
| 6月 | 白银 | 下跌 |
| 7月 | WTI–布伦特原油价差 | 下跌 |
| 6月 | 英镑兑美元 - 白银兑美元价差 | 下跌 |
小贴士:
- 核查历史数据(至少10至15年)。
- 使用止损(季节性不代表100%盈利)。
- 结合其他因素(天气、持仓报告COT等)。
日线周期季节性交易:通用原则
1. 设置分析工具
如需了解品种在不同时段的表现,打开其中一个品种的图表,加载SpreadMultiYearComparison指标。输入要对比的两个品种代码,并选择需要分析的历史年份。
2. 选择交易品种
选择关联性强的品种对,如货币对、商品、指数或股票。价差交易并非单纯买卖单一资产,而是同时双向开仓:一多一空。这样有助于降低风险:如果一个品种走势不利,另一个可部分或完全弥补亏损。这种方式通常被称为“对冲”。
如何寻找季节性机会:
1. 寻找具有规律的月份
观察价差在过去10至15年的表现,找出价差持续上涨或下跌的月份。
2. 评估可靠性
数据不应出现大幅跳空,且所需年份均有报价。统计走势越“平滑”,规律可靠性越高。
3. 确定入场与出场时机
采用日线周期操作。可配合其他指标增强信号,确认入/出场点位。
4. 风险管理
根据波动率设置止损。仓位应适中,避免账户过载。
- 基本面因素:经济报告、新闻、天气。
- 主力资金投机行为与市场情绪。
- 政策法规变动:如新限制、税收政策等。
务必确保:
- 交易品种在所有所需年份均有报价(优选15年,最低10年);
- 图表切换至日线周期;
- 两个交易品种均在市场报价窗口中显示;
- 加载指标后,右键点击 → 刷新,以完整加载数据。
SpreadMultiYearComparison指标使用方法
该指标在价差第一个品种的图表上,可视化展示往年价差的平均走势(橄榄色曲线)和本年度走势(黄色曲线)。
结果分为三类:强势趋势、中等趋势、横盘。
第一步:加载指标
- 指定Symbol1(如黄金兑美元)
- 如需计算价差,指定Symbol2(如白银兑美元)
- 选择MonthToShow(如12代表12月)
- 设置YearsToShow(如15年)
- 如果盈利年份占比大于等于75% → 强势趋势
- 如果盈利年份占比在60%至75%之间 → 中等趋势(需额外过滤)
- 如果盈利年份占比低于60% → 横盘走势(无明确趋势,价差品种报价在区间内震荡,需使用附加过滤器,例如包络线指标)
- 强势趋势(75%以上):
- 顺势入场
- 止损设置为历年平均亏损幅度
- 止盈设置为平均盈利幅度的两倍
- 达到平均盈利后,可按账户权益变化启用移动止损
- 横盘(低于60%)无方向性走势:
- 依据包络线指标的轨道边界进行高抛低吸
- 示例:上轨做空,下轨做多
结论
SpreadMultiYearComparison方法的优势:
- 降低风险:价差交易通过同时在两个品种上开仓,本质上实现了风险对冲。
- 提高盈利概率:季节性分析能帮助识别市场更大概率朝特定方向运行的时段。
- 优化交易决策:该指标以可视化形式呈现信息,辅助做出更理性、更有依据的交易决策。
- 灵活性强:可适配不同交易品种与交易风格。
- 对冲风险:如果一个品种走势不利,另一个品种可抵消亏损。例如:买入黄金、卖出白银 —— 即使黄金下跌,白银也可能上涨。由于两个品种报价相互对冲,价差的波动率通常低于单一品种,便于执行更严格的风险管理。
- 所有信号均可通过自定义过滤器进一步筛选,例如技术分析标记。也可结合包络线指标,在季节性方向上,做轨道边界的反弹交易。
- 我们可以将季节性交易与技术分析结合,在日线级别上,顺着季节性方向进行短期信号交易。
因此,任何通过历史均值得出的预测,都应检验其实现概率。通常只有正向结果概率超过70%的信号,才具备可交易价值。
乍看之下,符合条件的交易机会似乎很少,因为本文仅在日线周期(D1)上进行季节性分析。虽然部分潜在入场机会因此被剔除,但这一不足可通过分散化交易弥补 —— 在目标月份内,跟踪多组价差与多个品种的季节性机会。尤其在“农产品类”品种中,季节性特征表现明显。
季节性并非占卜,而是对规律的统计分析。SpreadMultiYearComparison是一款用于识别和评估具有统计显著性的季节性波动的工具。请将季节性分析当作“统计罗盘”,以提升决策精度、降低交易风险。
在下一篇文章中,我将深入讲解更低周期上的季节性指数。我们会研究其更复杂的变体与实战应用案例,同时探讨如何将季节性分析与基本面、技术面结合,以提升交易效率。
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/15622
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
本文由网站的一位用户撰写,反映了他们的个人观点。MetaQuotes Ltd 不对所提供信息的准确性负责,也不对因使用所述解决方案、策略或建议而产生的任何后果负责。
神经网络在交易中的应用:演员—导演—评论家框架
新手在交易中的10个基本错误
老鹰策略(ES)
下一次中期总结将于8月举行——届时我们可以采用更全面的形式进行……
NAS100 7月盈利900点!
最好在月底最后一天,趁着逆季节性走势的下跌行情尽早平仓——1000点利润将达到
建议大家在此讨论接下来的月份以及进场和离场策略!
欢迎来到季节性交易的世界!
根据文章中第一张图表!7月标普500指数,已获利!
8月份,AUDNZD的季节性走势表现良好!