FxMath Elliott Wave Pro

A complete Elliott Wave workstation: it counts waves on live MetaTrader 5 data, draws the structure, measures it against the classic guidelines, turns it into a trade plan, and — if you enable it — sends the order. This manual covers every screen, every control and every number.

Open the app

01What this is

An analysis engine plus a workstation. The counting is deterministic and auditable; the drawings, plans and orders are built on top of that one answer.

How it works

MetaTrader 5 terminal  (running, logged in)
        │  IPC — the MetaTrader5 Python package, no EA required
        ▼
  ewp/mt5feed.py    symbols · quotes · history
  ewp/pivots.py     ATR-adaptive ZigZag (5 degrees)
  ewp/rules.py      impulse / correction / triangle / combination rules
  ewp/counts.py     candidate windows, ranking, alternatives
  ewp/fib.py        projections, labels, status
  ewp/signals.py    trade plan: bias, entry, stop, targets, size
  ewp/api.py        Flask → JSON
        ▼
  static/           the dashboard (HTML + JS + chart canvas)
  ewp/trading.py    optional order execution

Nothing is uploaded anywhere. Everything runs on your machine, against your terminal.

What you get

AreaWhat it does
Wave engineFive degrees, 12 pattern codes, the three hard rules, alternatives ranking, guideline ratios.
ChartCandles or line, 21 timeframes, labels, projections, channels, higher-timeframe ghost.
Trade planBias, entry, stop at invalidation, TP1/TP2 with R:R, lot size from risk %.
ResearchScanner, multi-timeframe confluence, walk-forward backtest, journal.
WorkflowDrawings per pair, right-click menu, report export, workspaces, background alerts.
ExecutionBuy/sell from the chart, breakeven, trailing, risk caps, panic button.
Read this first if you are new to Elliott Wave Chapter 06 · Reading the count explains what the numbers on screen mean, and 17 · Glossary defines every term used in the app.

02Install and first run

Two requirements: a running MetaTrader 5 terminal, and Python with Flask plus the MetaTrader5 package.

Requirements

ComponentNotes
MetaTrader 5Any broker. Must be running and logged in — the app does not start it silently.
Python 3.10+On Linux the app runs under Wine Python, because the MetaTrader5 package is Windows-only.
Flaskpip install -r requirements.txt
MetaTrader5pip install MetaTrader5 (Windows Python only)

Launch

cd ~/Desktop/ElliottWavePro
./gui.sh        # native control panel (recommended)
./run.sh        # browser only, opens the dashboard
./start.sh      # background server, no browser
./stop.sh       # stop the background server

On Windows, the equivalent entry points are gui.bat-style shortcuts or, once packaged, FxMathElliottWavePro.exe — see BUILD_WINDOWS.md.

Check the feed before anything else

wine python -m ewp --check

It prints the package status, the account, and every terminal it found:

MetaTrader5 package : yes
terminal connected  : True (connected)
account             : {'login': 115412174, 'server': 'MetaQuotes-Demo', ...}
terminals found     :
   * MetaTrader 5                 running  C:\Program Files\MetaTrader 5\terminal64.exe
     AMarkets - MetaTrader 5      closed   C:\Program Files\AMarkets - MetaTrader 5\terminal64.exe
If it says "CSV DATA" The MetaTrader5 package is not importable in the Python that launched the app. Use wine python -m ewp (or the Windows exe). The app still runs, but only on the sample CSV files in data/.

03The control panel

A native window that finds your terminals, remembers your settings and hands them to the dashboard.

Control panel
The control panel: terminal detection, pair/timeframe/degree, engine settings, and the shareable chart link.

TERMINAL row

Every terminal64.exe found on the machine is listed with a connected or running marker. Three buttons:

ConnectAttaches the app to that terminal and reloads its symbol list. The choice is saved.
Browse…Pick a folder by hand — it scans for terminal64.exe inside it and one level below, then connects.
dropdownShows which installation is currently attached.

