TriZone Semafor Pro MT4 — Complete User Guide, Signals, Zones and EA Integration
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
- Overview
- How the indicator works
- Pro features
- Installation
- Quick start
- The three signal levels
- Dashboard
- Supply and demand zones
- Market structure: HH, HL, LH, LL, BOS and CHoCH
- Support and resistance lines
- Presets and ATR deviation
- Complete input reference
- Alerts
- Anti-Repaint and Safe Arrows
- Expert Advisor integration
- Practical workflow
- Performance and testing
- Troubleshooting
- Frequently asked questions
- 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
- Open MetaTrader 4.
- Select File > Open Data Folder.
- Open MQL4 > Indicators.
- Copy the indicator file into the Indicators folder.
- Restart MT4, or right-click the Navigator panel and select Refresh.
- Drag TriZone Semafor Pro MT4 onto a chart.
- Select a preset. PRESET_AUTO is a practical starting point for manual chart use.
- 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
- Start with L3 structure to define the broader context.
- Use L2 to assess the medium swing.
- Use L1 for timing rather than as a standalone trend definition.
- Check the nearest demand, supply, support and resistance.
- Use BOS for continuation context and CHoCH for possible structural change.
- 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
- Test across different market regimes.
- Separate optimization data from validation data.
- Include spread, commission and slippage in EA tests.
- Use Visual Mode to inspect when pivots actually become available.
- 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.


