TriZone Semafor Pro MT4 — Complete User Guide, Signals, Zones and EA Integration

TriZone Semafor Pro MT4 — Complete User Guide, Signals, Zones and EA Integration

18 August 2026, 22:31
Ahmed Hamed Hamed Eadwan
0
22
TriZone Semafor Pro MT4 — Complete User Guide

Documented version: 1.00
Platform: MetaTrader 4 (MT4)
Product type: Multi-level chart-window indicator
Publisher: R Protocols
Developer: Ahmed Hamed (ahradwan)

Risk notice: This indicator is a technical analysis tool. It does not guarantee a trading result and does not provide personalized investment advice. Trading involves risk and may result in the loss of some or all invested capital. Test the indicator on historical data and a demo account, and apply independent risk management before considering live use.

Contents

  1. Overview
  2. How the indicator works
  3. Pro features
  4. Installation
  5. Quick start
  6. The three signal levels
  7. Dashboard
  8. Supply and demand zones
  9. Market structure: HH, HL, LH, LL, BOS and CHoCH
  10. Support and resistance lines
  11. Presets and ATR deviation
  12. Complete input reference
  13. Alerts
  14. Anti-Repaint and Safe Arrows
  15. Expert Advisor integration
  16. Practical workflow
  17. Performance and testing
  18. Troubleshooting
  19. Frequently asked questions
  20. Disclaimer

1. Overview

TriZone Semafor Pro MT4 is a three-level Semafor/ZigZag-style indicator designed to identify price pivots at different sensitivities. It combines fast, medium and slow pivot layers with confluence analysis and professional chart tools.

  • L1 Fast: short-term pivots and precise timing.
  • L2 Medium: medium-size swings with additional filtering.
  • L3 Slow: major pivots and broader market structure.
  • EA-compatible confluence buffer.
  • Dashboard with the latest level signals and current status.
  • Supply and demand zones derived from signal confluence.
  • BOS, CHoCH, HH, HL, LH and LL market-structure labels.
  • Support and resistance lines based on confirmed pivots.
  • Fixed-point or ATR-based deviation.
  • Automatic and instrument-specific presets.
  • Popup, push, email and sound notifications.

A BUY or SELL label reports a detected low or high pivot under the selected settings. It is not an automatic instruction to open a position.

2. How the indicator works

2.1 Pivot detection

Each level searches for rolling highs and lows using its Period. Backstep controls spacing and replacement of nearby candidates. Deviation, or an ATR-derived value, determines how much price movement is required before the algorithm accepts a transition from a high to a low or from a low to a high.

2.2 Three independent horizons

Level Role Typical behavior Common use
L1 Fast Small pivots Fastest and most frequent Fine timing and short-term movement
L2 Medium Medium pivots More selective Confirmation and noise filtering
L3 Slow Major pivots Slowest and least frequent Major swings and broader structure

2.3 Exclusive plotting

The indicator prevents same-direction symbols from stacking on the same bar:

  • An L3 high hides L2 and L1 highs on that bar.
  • An L3 low hides L2 and L1 lows on that bar.
  • An L2 high hides an L1 high on that bar.
  • An L2 low hides an L1 low on that bar.

The visible symbol therefore represents the strongest displayed level at that location. Lower levels may still contribute to internal confluence logic.

2.4 Signal direction

  • BUY (Low): a low pivot was detected.
  • SELL (High): a high pivot was detected.

Always interpret the pivot in context: trend, market structure, nearby zones, support or resistance, volatility, spread and risk.

3. Pro features

Feature Pro Description
Three Semafor levels Yes Fast, medium and slow pivot layers
Dashboard Yes Latest level values, confluence, structure and status
EA signal buffer Yes Buffer 6 returns +1, -1 or 0
Confluence zones Yes Demand, supply and flipped zones
ATR deviation Yes Adapts deviation to current volatility
Presets Yes Auto, Custom, FX ATR, Gold, Indices and Manual
Full alerts Yes Popup, push, email and optional sound
Market structure Yes BOS and CHoCH, with optional HH/HL/LH/LL
Support/resistance Yes Recent pivot-derived levels
Headless mode Yes EA-oriented operation without auxiliary chart objects or alerts

