利用迪纳波利 (DiNapoli) 等级进行交易(基础篇)
📘

利用迪纳波利 (DiNapoli) 等级进行交易(基础篇)

第 1/3 篇

用迪纳波利等级做 MT5 交易参照

迪纳波利(DiNapoli)等级是一套基于特定斐波那契映射与摆动点推导的阻力支撑区,在 MT5 里常被用作趋势回调的介入参考。它不预测拐点,只标出概率更高的反应带,外汇与贵金属杠杆高,触级反转失败也常见。 原文示例发布于 2017 年 12 月 29 日 12:31,在 MetaTrader 5 主题下获得 9,823 次浏览、15 条讨论,说明这套层级画法在实战群体里有稳定受众。 打开 MT5 的画线工具,手动按摆动高低点拉出对应扩展位,先观察价格在前三层级的反应密度,再决定是否把某一级当作日内防守线。

◍ 迪纳波利等级的底子与入场变形

市场逻辑会变,但有些策略骨架不动。迪纳波利等级就是菲波纳奇回撤的简化落地,根子扎在 38.2% 与 61.8% 两个初始位上。止盈端按趋势长度百分比给:COP 在 61.8%,OP 在 100%,XOP 延伸到 161.8%。 在 EURUSD H4 上,用 MT5 自带的斐波回撤(红)和扩展(蓝)就能把这套层级画出来。图里那条带双箭头的垂线就是 61.8% 级,取自下行趋势最大回滚价,构成 COP 位。 入场分四种变形:灌木丛、盆景、扫雷 A、扫雷 B。前两个激进,首次调整就进;后两个等二次调整,止损摆法不同。图例里 38.2% 处 20:00 的下行蜡烛,就是灌木丛式早进场,随后止损挂在开仓上方,仓在 COP 蓝色价签位平。 层级看着简单,但趋势频繁切换时这些位未必触达。原策略作者建议叠 MA 和随机振荡指标判势,这思路直接决定了后面要把它写成 EA 来验证。

「用 MT5 原生指标搭一套迪纳波利等级过滤」

迪纳波利等级策略不是单因子信号,而是多条件联合触发。人工连续盯盘很难熬住长周期等待,用 EA 把规则固化才是务实做法。EURUSD H4 上叠加菲波纳奇网格(23.6%、38.2%、50%、61.8%)后,实践里价格常在任一等级受阻,比经典三档更密。 回撤区间用 COP、OP 扩展等级标定,这些扩展位主要用来算止盈,后面代码会直接体现。图例里 EURUSD H4 上升趋势中,若仅在 23.6% 抓反转,回撤会非常深,单独用不够稳,必须接二级过滤。 入场许可带划定在 23.6%–61.8% 之间,范围太宽,所以引入随机指标(8,3,3)作滤波器:主线与信号线同处 30 以下允许买,同处 70 以上允许卖。趋势方向用偏移 5、周期 25 的 MA 定,价格在其上偏多、其下偏空。 为压缩噪声,再加偏移 5、周期 7 的快线 MA;只有当 K 线落在时段后半段、贴近慢线、且快线在对应侧(买上卖下)时才开仓。平仓看扩展等级抵达 COP/OP/XOP 或随机给出反向信号。外汇与贵金属杠杆高,这套规则只提高信号密度,不消除假突破风险,请先在 MT5 策略测试器跑历史段验证。

迪纳波利 EA 的参数与信号骨架

EA 头部先挂入 CTrade 类处理下单,再把迪纳波利等级拆成最小/最大入场百分比两个输入,默认 23.6% 到 61.8%。这两个边界不是死数,不同货币对的高波动区间往往要重设,优化时建议先跑一轮品种相关性再定界。 止损锚在波段峰值(图示红位),止盈自入场价反向拉开。以 50% 买入级、止损 70%、止盈 70% 为例:若把 100% 等价为 100 点,止损落在买价下方 20 点,止盈空间则到 70 点——这种非线性映射在 EA 里必须显式换算成点数,否则回测会和肉眼看图差出一个数量级。 尾随保护当前写死为:价格越过 400 点后,止损推至盈利侧 10 点。外汇与贵金属杠杆高、滑点跳空频繁,这套阈值在 XAUUSD 上可能过松,实盘前务必在 MT5 策略测试器按品种重校。 信号端做了三层简化:随机振荡只取末三根值比对预设级;MA 双线则复制末三根并判价是否夹在二线间,顺便回传二线末值供后续算“窄间隔”;分形函数最重,先拷 100 根,双循环滤掉 >10000 的废值,再自尾向前找首对最大/最小分形,且要验价是否仍落在该区间内——因为最后关键分形常滞后两根 K 线才定型。 开仓价计算函数吃进高低价、趋势方向与 MA 末值,全部转点后按百分比归一化再返价。主整合函数串起上述所有块:无持仓且价落计算区则开仓,有持仓则交予更新/平仓分支,随机反信号时移盈平或清仓。 下面这段是输入参数声明的原码,逐行对应上面说的边界与风控数: //+------------------------------------------------------------------+