Pair, timeframe, degree

The SYMBOL box searches the whole broker catalogue as you type. TIMEFRAME lists all 21 timeframes. DEGREE picks the Elliott degree. Under them, a live preview of the current count:

Impulse 1-2-3-4-5 · score 93% · 5 waves complete

Engine tab

Base ATR factor, degree ratio, ATR period, minimum score, max alternatives, bars analysed, and the diagonal/complex-correction switches. These are the same parameters the dashboard exposes in Settings; changing them here changes the chart you open.

Layers tab

Chooses what the dashboard draws: structure, labels, Fibonacci, targets, channel, history, sub-waves, all degrees, plus the light/dark theme.

OPEN CHART vs Dashboard

  • OPEN CHART opens the browser with your settings encoded in the URL.
  • Dashboard opens the plain dashboard, using whatever the browser remembered.
  • The link below the buttons is the exact URL of the current configuration — copy it to bookmark or share.
The URL is the state Everything the panel sends travels as query parameters (?symbol=XAUUSD&tf=M15&degree=1&base_atr=0.7&layers=structure,labels), so a link always reproduces the exact view.

04Dashboard tour

One screen: the chart on the left, the analysis and your tools on the right.

Dashboard
The dashboard on EURUSD H1: wave labels, projections, trade plan, measure table and confluence.

Top bar

ControlBehaviour
PAIRSearch the whole broker catalogue. ☆ pins the pair to the watchlist.
Timeframe tabsM1, M5, M15, M30, H1, H4, D1, W1, MN. The ⋯ button opens the other 12 (M2…H12).
Degree stepper− coarser, + finer. Equivalent to keys 1–5.
AUTO + intervalRefreshes the chart every 3–60 s. Off = manual only.
RESCANDrops the caches and re-reads the terminal.
SCANOpens the multi-pair scanner.
Connection pillMT5 LIVE / MT5 OFFLINE / CSV DATA, with the account on hover.
⤓ · ⚙ · ?Report export, settings, help.

Chart header

Pair, timeframe badge, live tag, price and change, then the BARS field: how many bars are pulled from the terminal and analysed (200–20 000). The right side shows N bars · ATR · last bar time.

Right panel, top to bottom

CardContent
POSITIONSOnly when trades are open — side, volume, entry, live P/L, close buttons.
OBJECTSOnly when drawings exist — every line on this chart with a delete button.
ACTIVE COUNTPattern name, wave sequence, confidence bar, R1/R2/R3 chips and the DECOMPOSE button.
TRADE PLANBias badge, phase, entry/stop/TP1/TP2/R:R, size, the lot box and BUY/SELL.
WAVE MEASUREGuideline ratio table with ideal/acceptable/off marks, plus Fibonacci time targets.
CONFLUENCEscan compares H1/H4/D1/W1 and reports agreement.
DEGREESPivot count and threshold per degree; click a row to switch.
RATIOSWave ratios, invalidation, targets, swing count, data source.
ALTERNATIVESUp to 18 ranked competing counts — click one to make it active.
LAYERSEvery overlay switch, plus the HTF ghost.
WATCHLISTPinned pairs; click to load.
ALERTSEvent log from the browser and from the background monitor.

Bottom status bar

Left: a one-line summary of the structure. Right: degree, number of valid counts, data source and auto-refresh interval. The footer repeats the engine version and the disclaimer.

Light theme

Light theme
Settings → Theme switches the whole workstation, including the chart canvas.

05Timeframes and degrees

Two independent axes: the chart's timeframe, and the wave degree you are counting.

Timeframes

All 21 the terminal can build are supported: M1 M2 M3 M4 M5 M6 M10 M12 M15 M20 M30 H1 H2 H3 H4 H6 H8 H12 D1 W1 MN. Nine are tabs; the rest live behind ⋯. Every timeframe is available for every symbol — nothing has to be exported first.

