学习如何基于斐波那契(Fibonacci)设计交易系统(基础篇)
📘

学习如何基于斐波那契(Fibonacci)设计交易系统(基础篇)

第 1/3 篇

「用斐波那契搭一套可跑的交易逻辑」

在 MT5 里做系统化交易,斐波那契不只是画几条回撤线看支撑,而是能把价格分段转化为可计算的触发条件。把 0.382、0.5、0.618 这些关键位当成状态机节点,价格触碰或穿越即改变持仓倾向,这套思路比单纯目测更不容易受情绪干扰。 外汇与贵金属杠杆高、滑点大,斐波那契位被假突破扫掉是常态,任何基于它的信号都只是概率倾向,不是确定性入口。 Mohamed Abdelmaaboud 在 2023 年 8 月 17 日发布于 MT5 社区的该主题,截至统计时获 4371 次查看、4 条讨论,说明用斐波那契做系统骨架在零售交易者里仍有稳定需求。 先别急着写 EA,打开 MT5 手动在 EURUSD 的 H1 图上拉一段明显波段的斐波那契,观察价格回到 0.618 后的反应,这步验证比看任何教程都实在。

◍ 斐波那契系统要搭哪些零件

本系列要落地的是一套基于斐波那契回撤的 MT5 交易系统,用 MQL5 在 MetaEditor 里写,跑在 MetaTrader 5 终端上。整篇内容会拆成斐波那契定义、策略、策略蓝图、交易系统实现、收尾几块,跟着走完就能在本地终端加载验证。 单纯画斐波那契线很容易骗自己。实盘前最好叠趋势方向和关键支撑阻力一起看,孤立回撤位给出的信号噪声偏大,配合后过滤效果才更接近可用。 任何从文章里抄来的逻辑,都先在策略测试器里跑一遍历史数据,确认对你自己的品种和周期有用再上真金白银。外汇和贵金属杠杆高、回撤凶,自行承担全部风险。 顺手自己敲一遍代码比直接复制更有价值。MQL5 的语法和指标调用写熟了,后面改参数、加过滤条件都不用等别人发新版。

在 MT5 里把斐波那契回撤线拉出来

斐波那契回撤是一套基于数列的技术工具,数列规律是每个数等于前两个数之和。映射到图表上,常用的水平线落在 23.6%、38.2%、50%、61.8% 这几档,价格回撤到这些位置附近时,有可能出现反弹,从而把对应水平当成支撑或阻力看待。 在 MetaTrader 5 里调出它不需要写代码:点顶部“插入”→“对象”→“斐波那契回撤”,鼠标从一段趋势的低点拖到高点(上升回撤),或高点拖到低点(下降回撤)即可。这四个百分比水平会随拖动自动生成。 画完之后想改参数或样式,右键图表选“对象列表”,找到 Fibo 对象双击打开。通用选项卡能换颜色、线型、线宽;参数选项卡里可以精确设定起止的日期、时间与价格数值,而不只是靠肉眼拖。外汇与贵金属波动剧烈,这类水平仅代表概率性反应区,实际击穿并不少见。

「两种斐波那契回撤取信号的做法」

做价格行为的人常把斐波那契回撤当惰性支撑阻力用,这里拆成两套取法,都不依赖指标画线插件,纯靠K线状态算。 第一套只盯日线最后一根蜡烛:收盘大于开盘就是看涨蜡烛,从低点到高点拉斐波那契,取各档价格;收盘小于开盘就是看跌蜡烛,从高点到低点拉,取红档价格。信号很直接——判定出看涨FIBO后,38.2%那一档的价位就是买入参考位;看跌FIBO的38.2%价位则是卖出参考位。外汇与贵金属杠杆高,该位被扫的概率不低,仅作触发参考。 第二套放开了时间帧,用一段用户指定的蜡烛数组。数组首根开盘价低于末根收盘价,按看涨方向拉FIBO;反之首根开盘高于末根收盘,按看跌方向拉。入场级由用户自己填想要的FIBO档位,看涨取该档买价、看跌取该档卖价。MT5里把数组长度做成输入参数,能快速验证不同周期的反应差异。

