价格行为分析工具包开发(第十五部分):引入四分位理论(1)四分位绘图脚本·综合运用
📘

价格行为分析工具包开发(第十五部分):引入四分位理论(1)四分位绘图脚本·综合运用

第 3/3 篇

◍ 子区间细分与角标落点

把大 quarters 再切成小段时,核心就是按索引累加步长并命名对象。下面这段循环里,level 由段起点 segStart 加 j 倍 smallQuarter 算得,对象名拼上段号与序号,保证重复跑脚本不会重名覆盖。 DrawHorizontalLine 那行把每条小线画到图表上,颜色线宽线型由外部变量控,调参就能改视觉密度。外层两个右大括号收掉 j 与段循环,结构很平。 脚本收尾会在右上角塞一个常驻标签。先 ObjectFind 查 ScriptLogo 在不在,在就删,避免历史残留;再 ObjectCreate 建 OBJ_LABEL,文字写死版本与作者,黄字 14 号字,距右边 80 像素、顶部 10 像素。ChartRedraw 强制重绘,跑完立刻能看到。外汇贵金属图表叠加这类辅助线时,记住它们是静态参考,价格反向穿透的概率始终存在,杠杆品种风险偏高。

MQL5 / C++
      class="type">class="kw">double level = segStart + j * smallQuarter;
      class="type">class="kw">string objName = "SmallQuarter_" + IntegerToString(seg) + "_" + IntegerToString(j);
      DrawHorizontalLine(objName, level, SmallQuarterColor, SmallQuarterLineWidth, SmallQuarterLineStyle);
       }
     }
   }
class=class="str">"cmt">// Create a persistent label(logo) in the top-right corner
   if(ObjectFind(class="num">0, "ScriptLogo") != -class="num">1)
      ObjectDelete(class="num">0, "ScriptLogo");
   if(ObjectCreate(class="num">0, "ScriptLogo", OBJ_LABEL, class="num">0, class="num">0, class="num">0))
     {
      class="type">class="kw">string logoText = "Script: DrawQuarters_DarkBold\nv1.class="num">04\nby Christian Benjamin";
      ObjectSetString(class="num">0, "ScriptLogo", OBJPROP_TEXT, logoText);
      ObjectSetInteger(class="num">0, "ScriptLogo", OBJPROP_COLOR, clrYellow);
      ObjectSetInteger(class="num">0, "ScriptLogo", OBJPROP_FONTSIZE, class="num">14);
      ObjectSetInteger(class="num">0, "ScriptLogo", OBJPROP_CORNER, CORNER_RIGHT_UPPER);
      ObjectSetInteger(class="num">0, "ScriptLogo", OBJPROP_XDISTANCE, class="num">80);
      ObjectSetInteger(class="num">0, "ScriptLogo", OBJPROP_YDISTANCE, class="num">10);
     }
   ChartRedraw();
   }

图表里看得到的四分位反应

脚本跑起来不挑账户。它不是 EA,编译通过后直接拖到 MT5 实时图表就能跑,模拟或真实环境都不动你的余额,先验证再上量。 在 AUD/USD 上我开了 DrawLargeQuarters=true、DrawSmallQuarters=false、DrawOvershootAreas=true。图里能直接看到价格和大四分位线以及上冲/下探区反复咬合,较大水平线附近出现支撑与阻力的概率明显偏高。 把上冲线和较小四分位线都关掉后,大四分位线的边界更干净——价格在大线处找方向的现象更直观,EUR/USD 上同理,关键价位用四分位水平一眼可辨。外汇与贵金属波动剧烈,这类水平仅作概率参考,实操需自担高风险。 下面这段输入参数就是上面测试用的开关组合,逐行拆开看:MajorStep=0.1000 定义大整数间隔;DrawLargeQuarters 控制是否画大四分位;DrawSmallQuarters 关掉小线避免干扰;DrawOvershootAreas 切换上冲下探区显示。

MQL5 / C++
class=class="str">"cmt">//---- Input parameters -------------------------------------------------
input class="type">class="kw">double MajorStep          = class="num">0.1000;   class=class="str">"cmt">// Difference between major whole numbers.
input class="type">bool   DrawLargeQuarters  = true;     class=class="str">"cmt">// Draw intermediate large quarter lines.
input class="type">bool   DrawSmallQuarters  = false;    class=class="str">"cmt">// Draw small quarter lines.
input class="type">bool   DrawOvershootAreas = true;     class=class="str">"cmt">// Mark overshoot/undershoot areas for large quarter lines.
class=class="str">"cmt">//---- Input parameters -------------------------------------------------
input class="type">class="kw">double MajorStep          = class="num">0.1000;   class=class="str">"cmt">// Difference between major whole numbers.
input class="type">bool   DrawLargeQuarters  = true;     class=class="str">"cmt">// Draw intermediate large quarter lines.
input class="type">bool   DrawSmallQuarters  = false;    class=class="str">"cmt">// Draw small quarter lines.
input class="type">bool   DrawOvershootAreas = false;    class=class="str">"cmt">// Mark overshoot/undershoot areas for large quarter lines.

「画得少,看得清」

四分位绘制脚本把原本要手工算很久的支撑阻力线直接铺在图上,大四分位对应主要高低位、小四分位作次要价位,这种分层思路给自动化分析留了底。外汇和贵金属波动受消息与流动性影响大,这类水平线只提示概率性反转或受阻区域,别当成确定性边界。 从 01/10/24 的图表展示器到 20/02/25 的四分位绘制脚本,15 个工具横跨重影比对、Telegram 推送、VWAP 到 PSAR,节奏是每几天出一个能跑的小件。开 MT5 把 Quarters_Drawer.mq5 拖进脚本目录,加载后图表上会直接标出四分位带,先拿 EURUSD 的 H1 验证一下分层是否和你的手动判断吻合。

常见问题

脚本按给定百分比把当前区间切为四等份,并可在每个子区间继续套用同一逻辑做二次细分,角标直接标在对应价位旁。
观察价格触碰四分位边界后的回撤或加速,多数品种在 25%、50%、75% 线附近出现停顿概率偏高,可据此缩小观察范围。
小布可自动在对应品种页绘制四分位并标注子区间角标,把重复画线交给它,你只管看价格反应做决策。
这两类品种波动大、跳空多,四分位仅作概率参考,实盘须严控仓位,别把历史区间当必然支撑阻力。
主区间 3 条分割线加关键子区间 1~2 条即可,画得少反而更容易看清价格真实落点。