Degrees

LevelNameLabelsTypical use
0Primary[1] [2] [3]…multi-month structure
1Intermediate(1) (2) (3)…weeks
2Minor1 2 3 4 5days — default
3Minutei ii iii…intraday
4Minuette(i) (ii)…fine intraday

Each degree has its own swing threshold: ATR × base × ratio^(4 − degree). A coarser degree ignores small noise; a finer one reacts to it. The DEGREES card shows how many pivots each level produced, which tells you whether a degree is too fine (hundreds of pivots) or too coarse (under ten).

Decomposing a wave

Press DECOMPOSE ↗ (or X): the app pushes the current degree, jumps one degree finer and zooms the chart to that structure's own time window. A breadcrumb appears so you can walk back.

Decomposed impulse
Minor 1-2-3-4-5 decomposed into Minute i-ii-iii-iv-v, zoomed to the structure with 12 % padding.

Two related overlays do something different:

  • SUB-WAVES — draws the best finer impulse inside the active count, in place, without navigating.
  • ALL DEGREES — every degree's ZigZag at once, faint, so you can see how they nest.
Why the finer count is not recomputed from the slice A decomposition uses the finer ZigZag over the same history and then shows the part inside the window. That keeps it consistent with the higher degree instead of inventing a context-free count.

06Reading the count

What the pattern name, the score, the ratios and the percentages actually mean.

The three hard rules

ChipRuleIf violated
R1Wave 2 never retraces more than 100 % of wave 1count rejected
R2Wave 3 is never the shortest of waves 1, 3, 5count rejected
R3Wave 4 never enters wave 1's price territory (diagonals excepted)count rejected, or promoted to diagonal

The chips on the card are coloured: green = satisfied, yellow = not applicable (diagonal / incomplete), red = broken.

Score

A 0–100 confidence built from: base pattern quality, the Fibonacci ratios (W2 38–62 %, W3 ≥ 1.618×W1, W4 24–38 %, W5 ≈ W1), alternation, and whether the structure is still unfolding. It is a ranking device between competing counts — not a probability of profit.

Alternatives

Elliott Wave is ambiguous by nature. The engine keeps up to 18 rule-compliant interpretations and ranks them; clicking one makes it active, and labels, projections and the trade plan follow. Two counts can both be “valid” — the score is how they are ordered.

Wave measure

Independent of the score, this table checks the guideline ratios:

MarkMeaning
★ idealinside the textbook band
✓ acceptableoutside the ideal band but common
✗ offthe structure does not look like this pattern

For corrections the rows are B/A and C/A; for triangles C/A, D/B, E/C; for diametrics F/A, E/B, D/C. The verdict line reads textbook, acceptable or distorted.

Fibonacci time targets

Under the table, the projected turns: 0.618, 1.0 and 1.618 times the duration of the leg that just finished. Past dates are filtered out — if everything is behind you, the card says “time targets already passed”.

Status lines

wave 3 formingleg three is live — the classic entry zone.
5 waves completethe impulse is finished; expect a correction.
5 waves (truncated 5)wave 5 failed to exceed wave 3 — a failure, and a warning.
A-B-C completecorrection finished.
no valid Elliott structurenothing passed the rules at this degree — switch degree or wait.

07Patterns

Twelve codes, each with its own validity test.