4. Installation

  1. Open MetaTrader 4.
  2. Select File > Open Data Folder.
  3. Open MQL4 > Indicators.
  4. Copy the indicator file into the Indicators folder.
  5. Restart MT4, or right-click the Navigator panel and select Refresh.
  6. Drag TriZone Semafor Pro MT4 onto a chart.
  7. Select a preset. PRESET_AUTO is a practical starting point for manual chart use.
  8. Click OK and allow the initial calculation to finish.

During first loading, the dashboard may show Bootstrap... or ATR Building.... Wait until it reports Ready before relying on the confluence output.

4.1 Multiple instances

Use a different InstanceID for every independent instance on the same chart or for every EA-created configuration. Examples: A, B, EA1, EA2, Swing and Scalp.

5. Quick start

5.1 Manual chart analysis

  • Preset = PRESET_AUTO
  • AntiRepaint = ON
  • SafeArrows = OFF initially; enable it when maximum display conservatism is more important than timing
  • MinLevels = 2
  • StrictMode = OFF
  • ConfluenceWindow = 3
  • ShowDashboard = ON
  • ShowZones = ON
  • ShowSRLines = ON
  • ShowBOS = ON
  • ShowHHHL = OFF to reduce chart clutter

5.2 Expert Advisor use

  • Set HeadlessMode = ON in every EA call.
  • Set all alerts and optional visual modules to OFF.
  • Keep AntiRepaint = ON for conservative EA integration.
  • Read buffer 6 at the calculated EA-safe shift.
  • Process a signal once per bar and apply the EA's own execution and risk controls.

6. The three signal levels

6.1 Default pivot settings

Level Period Deviation Backstep ConfirmBars Symbol
L1 5 1 3 2 159
L2 13 8 5 3 108
L3 34 21 12 4 116

6.2 Effect of changing inputs

  • Higher Period: fewer and larger pivots.
  • Lower Period: faster signals with more sensitivity to noise.
  • Higher Deviation or ATR multiplier: a larger price move is required to switch pivot direction.
  • Higher Backstep: greater spacing between candidates.
  • Higher ConfirmBars: more delay in exchange for more historical stability.

7. Dashboard

Field Meaning
L1 Fast / L2 Medium / L3 Slow Latest visible signal and its price
Man or ATR Deviation mode used by that level
D: ...p Current deviation expressed in points
Zone (now) BUY, SELL or None from the current confluence read location
Structure Latest BOS or CHoCH event and its level
Trend Independent structure direction for L3, L2 and L1
Status Initialization, bootstrap, ATR build or ready state

Use DashX and DashY to move the panel. Dashboard colors and font size are configurable. Headless mode suppresses the dashboard.

8. Supply and demand zones

8.1 Zone creation

A zone is created when same-direction level confluence meets the configured threshold within ConfluenceWindow. Participating pivot prices define the upper and lower boundaries. If the calculated range is narrower than 20 points, the indicator expands it to that minimum width.

  • DEMAND: confluence of low pivots.
  • SUPPLY: confluence of high pivots.
  • The label reports the internal strength and whether the zone has flipped.

8.2 Duplicate filtering

A new active zone is rejected when its overlap with an existing non-flipped zone exceeds 70% of the new zone's width.

8.3 Zone breach and flip

  • A previous-bar close below demand increments its breach counter.
  • A previous-bar close above supply increments its breach counter.
  • After ZoneBreachBars qualifying closes, an original zone flips direction.
  • A flipped zone changes to ZoneFlipColor and receives the [FLIP] label.
  • If a flipped zone is breached again, it is removed.
  • A non-breaching close resets the breach counter.