//
//
//

//+------------------------------------------------------------------+ #property copyright "Aktiniy" #property link "[MQL5官方文档] #property version "1.01" #include<Trade\Trade.mqh> //--- 输入参数 //--- 菲波纳奇级数 input double percent_min_enter=23.6; // 最小入场百分比 input double percent_max_enter=61.8; // 最大入场百分比 input double percent_for_tp=60; // 可能的止盈百分比 input double percent_for_sl=70; // 可能的止损百分比 input int trailing_sl=400; // 切换到盈亏平衡点所需的超越点数 input int trailing_profit=10; // 盈亏平衡价位点数 //--- 订单 input long magic_number=65758473787389; // 魔幻数字 input double order_volume=0.01; // 手数 input int order_deviation=100; // 开仓所需的偏差 //--- 随机振荡 input int stochastic_k=8; // 随机振荡器指标 "周期 %К" input int stochastic_d=3; // 随机振荡器指标 "慢速" input int stochastic_slowing=3; // 随机振荡器指标 "周期 %D" 别把 23.6/61.8 当通用圣杯 欧美和镑美在 H1 上常能吃满这段,但黄金若直接套,61.8 上限容易在单边里踏空,建议先单品种测边界再固化参数。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//|                                                                |
class=class="str">"cmt">//|                                                                |
class=class="str">"cmt">//|                                                                |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#class="kw">property copyright "Aktiniy"
class="macro">#class="kw">property link      "[MQL5官方文档]
class="macro">#class="kw">property version   "class="num">1.01"
class="macro">#include<Trade\Trade.mqh>
class=class="str">"cmt">//--- 输入参数
class=class="str">"cmt">//--- 菲波纳奇级数
class="kw">input class="type">class="kw">double   percent_min_enter=class="num">23.6;      class=class="str">"cmt">// 最小入场百分比
class="kw">input class="type">class="kw">double   percent_max_enter=class="num">61.8;      class=class="str">"cmt">// 最大入场百分比
class="kw">input class="type">class="kw">double   percent_for_tp=class="num">60;           class=class="str">"cmt">// 可能的止盈百分比
class="kw">input class="type">class="kw">double   percent_for_sl=class="num">70;           class=class="str">"cmt">// 可能的止损百分比
class="kw">input class="type">int      trailing_sl=class="num">400;             class=class="str">"cmt">// 切换到盈亏平衡点所需的超越点数
class="kw">input class="type">int      trailing_profit=class="num">10;          class=class="str">"cmt">// 盈亏平衡价位点数
class=class="str">"cmt">//--- 订单
class="kw">input class="type">long     magic_number=class="num">65758473787389; class=class="str">"cmt">// 魔幻数字
class="kw">input class="type">class="kw">double   order_volume=class="num">0.01;           class=class="str">"cmt">// 手数
class="kw">input class="type">int      order_deviation=class="num">100;         class=class="str">"cmt">// 开仓所需的偏差
class=class="str">"cmt">//--- 随机振荡
class="kw">input class="type">int      stochastic_k=class="num">8;              class=class="str">"cmt">// 随机振荡器指标 "周期 %К"
class="kw">input class="type">int      stochastic_d=class="num">3;              class=class="str">"cmt">// 随机振荡器指标 "慢速"
class="kw">input class="type">int      stochastic_slowing=class="num">3;        class=class="str">"cmt">// 随机振荡器指标 "周期 %D"

◍ EA 初始化与随机信号读取的骨架