FamilyCodeValidity (summary)
ImpulseIMPULSE5 legs, R1–R3 hold, wave 3 clears wave 1's end.
DIAGONALOverlapping wave 4 with contracting legs — the only place R3 is waived.
CorrectionZIGZAGB retraces ≤ 90 % of A, C extends beyond A.
FLATB ≈ A (0.9–1.08), C returns to the start.
RUNNING_FLATAs flat, but C stops short — trend strength.
EXPANDED_FLATB exceeds A, C exceeds B.
TriangleTRIANGLEfive legs contracting toward the apex.
EXPANDING_TRIANGLElegs grow outward.
RUNNING_TRIANGLEcontracting, but B pushes past the origin of A.
CombinationWXYdouble zigzag: X retraces 25–80 % of W, Y takes out W's extreme.
WXYXZtriple three: two connectors, three same-direction legs, net travel < 60 % of the distance walked.
NeoWaveDIAMETRICseven legs, price contracts into D then expands (or the reverse), time symmetry scored.
Diametric
A live diametric on AUDUSD H4: seven labelled legs and the symmetry table F/A · E/B · D/C.
Automation is not judgement A detector that always returns an answer is lying to you. Every count here is rule-checked and ranked, but Elliott Wave remains interpretive: use the measure table and the score to judge, not the mere presence of labels.

08The trade plan

If the count is right, this is where you would act — and where you would be wrong.

Trade plan card
The plan card: bias, setup tag, entry, stop, targets, R:R, size and the order buttons.
FieldMeaning
BadgeLONG / SHORT / WAIT. WAIT means the impulse is complete — the honest answer is “wait for the correction”, not “join the trend late”.
Setup tagAdvanced GET vocabulary: type 2 (wave 3 entry, best), type 3 (late, wave 5), type 1 (wave 5 failure).
ENTRYMarket price, or the 38.2–61.8 % pullback zone of the last leg when one exists on the correct side.
STOPThe invalidation level of the count — the price that says “this wave count is wrong”.
TP1 / TP2Fibonacci thrusts, TP1 is the headline target.
R:RTP1 distance ÷ stop distance. Below 1 the card says so instead of hiding it.
SIZELots from risk % × equity ÷ (stop distance × point value), rounded to the broker's volume step and clamped by max lots.

Reading the caution line

  • reward/risk below 1 — the target is closer than the stop; a valid count with a poor trade.
  • late entry — wave 5 of a mature impulse — the trend is nearly spent.
  • impulse complete — nothing to do here; decompose into the correction instead.

On the chart

The plan draws three lines: ENTRY (blue), SL (red) and the targets (green). They always come from the same numbers as the card, so the picture and the text cannot disagree.

Sizing uses live equity The lot size follows the account equity reported by the terminal (or ?equity= if you pass one), so the same plan sizes differently on a demo and a live account — as it should.

09Drawings and objects

Trendlines, channels, Fibonacci retracements and text labels, saved per pair and timeframe.

Right click menu
Right-click anywhere on the chart for the full menu.

Drawing

ToolKeyHow
TrendlineTclick A, click B; the line extends to the latest bar.
Parallel channelCclick A, click B; the second rail snaps to the extreme price between the clicks, plus a dashed midline.
Fibonacci retracementBclick the start, click the end; 0 / 23.6 / 38.2 / 50 / 61.8 / 78.6 / 100 %.
LabelMclick a point, type the text.
Auto channelGbuilds a channel around the active count in one action.
Auto channel and HTF ghost
Auto channel from the count (yellow) with the higher-timeframe ghost (dashed grey).

Selecting and deleting

Three ways, all equivalent:

  1. Click the line — it turns red — then Del.
  2. OBJECTS card at the top of the panel lists every drawing on this pair/timeframe; × deletes one, clear all wipes them.
  3. Right-click → Delete selected object (Del) or Clear all drawings (⇧Del).
Objects card
The OBJECTS card appears only when something is drawn.
Drawings are per pair and timeframe A channel drawn on EURUSD H1 does not appear on GBPUSD H4. They live in the browser's local storage, so they survive a restart but not a browser profile wipe.

Higher-timeframe ghost

The HTF GHOST layer overlays the next-higher timeframe's close as a dashed line — M30 shows H4, H1 shows H4, H4 shows D1 — for degree context without leaving the chart.

10Research tools

Scanner, confluence, backtest, journal, report and workspaces.

Scanner

Scanner
The scanner ranks a basket of pairs across the chosen timeframes.