8.4 Effective limits

  • MaxZones is clamped to 3–20.
  • ZoneBreachBars is clamped to 1–3.
  • ZoneHistoryBars is clamped to 200–20000.
  • When the limit is reached, the oldest zone is removed first.

9. Market structure

Label Name Interpretation
HH Higher High A high above the prior reference high
HL Higher Low A low above the prior reference low
LH Lower High A high below the prior reference high
LL Lower Low A low below the prior reference low
BOS UP Bullish Break of Structure Bullish continuation break under the indicator's protected-pivot logic
BOS DN Bearish Break of Structure Bearish continuation break under the protected-pivot logic
CHoCH UP Bullish Change of Character Initial structural change from bearish to bullish
CHoCH DN Bearish Change of Character Initial structural change from bullish to bearish
  • ShowBOS enables BOS and CHoCH labels.
  • ShowHHHL adds HH, HL, LH and LL labels.
  • MSMinLevel filters labels by source level.
  • MSTagLevel appends L1, L2 or L3 to each label.
  • The label ring is capped at 400 objects; the oldest label is removed when necessary.

Structure is calculated independently for every level. L1 may therefore be bullish while L3 remains bearish. This reflects different internal horizons rather than a calculation error.

10. Support and resistance lines

Recent confirmed pivot highs and lows are projected as horizontal levels:

  • R denotes resistance from a high pivot.
  • S denotes support from a low pivot.
  • L3 uses a solid line, L2 a dashed line and L1 a dotted line.
  • SRLinesPerSide controls the number of highs and lows drawn per level.
  • SRMinLevel excludes lower source levels.
  • SRShowPrice adds the source level and price label.

11. Presets and ATR deviation

11.1 Preset modes

Preset Behavior
PRESET_AUTO Detects FX, gold and common index symbols; unknown symbols fall back to Manual
PRESET_CUSTOM Uses the DevMode, ATRPeriod and ATRMult inputs of each level
PRESET_FX_ATR Applies the built-in FX ATR configuration
PRESET_GOLD Applies the built-in gold ATR configuration
PRESET_INDICES Applies the built-in index configuration; automatic detection also maps some silver symbols here
PRESET_MANUAL Forces all levels to DEV_MANUAL

11.2 Built-in ATR values

Preset L1 Period / Mult L2 Period / Mult L3 Period / Mult
FX ATR 7 / 0.015 14 / 0.12 28 / 0.315
Gold 7 / 0.03 14 / 0.25 28 / 0.65
Indices 7 / 0.02 14 / 0.18 28 / 0.50

11.3 Manual versus ATR

  • DEV_MANUAL: deviation = Deviation × Point.
  • DEV_ATR: deviation = ATR × ATR multiplier.
  • If ATR is temporarily unavailable, fixed Deviation is used as a fallback.

Use PRESET_CUSTOM when you need direct control over each DevMode, ATRPeriod and ATRMult input. Other presets may override those custom values.

12. Complete input reference

12.1 Level inputs

Input group L1 default L2 default L3 default Purpose and limits
Low color Aqua DodgerBlue Gold Low-pivot symbol color
High color Magenta Orchid OrangeRed High-pivot symbol color
Period 5 13 34 Pivot depth, clamped to 2–500
Deviation 1 8 21 Fixed deviation in points, clamped to 1–100000
DevMode Manual Manual Manual Manual or ATR when permitted by Preset
ATRPeriod 7 14 28 ATR period, clamped to 2–200
ATRMult 0.015 0.12 0.315 ATR multiplier, clamped to 0.001–10
Backstep 3 5 12 Clamped to 1 through Period-1
High symbol 159 108 116 Wingdings code for high pivots
Low symbol 159 108 116 Wingdings code for low pivots
ConfirmBars 2 3 4 Display confirmation, clamped to 1–50

12.2 Confluence and EA

Input Default Description
MinLevels 2 Minimum confluence strength, clamped to 1–3
StrictMode OFF Forces the confluence threshold to 3
ConfluenceWindow 3 Number of older bars included in the search, clamped to 0–100