◍ 两种斐波那契策略的落地蓝图

要把斐波那契信号做成可复用的系统,先得定清楚数据从哪取。第一种走日线口径:只盯最后一根日线蜡烛,把它的开盘、收盘、最高、最低四个价抓出来,靠开收对比判阴阳,再据此铺斐波那契对象拿信号。 第二种不盯单根,而是塞进一个特定长度的蜡烛数组,取首根开盘与末根收盘,再扫整个数组的最高最低。同样用开收比判数组整体是多还是空,顺着这个方向画斐波那契,出信号。 两种方式的差异只在取样窗口:日线法样本固定为 1 根,数组法样本数由你定(比如 5 根或 10 根)。外汇与贵金属波动大、跳空频繁,数组法在震荡段可能比单根日线更少被影线误导,但参数不当也会平滑掉关键反转。 实操上,开 MT5 新建 EA,先把 CopyRates 拿到的日线最后一根或数组首尾价打印出来,确认取数逻辑对了再接斐波那契绘制函数,否则后面信号全是空中楼阁。

用日线与数组两条路画斐波那契并出信号

把前面说的斐波那契逻辑落成可跑的程序,核心有两条路线:一是抓当前品种的 D1 日线最后一根蜡烛,画回撤并标注入场价;二是取最近 100 根任意周期蜡烛做成数组,再按数组高低点绘 Fibo。两者都支持用户输入回撤水平(默认 38.2)来吐出买/卖信号。 日线方式里,先在 onTick 用 iBars(_Symbol, PERIOD_D1) 拿可用柱数,用 TimeCurrent 和 StringToTime 判断新日线收盘后才重绘。iOpen/iHigh/iLow/iClose 取价,iTime 取起止时间(shift 1 为起、0 为止,结束时间减 1 避免跨到新日线开头)。收盘大于开盘则 OBJ_FIBO 从低到高、染绿;否则从高到低、染红。注释会打印最后一天开收盘价与 23.6/38.2/50/61.8/100 五个水平。 数组方式不绑日线:CopyHigh/CopyLow 各取 100 根写进数组,ArrayMaximum/ArrayMinimum 定极值蜡烛索引,MqlRates+CopyRates 拿完整速率结构。同样 if-else 分看涨绿、看跌红,注释给数组首根开盘与末根收盘。实测在 15 分钟图上加载脚本,看涨测试里买入入场价贴合 38.2 水平,看跌则给出同水平的卖出价;换成数组模式、默认参数下信号价落在 61.8 水平——这说明回撤层级参数直接决定触发位。 外汇与贵金属杠杆高、滑点跳空频繁,斐波那契信号仅代表概率倾向,实盘前务必在 MT5 策略测试器用历史数据跑一遍上述两种宏定义与输入变量。

MQL5 / C++
class="macro">#define FIB_OBJ "Fibonacci Retracement"
class="type">int barsTotal;
class="type">int bars = iBars(_Symbol, PERIOD_D1);

常见问题

先确定一段明显上涨或下跌的起止点,从低到高或高到低连起来,软件会自动出 23.6%、38.2%、50%、61.8% 等水平线,别在震荡杂波里随便取点。
没有绝对,61.8% 回撤 deeper 常被看作更强支撑阻力,但假突破多;38.2% 浅回撤趋势延续概率偏高,建议结合日线方向过滤信号。
小布可对接品种页自动识别波段并标出回撤位,出现触碰或破位时推送提醒,你只需复核决策,不必手动重复拉线。
日线数组适合抓波段级回撤,信号少但噪音低;单根或短周期画线信号多却容易骗线,实盘建议用日线做主线、小周期确认。
至少要有波段取点规则、回撤水平定义、进场触发条件、止损止盈放置逻辑四块,缺一个就无法形成闭环交易。