Comma-separate the pairs, pick the timeframe chips, set BARS (any value 200–20 000; it drives both the history fetch and the analysis window), then RUN. Every column sorts; a click opens that pair and timeframe. The progress line shows elapsed time — the first scan of a new symbol/depth is slower because the terminal has to build that history once.

Confluence

Confluence
H1 / H4 / D1 / W1 compared at the current degree.

scan runs the engine on four timeframes and reports how many agree: aligned, mostly aligned, mixed, conflicting. Click a row to jump to that timeframe. Counter-trend waves stand out immediately — e.g. “1↑ 3↓” on a bounce.

Backtest

Backtest
Walk-forward replay with no look-ahead.

At each step only the bars up to that point are visible, so the count is the one you would really have seen; the outcome is then read from the following bars, and the stop is checked before the target inside each bar (the conservative assumption). Reports trades, win rate, average R, total R, profit factor and max drawdown.

Nine trades is an anecdote, not evidence Run it over several pairs and timeframes before believing a configuration. The number is there so you can check instead of trusting.

Journal

log current plan stores the live plan with its price; the journal scores every logged plan later against what price actually did.

Report and sharing

P or the ⤓ button builds a sheet with the chart image, the plan, the measure table and the confluence verdict, and opens it in its own window. A share bar sits at the top:

ButtonWhat it does
X · Telegram · WhatsApp · Emailopens the network with the summary text pre-filled
Facebook · LinkedIn · Redditsame, but they need a public URL — greyed out while the app runs on 127.0.0.1
Copy imageputs the chart PNG on the clipboard, ready to paste into a post
Share…system share sheet with the image attached (mobile, and desktop where supported)
Download PNGsaves the chart as SYMBOL-TF-timestamp.png
Print / PDFprint dialog — “Save as PDF” for a shareable file
Report with share bar
The report sheet: share buttons, image actions, chart, plan and measure table.

Add ?report=preview to the URL to see the same sheet inside the app instead of a popup — handy on tablets and for screenshots.

Workspaces

Settings → Workspaces saves the current symbol, timeframe, degree, engine parameters, layers and risk under a name, and restores all of it later.

11Monitoring and alerts

The watcher runs inside the server, so it keeps working after you close the tab.

Settings → MONITOR sets the interval, the symbol list, the timeframe list and an optional webhook. Events fire only when something actually changes:

  • a new count appears (pattern, start or leg count changed),
  • the bias flips,
  • the count is invalidated,
  • the plan changes (entry, stop or targets moved).

They land in alerts.json, appear in the ALERTS card (polled every 20 s) and, if a webhook is set, are POSTed as {"text": "…"} — which Slack, Discord, Mattermost and n8n all accept.

{
  "monitor": {
    "enabled": true,
    "interval": 60,
    "symbols": ["EURUSD", "GBPUSD", "XAUUSD", "USDJPY"],
    "tfs": ["H1", "H4", "D1"],
    "degree": 2
  },
  "webhook": "https://hooks.slack.com/services/..."
}

The same file lives in ~/.fxmath-ewp/config.json. Disable the watcher with wine python -m ewp --no-monitor.

12Trading from the chart

Optional, off by default, and locked on live accounts until you unlock it.

Read this before enabling Execution sends real orders to your broker. Everything below is enforced server-side, but the decision to trade is yours. Trading is at your own risk and is not investment advice.

Enabling

Trading settings
Settings → TRADING: caps, breakeven, trailing, magic number and the panic button.
SettingDefaultEffect
enable executionoffmaster switch — nothing can be sent while off
allow live accountsoffsecond lock; a live account stays blocked until ticked
risk %1risk budget used for the plan's lot size
max lots1.0absolute volume cap
max positions2simultaneous positions opened by this app
daily loss100after this realised loss, new entries are blocked for the day
breakeven30 % / 5 % of TPonce price covers 30 % of the distance to TP, move the stop to entry + 5 % of that distance
trailingoff · 50 % / 25 % of TPonce price covers 50 % of the way to TP, keep the stop 25 % of the TP distance behind price
magic770413identifies this app's positions
PANIC—disables trading and closes everything it opened