12.3 General operation

Input Default Description
InstanceID A Separates object and terminal-global names between instances
DebugMode OFF Writes diagnostic information to the Experts log
HeadlessMode OFF Suppresses dashboard, alerts and optional visual objects; core buffers remain active
AntiRepaint ON Delays plot output by ConfirmBars and applies the conservative EA shift
SafeArrows OFF Uses the larger EA-safe formula for visible arrow confirmation when AntiRepaint is ON

12.4 Alerts

Input Default Description
AlertMode ALERT_POPUP NONE, POPUP, PUSH or ALL
AlertLevel1 OFF Enables L1 alerts
AlertLevel2 ON Enables L2 alerts
AlertLevel3 ON Enables L3 alerts
PlaySoundOn OFF Plays AlertSound when an enabled alert is fired
AlertSound alert.wav Sound file in the terminal Sounds folder

12.5 Dashboard

Input Default Description
ShowDashboard ON Shows or hides the dashboard
DashX / DashY 20 / 30 Distance from the top-left chart corner
DashBuyColor / DashSellColor DodgerBlue / OrangeRed Dashboard signal colors
DashBgColor 20,20,30 Panel background color
DashFontSize 9 Dashboard font size

12.6 Zones

Input Default Description
ShowZones ON Enables confluence zones
MaxZones 10 Effective range 3–20
ZoneBreachBars 1 Required closed-bar breaches, effective range 1–3
ZoneHistoryBars 5000 Historical scan, effective range 200–20000
ZoneBuyColor / ZoneSellColor Green-cyan / orange Demand and supply colors
ZoneFlipColor Gray Color after a zone flips
ZoneFill ON Controls zone-label contrast in this version

12.7 Support, resistance and market structure

Input Default Description
ShowSRLines ON Shows support and resistance lines
SRLinesPerSide 2 High and low lines per level, clamped to 1–5
SRMinLevel 2 Lowest source level, clamped to 1–3
SRShowPrice ON Shows S/R type, level and price
SRResColor / SRSupColor Tomato / MediumSpringGreen Resistance and support colors
SRLineWidth 1 Clamped to 1–3
ShowBOS ON Shows BOS and CHoCH
ShowHHHL OFF Shows HH, HL, LH and LL
MSMinLevel 1 Lowest displayed structure level, clamped to 1–3
MSTagLevel ON Adds L1, L2 or L3 to structure labels
BOSUpColor / BOSDownColor Lime / Red BOS colors
CHoCHColor Orange CHoCH color
HHHLColor DimGray HH/HL/LH/LL color
MSFontSize 7 Structure label font size

13. Alerts

  • ALERT_NONE: no alert.
  • ALERT_POPUP: MT4 popup alert.
  • ALERT_PUSH: MetaQuotes mobile notification.
  • ALERT_ALL: popup, push and email.
  • If PlaySoundOn is enabled, the selected sound is also played for an enabled non-NONE alert mode.

Push notifications require configuration under Tools > Options > Notifications. Email requires configuration under Tools > Options > Email. Alerts are disabled in Strategy Tester, optimization and HeadlessMode.

14. Anti-Repaint and Safe Arrows

14.1 Pivot confirmation

The newest ZigZag/Semafor candidate can change if price makes a more extreme high or low before confirmation. AntiRepaint delays publication of the symbol until the configured number of confirmation bars has passed.

14.2 Safe Arrows

When AntiRepaint and SafeArrows are both ON, visible arrows use:

EffectiveConfirm = max(ConfirmBars, 2 × (Period + Backstep) + 7)

This is more conservative but creates older signals.

14.3 EA-safe shift

With AntiRepaint ON, the EA confluence buffer starts at the largest safe value across all levels:

EASafeLevel = max(ConfirmBars, 2 × (Period + Backstep) + 7) EAShift = max(EASafeL1, EASafeL2, EASafeL3)