把策略写成 MT5 智能系统,第一步是把外部可调参数和指标句柄先摆清楚。下面这段声明里,随机振荡器用了 70/30 作为上下边界,红色均线周期 25 偏移 5、蓝色均线周期 7 偏移 5,两组均线都取收盘价做 SMA,这种快慢错位是后续交叉判断的基础。 初始化函数 OnInit 里重点不是算逻辑,而是把句柄拿到手:iStochastic 用 5 个参数(K、D、slowing、SMA、LOWHIGH)建句柄,iMA 对红蓝线各建一个,iFractals 单独拿分形句柄。trade 对象设了 magic_number 与 FOK 填充模式,回测时对滑点控制有直接影响。 Stochastic 函数只做一件事:把主线和信号线最近 3 根的值拷进数组,用 answer 返回 0/1/2 三态。注意它还没写交叉判断,只是把数据接口留好——真要跑起来,你得在后面补上「主线穿信号线且位于 70 上方」这类条件,外汇与贵金属波动剧烈,参数错配可能频繁假信号,属高风险验证。

MQL5 / C++
class="kw">input class="type">class="kw">double   stochastic_up_level=class="num">70;        class=class="str">"cmt">// 随机振荡器指标 "距顶部的信号级别"
class="kw">input class="type">class="kw">double   stochastic_down_level=class="num">30;      class=class="str">"cmt">// 随机振荡器指标 "距底部的信号级别"
class=class="str">"cmt">//--- 红色均线 class="num">25 class="num">5
class="kw">input class="type">int      ma_red_period=class="num">25;              class=class="str">"cmt">// 红色均线指标 "周期"
class="kw">input class="type">int      ma_red_shift=class="num">5;                class=class="str">"cmt">// 红色均线指标 "偏移"
class=class="str">"cmt">//--- 蓝色均线 class="num">7 class="num">5
class="kw">input class="type">int      ma_blue_period=class="num">7;              class=class="str">"cmt">// 蓝色均线指标 "周期"
class="kw">input class="type">int      ma_blue_shift=class="num">5;               class=class="str">"cmt">// 蓝色均线指标 "偏移"
class=class="str">"cmt">//--- 变量
CTrade trade;
class="type">int stochastic_handle=class="num">0;
class="type">char answer_stochastic=class="num">0;
class="type">int ma_red_handle=class="num">0;
class="type">int ma_blue_handle=class="num">0;
class="type">char answer_ma=class="num">0;
class="type">int fractals_handle=class="num">0;
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 智能系统初始化函数                                               |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">int OnInit()
  {
class=class="str">"cmt">//---
   trade.SetExpertMagicNumber(magic_number);
   trade.SetDeviationInPoints(order_deviation);
   trade.SetTypeFilling(ORDER_FILLING_FOK);
   trade.SetAsyncMode(class="kw">false);
   stochastic_handle=iStochastic(_Symbol,_Period,stochastic_k,stochastic_d,stochastic_slowing,MODE_SMA,STO_LOWHIGH);
   ma_red_handle=iMA(_Symbol,_Period,ma_red_period,ma_red_shift,MODE_SMA,PRICE_CLOSE);
   ma_blue_handle=iMA(_Symbol,_Period,ma_blue_period,ma_blue_shift,MODE_SMA,PRICE_CLOSE);
   fractals_handle=iFractals(_Symbol,_Period);
class=class="str">"cmt">//---
   class="kw">return(INIT_SUCCEEDED);
  }
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 自随机振荡器获取信号                                             |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">void Stochastic(class="type">char &answer)                 class=class="str">"cmt">// class="num">0 - 无信号; class="num">1 - 信号向上; class="num">2 - 信号向下
  {
   answer=class="num">0;                                  class=class="str">"cmt">// 应答
   class="type">class="kw">double stochastic_line_main[class="num">3];
   class="type">class="kw">double stochastic_line_signal[class="num">3];

常见问题

先看日线确立主等级区间,再切到15分钟找价格触碰后的反转K线,触碰不破可视为概率上的承接区,外汇贵金属波动大需严控仓位。
用原生均线叠加波动率通道即可近似,重点是把周期错位和极值偏移参数调对,回看30根K线验证假突破频率再上实盘。
可以,小布盯盘的AIGC会把对应品种的等级触碰和破位标在盘面,你只需打开品种页看提示,不必自己算节点。
要在初始化里加订单计数与方向锁,只用最新一根信号柱触发,回测100次以上看重复率再调间隔参数。
等级在窄幅来回时会被频繁穿越,胜率倾向走低,建议叠加波动率阈值,低于均值1.2倍时暂停顺势单。