Placing an order

  1. Set LOTS (pre-filled from the plan's risk sizing).
  2. Press BUY or SELL.
  3. Check the confirmation: account mode, symbol, side, volume, market entry, SL, TP and the approximate money at risk. If the count disagrees with your click, it warns you.
  4. SEND ORDER.

The stop and target come from the plan, so the order is a bracket from the start.

Managing positions

The POSITIONS card appears while something is open: side, volume, entry, live P/L and a × per position, plus close all and today's realised P/L. Breakeven and trailing are applied by a manager thread every few seconds.

Breakeven and trailing are percentages of the take profit

Both rules are expressed relative to the distance between entry and TP, so one setting works on every instrument — a point means something different on EURUSD, gold and an index, a percentage of TP does not.

TriggerAction
Breakevenprice covers trigger_pct % of the way to TP (default 30 %)stop moves to entry + offset_pct % of the TP distance (default 5 %)
Trailingprice covers trigger_pct % of the way to TP (default 50 %)stop stays trail_pct % of the TP distance behind price (default 25 %)

Example — long from 1.1000 with TP at 1.1100 (1 000 points):

  • at 1.1030 (30 %) the stop moves to 1.1005 (+5 %);
  • at 1.1050 (50 %) the stop trails at 1.1025 (25 % behind);
  • at 1.1080 it is at 1.1055 — the stop only ever tightens, never loosens.

The settings card prints the equivalent in points for the chart you are looking at, so you always know what “30 %” currently means in money.

What the app does for you

Filling modesNegotiates FOK / IOC from the symbol's filling_mode; a rejection retries the next allowed mode.
VolumesRounded to volume_step, clamped to min/max and to your max-lots cap.
StopsRefused if closer than the broker's trade_stops_level, with a readable message.
MarginChecked with order_calc_margin before sending.
AutoTradingDetected — if the terminal's AutoTrading button is off, it says so instead of returning a broker code.
AuditEvery attempt, fill and rejection is appended to orders.jsonl.

Common broker replies

MessageMeaning
10018 Market closedWeekend or holiday — nothing was sent.
10027 AutoTrading disabledClick the AutoTrading button in the terminal.
10030 Unsupported filling modeThe symbol rejects every mode the app tried.
10016 Invalid stopsSL/TP too close to price for this broker.
10019 No moneyNot enough free margin for that volume.

13Settings reference

Every switch in one table, with the effect of moving it.

Engine

SettingRangeEffect
Base ATR factor0.15–4swing threshold of the finest degree = ATR × base. Lower = more pivots.
Degree ratio1.1–4each coarser degree multiplies the threshold. Higher = degrees further apart.
ATR period3–200true-range window
Min score0–95counts below this are dropped
Max counts1–24alternatives kept per degree
Bars analysed200–20 000history window (same as the BARS field)
allow diagonalson/offaccept overlapping wave 4 structures
complex correctionson/offaccept WXY / WXYXZ / diametric combinations

Chart

Stylecandles or line
Price scalenormal or logarithmic
Themedark or light
Visible barsviewport zoom only — does not change the analysis
overlay all degrees / alert sound / desktop notificationlayer, audio and browser notification toggles

Layers

Structure · wave labels · Fibonacci · targets · count channel · history · sub-waves · all degrees · Fib grid · HTF ghost. The all button in the card header toggles the set.

14Keyboard and mouse

Chart

1–5degree
Rrescan (drop caches)
Aauto-refresh on/off
Xdecompose one degree finer
Bbacktest
Pexport report
Sscanner

Layers & drawing

F / H / Lfib · history · labels
Dall degrees
T / C / Btrendline · channel · fib
M / Glabel · auto channel
Del / ⇧Deldelete selected · clear all
? / Eschelp · close
,settings

Mouse

Right-click chartthe action menu: decompose, draw, layers, backtest, report
Click a drawingselect it (turns red)
Drag / wheelpan and zoom, as usual
Click an alternativemake that count active
Click a degree rowswitch degree

15Troubleshooting

SymptomCause and fix
Pill says MT5 OFFLINEThe terminal is closed or logged out. Start it; the app reconnects on the next refresh.
Pill says CSV DATAMetaTrader5 is not importable in the Python that runs the app — use wine python -m ewp.
symbol not offered by this brokerType a few letters in PAIR to see the real names; brokers decorate symbols (.m, _i) and the app resolves the common ones.
Chart empty for a new pairThe terminal builds history on the first request; press RESCAN once.
No valid countLower min score, switch degree, or wait for a cleaner structure.
Port already in useThe launcher picks the next free port itself, or use PORT=8080 ./run.sh.
Blank page in the browserstatic/ is missing (packaged build) — rebuild with the assets.
10018 Market closedWeekend or holiday; nothing was sent.
AutoTrading is offClick the AutoTrading button in the terminal toolbar.
live trading is lockedTick allow live accounts in Settings → TRADING.
daily loss limit hitThe cap blocks new entries until the next day; raise it deliberately if you want.
Stop moved on its ownBreakeven or trailing is enabled — that is the manager thread.
Scan very slow the first timeBuilding history for that symbol/depth; later scans are much faster.

16FAQ

Does it need an EA or indicator installed in MT5?

No. The Python bridge talks to the terminal over IPC. You need the terminal running and logged in, nothing compiled or attached.

Is it repainting?

Confirmed pivots never move: a swing is only registered after price reverses by the degree threshold, and it is placed on the bar of the actual extreme. The last pivot is explicitly marked provisional — that is the wave forming now, and it should change.

Why does the plan sometimes say WAIT?

Because the impulse is complete. The next move is the correction, and joining an exhausted trend is the most common Elliott mistake. Decompose into the ABC instead.

Can two counts both be valid?

Yes — that is the nature of the method. Alternatives are ranked and you choose; the app never pretends there is a single truth.

Does the backtest include spread and commission?

No. It measures the structural edge (R multiples on the plan's levels). Treat it as a filter, not as a P&L statement.

Can I trade a live account?

Yes, after ticking allow live accounts. Caps, the daily loss limit and the panic button still apply, and every order is audited.

Where is my data?

Nothing leaves your machine. Settings, journal, alerts and the order log live in ~/.fxmath-ewp/; drawings live in the browser's local storage.

Can it run on another platform (cTrader, NinjaTrader, IB)?

Not yet. The engine is platform-neutral; each platform needs a data adapter and, for trading, a broker adapter. MT5 is the connector that ships today.

17Glossary

TermMeaning in this app
DegreeHow large the waves are. Five levels, Primary to Minuette.
Pivot / swingA confirmed turning point in the ZigZag.
Provisional pivotThe running extreme after the last confirmed pivot — the wave forming now.
InvalidationThe price that voids the count; it becomes the stop.
Score0–100 confidence used to rank competing counts.
AlternativeA different rule-compliant reading of the same pivots.
ThrustThe projected Fibonacci end of an incomplete wave (TP1/TP2).
Truncated fifthWave 5 fails to exceed wave 3 — a failure signal.
Running flat / running triangleCorrections whose B leg exceeds the start of the pattern: trend strength.
DiametricA seven-legged diamond that contracts then expands, symmetric in time.
WXY / WXYXZCombinations of corrections joined by connector waves X.
Type 1 / 2 / 3Advanced GET setup names: failure, wave-3 entry, late entry.
R multipleProfit or loss expressed as a multiple of the risk taken.
HTFHigher timeframe — the next degree up from the chart you are on.
Magic numberAn ID attached to orders so the app recognises its own positions.