Using default settings:

  • L1: max(2, 2 × (5 + 3) + 7) = 23
  • L2: max(3, 2 × (13 + 5) + 7) = 43
  • L3: max(4, 2 × (34 + 12) + 7) = 99
  • Final EA-safe shift: 99

Important: shift 4 only satisfies the largest default ConfirmBars value when SafeArrows is OFF. It is not the conservative EA-safe shift defined by this Pro version. For stable EA integration under the indicator's own safety formula, use shift 99 with the default settings, or calculate the value after changing Period, Backstep or ConfirmBars.

15. Expert Advisor integration

15.1 MT4 iCustom rules

  • Indicator file name: TriZone_Semafor , without .ex4 .
  • Always set HeadlessMode = ON inside an EA.
  • MT4 iCustom returns a double for a specific buffer and shift.
  • MT4 does not expose an MT5-style indicator handle here.
  • No CopyBuffer or IndicatorRelease is required.
  • The terminal manages and may cache the internal custom-indicator instance.
  • Every declared Pro input must be passed in the exact order before bufferIndex and shift.

// MT4 signature: // double iCustom(symbol, timeframe, "name", inputs..., bufferIndex, shift)

15.2 Buffer map

Index Buffer Signal value
0 BufLow1 L1 BUY pivot price or EMPTY_VALUE
1 BufHigh1 L1 SELL pivot price or EMPTY_VALUE
2 BufLow2 L2 BUY pivot price or EMPTY_VALUE
3 BufHigh2 L2 SELL pivot price or EMPTY_VALUE
4 BufLow3 L3 BUY pivot price or EMPTY_VALUE
5 BufHigh3 L3 SELL pivot price or EMPTY_VALUE
6 EA Signal +1 BUY, -1 SELL, 0 no signal or conflict

15.3 Complete Pro iCustom helper

