Plugin · cTrader
FX Strength Pulse
See which currencies are moving.
Currency strength, pair comparison and multi-timeframe context.
Free · Pro from $29 Confirm the current price in Store.
Enlarge screenshot ↗Built for your workflow
For FX traders who want to compare currencies before choosing a pair.
Explore 28 pairs in the Pro heatmap.
Follow strength, momentum and alignment.
See what you will use.
Complete screenshots. Open any image to inspect it at full size.
Choose your edition.
Start with the essentials.
A single-timeframe ranking and strength alerts.
Go further in your workflow.
Up to four timeframes, a pair heatmap and momentum tracking.
Full feature comparison
Free vs PRO — clear differences
FREE is a complete, useful tool on its own (not a trial). PRO adds the multi-timeframe view, the impulse tracker, two more alert types and full alert history. Same engine, same code path, same plugin architecture.
| Capability | FREE | PRO |
|---|---|---|
| Dashboard | ||
| Chip-up tab in cTrader (Asp.AddTab) — always one click away | Yes | Yes |
| Currency ranking of 8 majors | Yes | Yes |
| Timeframes simultaneous | 1 (configurable) | up to 4 simultaneously |
| Top signal pairs (gap × confluence) | top 5 | top 3–20 (configurable) |
| Per-TF gap columns in signal table | — | Yes |
| Cross-TF confluence % | — | Yes |
| Multi-TF heatmap (28 pairs × N timeframes) | — | Yes |
| Impulse tracker (ROC of strength + acceleration) | — | Yes |
| Settings tab in dashboard | — | Yes |
| Alerts | ||
| Overbought / Oversold (rising-edge, deduplicated) | Yes | Yes |
| Ranking-cross (two currencies swap position) | — | Yes |
| Impulse surge (|ROC| over threshold) | — | Yes |
| Alert history (in-panel) | last 3 (collapsed) | last 100, filterable (All / Strength / Rank / Impulse) |
| Delivery channels | Popup + Sound | Popup + Sound + Email (via cTrader SMTP) |
| Pricing | ||
| Price | Free · permanent | $29 · one-time |
Getting started
Quick usage manual
Same flow for both editions; PRO adds steps for the heatmap / impulse / extra alerts.
Install the plugin
From the cTrader Store add FX Strength Pulse (Free) or FX Strength Pulse PRO. It appears under Plugins as a cTrader tab. Open it and dock it wherever you like (right side recommended so the chart stays big).
Set your timeframe(s)
FREE: a single TF in Timeframe (default H1). PRO: up to 4 TFs in Tf1–Tf4. Defaults M15/H1/H4/D1 are the classic intraday-then-swing ladder. Scalpers → M5/M15/H1/H4. Position traders → H4/D1/W1 + a 4th blank (saves CPU). The first TF is the "primary" that drives the ranking + impulse.
Read the ranking first
Glance at the 8 bars. Which currency sits at the top (strongest) and which at the bottom (weakest)? The colour tells you whether they're extreme (≥ 70 / ≤ 30) or just leaning. PRO adds an arrow on each bar showing the impulse sign — it tells you whether the move is fresh or already tired.
Check the signal pairs
Below the ranking, the top-N pairs table shows pairs where one currency is meaningfully stronger than the other. LONG = buy the first currency / sell the second. SHORT = the inverse. Confluence < 50% means the gap is thin — ignore. PRO renders one gap column per TF so you can see which TF the divergence is widest on.
Move to the Heatmap tab PRO
Sort is by |avg gap| (default). Read horizontally first: which pairs are green across all columns? Those are the cleanest multi-TF setups. Then read vertically: which TF column has the most dark cells? That's where the action is concentrated.
Switch to Impulse when the ranking is noisy PRO
If two currencies are both at 75+ on the ranking but their impulses point in opposite directions, the move is exhausted on one and fresh on the other. The impulse tab makes this obvious at a glance.
Configure your alerts
FREE: leave Alert: strength extremes = true; tune the two thresholds. PRO: start with strength + ranking-cross on (the defaults), impulse off. Use the Alerts tab to spot-check what's firing. If the alert log fills up with ranking-cross noise, raise MinGap — weak ranking swaps don't add info.
Set delivery channels
Popup + Sound work out of the box on both editions. PRO adds Email — currently a v1.1 deliverable; for now, the plugin logs the would-be email payload to the cTrader log so you can verify the format (EMAIL ALERT [type] subject: msg).
Read the Settings tab PRO
PRO has a dedicated Settings tab that mirrors every parameter currently active. Use it to confirm what the numbers mean after any edit. FREE doesn't have this tab — refer to the cTrader instance parameter list.
Watch for market-closed
If the dashboard shows MARKET CLOSED, the market hasn't opened for the new bar (weekend, holiday). The bars still display the last value; alerts stay quiet. The chip disappears automatically once a fresh bar arrives.
Configuration
Parameter reference from the product documentation. Check names and options against your installed edition.
Configurable parameters — full reference (21)
Every parameter exposed by the plugin. Six groups. Tags FREE and PRO mark which editions expose the parameter. Counts audited against the source on 2026-06-29.
1 · Timeframes 4 params · PRO PRO
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Primary TF (Ranking + Impulse) | H1 | any cTrader TF | The TF that drives the ranking bars and the impulse tracker. Other TFs show up in the heatmap and as extra columns in the signal table but don't affect the ranking order. |
| 2nd TF | H4 | any cTrader TF | First cross-TF check. Set it to one step higher than the primary (e.g. primary H1, 2nd H4) for the classic intraday-then-swing confirmation. |
| 3rd TF | D1 | any cTrader TF | Second cross-TF check. D1 (daily) is the typical "where is this currency going structurally?" anchor. |
| 4th TF (blank = skip) | M15 | any cTrader TF · blank to disable | Fourth and final TF. Set to M5/M15 for scalpers, to W1 for position traders, leave blank to keep only 3 TFs (lower CPU). |
2 · Calculation 7 params (5 in FREE)
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Timeframe FREE | H1 | any cTrader TF | The single TF all strength scores are computed on. M5 = scalper. H1/H4 = intraday swing. D1/W1 = position. Lower TF = noisier; higher TF = slower. |
| Strength period (bars) | 50 | 10 – 200 | Per-pair return lookback, applied to every active TF. 50 on H1 ≈ 2 trading days; 200 on H1 ≈ 8 days. Shorter = more reactive (and noisier). Longer = smoother but lags. |
| ATR period | 14 | 5 – 50 | ATR window used to normalise returns. 14 is the conventional Wilder ATR. Larger = more smoothing of the volatility denominator. |
| Min-max window | 150 | 50 – 500 | How many bars of raw-score history feed the [0..100] normalisation. 150 on H1 ≈ 6 trading days; 500 on H1 ≈ 3 weeks. Larger = the 0/100 extremes are harder to reach. |
| Impulse period (bars) PRO | 5 | 1 – 30 | Lookback for the ROC that produces impulse. 5 on H1 ≈ 5 hours. Higher = smoother, slower signal. Lower = noisier, faster signal. |
| Min gap for signal pairs | 25 | 10 – 60 | Minimum strength gap (base − quote) to surface a pair in the top-N. Lower = noisier signals. Higher = only the cleanest setups. |
| Top pairs to show PRO | 8 | 3 – 20 | How many of the ranked pairs the signal table renders. 8 covers the most useful setups; 20 only makes sense on bigger screens. FREE is fixed at top 5. |
3 · Thresholds 3 params (1 in FREE)
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Extreme low (oversold) | 20 | 5 – 40 | Below this strength → OVERSOLD alert fires (rising edge). Error popup on PRO. |
| Extreme high (overbought) | 80 | 60 – 95 | Above this strength → OVERBOUGHT alert fires (rising edge). Partial popup on PRO. |
| Impulse threshold PRO | 15 | 5 – 40 | |impulse| above this → impulse surge alert. 15 means a 15-unit strength change over the ImpulsePeriod bars. Lower = more alerts. |
4 · Alert types 3 params (1 in FREE)
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Alert: strength extremes | true | bool | Master switch for the overbought/oversold rising-edge alert. Present in both editions. |
| Alert: ranking cross PRO | true | bool | Fires when two currencies swap position in the ranking (e.g. EUR moves from rank 3 to rank 2, displacing GBP). Rising-edge only. |
| Alert: impulse surge PRO | false | bool | Fires when |impulse| crosses the ImpulseThreshold. Off by default because it can be chatty on M5/M15. Turn on for M30/H1+ swing traders. |
5 · Alert delivery 3 params · all PRO PRO
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Popup alerts PRO | true | bool | Show cTrader popup notification on each alert. OVERSOLD fires Error (red), OVERBOUGHT fires Partial (orange). FREE always fires popups (not configurable). |
| Sound alerts PRO | true | bool | Play cTrader notification sound. NegativeNotification for OVERSOLD, PositiveNotification for OVERBOUGHT and the other two alert types. FREE always plays sounds (not configurable). |
| Email alerts (uses cTrader email settings) PRO | false | bool | Routes alerts through cTrader's configured SMTP. Currently logged + Print-stubbed (v1.0); wired-up outgoing email is on the v1.1 roadmap. Not present in FREE. |
6 · Other 1 param · PRO PRO
| Parameter | Default | Values | What it does |
|---|---|---|---|
| Refresh interval (seconds) | 5 | 3 – 60 | How often the dashboard re-pulls bars and re-renders. 5s is the sweet spot. 3s makes the heatmap feel live; 30s+ lowers CPU and cTrader API pressure. FREE is fixed at 5s. |
Edition totals (audited 2026-06-29 from source): FREE exposes 8 parameters — 5 in Settings (Timeframe, Strength period, ATR period, Min-max window, Min gap) + 3 in Alerts (strength extremes on/off, Extreme low, Extreme high). Popup and Sound are always on in FREE — not user-configurable. PRO exposes 20 parameters across the same 6 groups (4 Timeframes + 6 Calculation + 3 Thresholds + 3 Alert types + 3 Alert delivery + 1 Other).
How the calculation works
How the calculation works
No black box. Same engine for FREE and PRO; PRO just runs it on more timeframes in parallel and combines the results.
Step 1 · ATR-normalised returns per pair
For each of the 7 pairs where a currency participates (e.g. for EUR: EURUSD, EURGBP, EURJPY, EURAUD, EURCAD, EURCHF, EURNZD), take the log-style return over Period bars and divide by the ATR(14) of that pair at the same bar: ret = (close[t] − close[t − Period]) / close[t − Period] / ATR[t]. If the currency is the quote in the pair, the sign is flipped. Dividing by ATR neutralises the fact that GBPJPY moves more than EURUSD per bar — without this step, GBPJPY would dominate the ranking.
Step 2 · Raw strength score per currency
Average the 7 (or fewer, if some pairs are missing on the broker) normalised returns. At least 2 valid pairs are required for a currency to score — otherwise it returns NaN and is excluded from the ranking. This is what prevents a single rogue broker quote from poisoning a currency.
Step 3 · Rolling min-max normalisation to [0..100]
For the chosen MinMaxWindow (default 150 bars), look back at the raw-score history of the same currency and map: minimum historical raw → 0, maximum → 100, current → in between. 70 EUR and 70 GBP mean the same thing: both are near their personal historical high. A flat market yields 50 for everyone; a trending market yields 0 for the weakest and 100 for the strongest.
Step 4 · Pair gap and confluence PRO scales this
A pair's gap is strength(base) − strength(quote). FREE: with 1 TF, confluence is 1.0 if |gap| ≥ MinGap else 0.0. PRO: confluence is the fraction of active timeframes (up to 4) where |gap| ≥ MinGap — so a pair at 4/4 alignment is qualitatively different from 1/4. Top pairs are sorted by |gap| × confluence on both editions.
Step 5 · Impulse and acceleration PRO
Impulse at bar t for a currency = strength[t] − strength[t − ImpulsePeriod]. Acceleration = impulse at t minus impulse at t − 1. Both are bounded to the 0..100 scale of the parent strength, so "EUR impulse +12" means EUR has gained 12 strength-units over the ImpulsePeriod bars. Only PRO renders this; FREE computes impulse implicitly but doesn't show a dedicated tab.
Step 6 · Alerts (rising-edge, deduplicated)
FREE fires one alert type: overbought/oversold rising-edge on each currency. PRO adds two more: ranking-cross (a currency swaps position with another in the ranking) and impulse surge (|ROC| above threshold). All three use the same rising-edge logic, so a currency that stays OVERBOUGHT for 10 bars fires one alert, not ten. The flag resets when the currency drops back inside the band, allowing a new alert to fire later.
Step 7 · Render to WebView
C# builds a JSON snapshot (currencies, pairs with per-TF gaps, heatmap array, impulse array, alerts array, settings snapshot) and pushes it via ExecuteScript("window.fxRender({…})"). The WebView's JS re-renders the active view without losing scroll position. Both editions use the same render pipeline.
How to read the numbers
How to read the numbers
A field guide. Items tagged PRO only apply to the PRO edition.
| What you see | Range | Meaning |
|---|---|---|
| Strength (ranking bar) | 0 – 100 | Where the currency sits in its own recent history. 50 = typical. ≥ 70 = near recent high. ≤ 30 = near recent low. NOT a forecast. |
| Bar colour | green / grey / orange / red | ≥ 70 strong green · 58–70 muted green · 42–58 neutral · 30–42 weak orange · < 30 weak red. Visual scan, not a signal. |
| Signal pair (LONG / SHORT) | gap × confluence | The base currency is stronger than the quote by at least MinGap. LONG = buy base / sell quote. Use your own entry logic — the tool just tells you which pairs have the cleanest setup. |
| Confluence % PRO | 0% – 100% | What fraction of active timeframes agree on the gap. On FREE there's only 1 TF, so confluence is either 0% (no signal) or 100% (gap ≥ MinGap). On PRO it can be anywhere from 0% to 100% across the 4 TFs you selected. |
| Gap (heatmap cell, signal-table cell) PRO | −100 .. +100 | strength(base) − strength(quote) on that TF. Positive = base strong vs quote (LONG setup). Negative = base weak vs quote (SHORT setup). The bigger the magnitude, the cleaner the divergence. |
| |Avg gap| PRO | 0 – 100 | Mean of |gap| across active TFs. Sort key for the heatmap. Pairs with high |avg gap| are the ones where the divergence is consistent. |
| Impulse (track bar) PRO | −100 .. +100 | Strength change over the ImpulsePeriod bars on the primary TF. Right of centre = rising. Bar fills up to 48% width on each side, scaled to the panel's max |impulse|. |
| Acceleration (↑ / · / ↓) PRO | −100 .. +100 | ROC of impulse. ↑ = impulse is itself rising (accelerating). ↓ = impulse is falling (decelerating). · = roughly unchanged. |
| Alert log | FREE: last 3 · PRO: last 100 filterable | Newest first. Each alert fires once per crossover. PRO supports type filters: All / Strength / Rank / Impulse. |
| Market-closed chip | on / off | When the latest bar of EURUSD is more than 2 × timeframe hours old, the chip turns on and shows the last bar's day + time. Useful if you opened the dashboard over the weekend. |