The following helper matches the exact input order of TriZone Semafor Pro v1.00 shown in this guide. It uses PRESET_CUSTOM with manual deviation, disables alerts and optional visuals, and enables HeadlessMode.

    
    double TZS_GetBuffer(const int bufferIndex, const int shift)
{
   return iCustom(
      Symbol(),
      Period(),
      "TriZone_Semafor", // exact file name, no .ex4

      // ---- Preset ----
      1,                 // #0  PRESET_CUSTOM

      // ---- Level 1: Fast ----
      clrAqua,           // #1  ColorL1Low
      clrMagenta,        // #2  ColorL1High
      5,                 // #3  Period1
      1,                 // #4  Deviation1
      0,                 // #5  DevMode1 = DEV_MANUAL
      7,                 // #6  ATRPeriod1
      0.015,             // #7  ATRMult1
      3,                 // #8  Backstep1
      159,               // #9  HighSymbol1
      159,               // #10 LowSymbol1
      2,                 // #11 ConfirmBars1

      // ---- Level 2: Medium ----
      clrDodgerBlue,     // #12 ColorL2Low
      clrOrchid,         // #13 ColorL2High
      13,                // #14 Period2
      8,                 // #15 Deviation2
      0,                 // #16 DevMode2 = DEV_MANUAL
      14,                // #17 ATRPeriod2
      0.12,              // #18 ATRMult2
      5,                 // #19 Backstep2
      108,               // #20 HighSymbol2
      108,               // #21 LowSymbol2
      3,                 // #22 ConfirmBars2

      // ---- Level 3: Slow ----
      clrGold,           // #23 ColorL3Low
      clrOrangeRed,      // #24 ColorL3High
      34,                // #25 Period3
      21,                // #26 Deviation3
      0,                 // #27 DevMode3 = DEV_MANUAL
      28,                // #28 ATRPeriod3
      0.315,             // #29 ATRMult3
      12,                // #30 Backstep3
      116,               // #31 HighSymbol3
      116,               // #32 LowSymbol3
      4,                 // #33 ConfirmBars3

      // ---- Confluence / EA ----
      2,                 // #34 MinLevels
      0,                 // #35 StrictMode = OFF
      3,                 // #36 ConfluenceWindow

      // ---- Instance ----
      "EA1",             // #37 unique InstanceID
      0,                 // #38 DebugMode = OFF
      1,                 // #39 HeadlessMode = ON — required in EA

      // ---- Anti-Repaint ----
      1,                 // #40 AntiRepaint = ON
      0,                 // #41 SafeArrows = OFF

      // ---- Alerts: OFF inside EA ----
      0,                 // #42 AlertMode = ALERT_NONE
      0,                 // #43 AlertLevel1
      0,                 // #44 AlertLevel2
      0,                 // #45 AlertLevel3
      0,                 // #46 PlaySoundOn
      "alert.wav",       // #47 AlertSound

      // ---- Dashboard: OFF ----
      0,                 // #48 ShowDashboard
      20,                // #49 DashX
      30,                // #50 DashY
      clrDodgerBlue,     // #51 DashBuyColor
      clrOrangeRed,      // #52 DashSellColor
      C'20,20,30',       // #53 DashBgColor
      9,                 // #54 DashFontSize

      // ---- Zones: OFF ----
      0,                 // #55 ShowZones
      10,                // #56 MaxZones
      1,                 // #57 ZoneBreachBars
      5000,              // #58 ZoneHistoryBars
      C'0,180,140',      // #59 ZoneBuyColor
      C'230,80,20',      // #60 ZoneSellColor
      C'120,120,120',    // #61 ZoneFlipColor
      0,                 // #62 ZoneFill

      // ---- Support / Resistance: OFF ----
      0,                 // #63 ShowSRLines
      2,                 // #64 SRLinesPerSide
      2,                 // #65 SRMinLevel
      0,                 // #66 SRShowPrice
      clrTomato,         // #67 SRResColor
      clrMediumSpringGreen, // #68 SRSupColor
      1,                 // #69 SRLineWidth

      // ---- Market Structure: OFF ----
      0,                 // #70 ShowBOS
      0,                 // #71 ShowHHHL
      1,                 // #72 MSMinLevel
      0,                 // #73 MSTagLevel
      clrLime,           // #74 BOSUpColor
      clrRed,            // #75 BOSDownColor
      clrOrange,         // #76 CHoCHColor
      clrDimGray,        // #77 HHHLColor
      7,                 // #78 MSFontSize

      // ---- Requested output ----
      bufferIndex,
      shift
   );
} 

15.4 Calculate the safe shift

int TZS_LevelSafeShift(const int confirmBars, const int period, const int backstep) { return MathMax(confirmBars, 2 * (period + backstep) + 7); } int TZS_GetSafeShift() { int s1 = TZS_LevelSafeShift(2, 5, 3); // 23 int s2 = TZS_LevelSafeShift(3, 13, 5); // 43 int s3 = TZS_LevelSafeShift(4, 34, 12); // 99 return MathMax(s1, MathMax(s2, s3)); }

15.5 Read the six price buffers

bool TZS_HasPrice(const double value) { return (value != EMPTY_VALUE && value != 0.0); } void TZS_ReadPriceBuffers() { int safeShift = TZS_GetSafeShift(); // 99 with these settings double lo1 = TZS_GetBuffer(0, safeShift); double hi1 = TZS_GetBuffer(1, safeShift); double lo2 = TZS_GetBuffer(2, safeShift); double hi2 = TZS_GetBuffer(3, safeShift); double lo3 = TZS_GetBuffer(4, safeShift); double hi3 = TZS_GetBuffer(5, safeShift); int buyLevel = TZS_HasPrice(lo3) ? 3 : TZS_HasPrice(lo2) ? 2 : TZS_HasPrice(lo1) ? 1 : 0; int sellLevel = TZS_HasPrice(hi3) ? 3 : TZS_HasPrice(hi2) ? 2 : TZS_HasPrice(hi1) ? 1 : 0; if(buyLevel > 0 && sellLevel == 0) PrintFormat("BUY pivot | Level %d | shift %d", buyLevel, safeShift); else if(sellLevel > 0 && buyLevel == 0) PrintFormat("SELL pivot | Level %d | shift %d", sellLevel, safeShift); }

15.6 Read the confluence buffer

Buffer 6 is the simplest integration point when the EA only needs the final direction:

void TZS_ReadConfluence() { int safeShift = TZS_GetSafeShift(); double signal = TZS_GetBuffer(6, safeShift); if(signal == 1.0) PrintFormat("TriZone confluence: BUY | shift %d", safeShift); else if(signal == -1.0) PrintFormat("TriZone confluence: SELL | shift %d", safeShift); }

15.7 Process once per bar

    
    bool IsNewBar()
{
   static datetime lastBarTime = 0;
   datetime currentBarTime = iTime(Symbol(), Period(), 0);
   if(currentBarTime == 0 || currentBarTime == lastBarTime)
      return false;

   lastBarTime = currentBarTime;
   return true;
}

void OnTick()
{
   if(!IsNewBar())
      return;

   TZS_ReadConfluence();
   // Or call TZS_ReadPriceBuffers() when the exact level is required.
} 

15.8 OnDeinit in MT4

void OnDeinit(const int reason) { // No MT5-style indicator handle exists here. // No CopyBuffer or IndicatorRelease call is required. }

15.9 Important integration notes

  • The helper above is for the Pro input layout. A Free or Plus build may have a different input list.
  • Changing the source input order requires updating every iCustom call.
  • Use a unique InstanceID such as EA1, EA2 or StrategyA.
  • Do not attach a visible chart copy with the same active InstanceID as the EA-created copy on the same chart.
  • Do not use shift 0 as a confirmed EA signal when AntiRepaint is ON.
  • If only direction is required, one buffer-6 call is more efficient than reading all six price buffers.
  • Buffers report analysis values. Order execution, stop loss, position sizing and duplicate-order protection remain the EA's responsibility.

15.10 Common mistakes

Mistake Result Correction
Omitting Preset, ATR, dashboard, zone or structure inputs All later values are shifted into the wrong parameters Pass every Pro input in exact declaration order
Using the short Free-style parameter list Incorrect values or initialization failure Use the complete Pro helper above
Using shift 4 as the EA-safe shift Only the default ConfirmBars maximum is covered Use 99 for the default conservative EA formula
Reading only buffer indexes 0–5 Confluence output is ignored Use buffer 6 when final BUY/SELL direction is sufficient
HeadlessMode left OFF Unnecessary objects and alert work Set HeadlessMode to 1 in the EA call
Duplicate InstanceID Possible INIT_PARAMETERS_INCORRECT Use a unique ID for each active configuration
Calling on every tick without gating Repeated processing and unnecessary work Use a new-bar or signal-time guard
Using CopyBuffer or IndicatorRelease MT5-style code does not apply Read the double returned by MT4 iCustom directly

16. Practical workflow

  1. Start with L3 structure to define the broader context.
  2. Use L2 to assess the medium swing.
  3. Use L1 for timing rather than as a standalone trend definition.
  4. Check the nearest demand, supply, support and resistance.
  5. Use BOS for continuation context and CHoCH for possible structural change.
  6. Define invalidation, position size and maximum risk before execution.

16.1 Example BUY context

  • L3 structure is bullish or a meaningful CHoCH UP has appeared.
  • Price tests a demand zone or L2/L3 support.
  • Confirmed low confluence produces +1 at the selected safe shift.
  • Nearby resistance and trading costs still permit an acceptable plan.

16.2 Example SELL context

  • L3 structure is bearish or a meaningful CHoCH DN has appeared.
  • Price tests a supply zone or L2/L3 resistance.
  • Confirmed high confluence produces -1 at the selected safe shift.
  • Nearby support, spread and volatility are considered.

17. Performance and testing

  • Major historical scans are capped at 20000 bars.
  • First loading performs a full bootstrap and may take longer.
  • Normal updates recalculate a safe tail rather than the full history.
  • ATR history is built once and then refreshed incrementally.
  • Non-visual testing and optimization suppress chart objects and alerts.
  • HeadlessMode is recommended for EAs.
  • Keep DebugMode OFF during normal operation unless diagnostics are needed.

17.1 Responsible testing

  1. Test across different market regimes.
  2. Separate optimization data from validation data.
  3. Include spread, commission and slippage in EA tests.
  4. Use Visual Mode to inspect when pivots actually become available.
  5. Do not select settings solely because they create the best historical curve.

18. Troubleshooting

No symbols are visible

  • Wait for Bootstrap or ATR Building to finish.
  • Load more chart history.
  • Check symbol colors against the chart background.
  • SafeArrows may intentionally delay recent symbols.

Buffer 6 returns zero at shift 0

This is expected with AntiRepaint ON. The recent portion is intentionally zeroed before EAShift. Read from the safe shift displayed as EA>=N in the indicator short name or calculate it using the documented formula.

The dashboard remains on ATR Building

Allow history to load, refresh the chart and review the Experts and Journal tabs. ATR mode requires a complete initial history build before normal confluence output is released.

INIT_PARAMETERS_INCORRECT

  • Check for a duplicate active InstanceID.
  • Verify the exact Pro input order.
  • Confirm the file name and folder path.
  • Do not use a shortened Free/Plus iCustom list for the Pro build.

Fewer arrows than expected

  • Exclusive plotting hides lower same-direction levels.
  • AntiRepaint delays symbols by ConfirmBars.
  • SafeArrows may increase confirmation substantially.
  • Higher Period, Deviation or ATR multiplier reduces pivot frequency.

The chart is crowded

  • Set ShowHHHL to OFF.
  • Increase MSMinLevel or SRMinLevel.
  • Reduce SRLinesPerSide and MaxZones.
  • Disable modules that are not required.

19. Frequently asked questions

Is the indicator completely non-repainting?

AntiRepaint delays pivot publication, and SafeArrows applies a more conservative delay. The tool remains a pivot algorithm that uses later bars for confirmation. Historical reloads, data changes and configuration changes can also cause recalculation. Treat the modes as defined confirmation policies, not as a guarantee.

Why are signals delayed?

Confirmation requires later bars. More conservative confirmation increases delay.

Should I use Manual or ATR?

ATR adapts to volatility. Manual mode provides a fixed and repeatable point threshold. Start with a relevant preset, then validate Custom settings when needed.

What is the difference between MinLevels = 3 and StrictMode = ON?

Both normally require strength 3. StrictMode forces the threshold to 3 even when MinLevels is lower.

Does a zone guarantee a reversal?

No. A zone records historical confluence under the algorithm. It may hold, fail, flip or be removed.

Can the indicator be used in an EA?

Yes. Use the seven documented buffers, the complete Pro input order, HeadlessMode and the calculated safe shift.

Does HeadlessMode stop buffer calculation?

No. It suppresses auxiliary visuals and alerts while the core pivot and buffer calculations remain available.

20. Disclaimer

TriZone Semafor Pro MT4 is provided for technical analysis and educational use. Historical behavior and examples do not guarantee future results. Results may vary because of data quality, broker feed, symbol specification, timeframe, spread, slippage, settings and market conditions. The user remains responsible for every trading decision and for determining whether the tool is suitable for the intended use.

This guide is not investment, legal or tax advice. Do not trade money you cannot afford to lose, and seek independent professional advice where appropriate.


Version information

Product: TriZone Semafor Pro MT4
Version: 1.00
Copyright: R Protocols
MQL5.community profile: ahradwan

This guide documents the behavior visible in the supplied version 1.00 source. Update the documentation if the product input order, buffers or calculation rules change in a later release.