This forex signal provider website turns live MetaTrader 4 market events into timestamped BUY, SELL, or NEUTRAL signal cards without placing trades. An MQL4 bridge reads configured symbols and timeframes, applies the approved rule set, signs each payload, and sends it to the web application. The responsive forex signal website then validates, stores, and broadcasts accepted signals to connected browsers in real time.
Live market analysis is useful only when every signal carries its source, timing, rule version, and current status.
From MT4 Tick to Browser Card
The system separates market analysis from presentation. MT4 remains the source of broker quotes and indicator calculations; the web layer handles access control, history, filtering, and concurrent viewers. This prevents a slow dashboard request from blocking the terminal and makes signal delivery independently testable.
- Capture: the Expert Advisor receives a new tick or completed candle, checks symbol, timeframe, spread, and data freshness, then evaluates the configured conditions.
- Publish: MQL4 sends a signed JSON payload through WebRequest, including direction, entry reference, stop reference, target reference, confidence band, and rule version.
- Validate: the API rejects expired timestamps, invalid signatures, unknown symbols, duplicate event IDs, and malformed price levels before writing an immutable signal record.
- Broadcast: authenticated viewers receive the accepted record over a live stream, while reconnecting browsers request any missed signals from the history endpoint.
Core Features
| Feature | Description |
|---|---|
| MT4 Market Bridge | Disconnected quote sources create stale or contradictory cards. The MQL4 Expert Advisor reads broker-side prices, stamps each event in UTC, and publishes only configured symbols and timeframes. |
| Rule-Based Signal Analysis | Opaque calls are difficult to review. Every signal records the indicator inputs, threshold checks, spread filter, candle state, and rule version that produced the direction. |
| Duplicate and Stale-Data Guard | Rapid ticks can produce repeated alerts or revive an expired setup. Event IDs, a configurable duplicate window, and maximum signal age prevent both cases. |
| Real-Time Signal Board | Manual page refreshes delay decisions. Connected browsers receive new cards, status changes, and cancellations immediately, with mobile layouts for compact screens. |
| Subscriber Access Controls | Public endpoints can leak feeds or invite automated abuse. Signed sessions, role checks, request limits, and audit logs follow the OWASP API Security Top 10 threat model. |
| Searchable Signal History | A fast-moving feed makes earlier context hard to recover. Users can filter by pair, timeframe, direction, rule version, and date, then inspect the complete lifecycle. |
Technology Chosen for This Workflow
| Layer | Implementation | Reason |
|---|---|---|
| Terminal connector | MT4 Expert Advisor in MQL4 | Keeps quote interpretation beside the broker feed and exposes native symbol, timeframe, spread, and indicator data. |
| Application API | FastAPI | Provides typed request validation, asynchronous streaming, and a compact OpenAPI contract for the MT4 bridge and dashboard. |
| Signal store | PostgreSQL | Preserves ordered signal history, user access records, rule versions, and indexes needed for pair and date filters. |
| Web interface | Responsive TypeScript dashboard with server-sent live updates | Supports responsive signal cards, reconnect recovery, admin filters, and clear separation between current and expired setups. |
| Edge security | TLS reverse proxy, signed payloads, and rate limits | Protects credentials in transit, limits replay attempts, and isolates public dashboard traffic from the MT4 ingestion endpoint. |
Configuration Contract
Analysis behavior is controlled through explicit settings rather than hidden constants. The delivered configuration records permitted pairs, candle intervals, maximum spread, freshness limits, duplicate suppression, and the version of the strategy rules active for each feed.
feed:
symbols: [EURUSD, GBPUSD, USDJPY]
timeframes: [M5, M15, H1]
publish_on: closed_candle
max_spread_points: 25
max_signal_age_seconds: 15
duplicate_window_seconds: 30
signals:
directions: [BUY, SELL, NEUTRAL]
require_stop_reference: true
require_target_reference: true
Project Directory
forex-signal-provider-website/
├── mt4/
│ ├── Experts/
│ │ └── SignalBridge.mq4
│ └── Include/
│ ├── SignalRules.mqh
│ └── PayloadSigner.mqh
├── api/
│ └── app/
│ ├── main.py
│ ├── config.py
│ ├── routes/
│ │ ├── signals.py
│ │ ├── auth.py
│ │ └── health.py
│ ├── services/
│ │ ├── validator.py
│ │ ├── deduplicator.py
│ │ └── broadcaster.py
│ └── models/
│ ├── signal.py
│ └── user.py
├── web/
│ └── src/
│ ├── Dashboard.tsx
│ ├── SignalCard.tsx
│ ├── SignalFilters.tsx
│ └── useSignalStream.ts
├── infra/
│ ├── docker-compose.yml
│ ├── nginx.conf
│ └── migrations.sql
├── tests/
│ ├── test_signal_contract.py
│ ├── test_auth_limits.py
│ └── test_reconnect_recovery.py
├── .env.example
└── README.md
Performance Benchmarks and Test Method
The figures below are acceptance targets, not claims about market outcomes. Tests replay signed MT4 payloads at controlled rates, measure API acceptance and browser receipt separately, and verify that retries do not create extra signal records.
| Check | Acceptance target | Method |
|---|---|---|
| Signal propagation | p95 at or below 2 seconds | Measure from accepted MT4 payload timestamp to visible browser card under the reference load. |
| Concurrent viewing | 250 active dashboard sessions | Hold live connections for 30 minutes while publishing signal and status events across three currency pairs. |
| Duplicate control | Zero duplicate records | Replay identical event IDs and timed retries inside the configured 30-second suppression window. |
| Recovery | Missed events restored within 5 seconds | Disconnect a browser, publish new records, reconnect, and compare the recovered sequence with the database order. |
Use Cases
- Publish broker-sourced signals: a research team turns MT4 indicator conditions into consistent web cards without copying levels into a CMS.
- Run several timeframe feeds: an operator separates M5, M15, and H1 setups while subscribers filter the dashboard to the horizon they follow.
- Review disputed alerts: support staff retrieve the original quote time, spread, rule version, and status changes instead of relying on screenshots.
- Control private distribution: an analyst limits live feeds to authenticated accounts while keeping delayed or archived signals available under separate permissions.
How to Publish Live Forex Signals Using the Website
Download & Set Up the Project
Download, set up, and install MT4 Signal Website to get the project running. If you hit any difficulty, contact us here.
Open the Admin Dashboard
Sign in, confirm the MT4 bridge shows Connected, and open Feed Settings to view symbols, timeframes, and rule versions.
Set the Feed Rules
Select currency pairs, candle intervals, publish mode, maximum spread, maximum signal age, and the duplicate suppression window.
Start the Live Feed
Press Start Feed. Accepted signals appear as live cards and are stored in history with timestamps, levels, and status.
Market Context and Operating Boundaries
The BIS 2025 Triennial Survey reported average OTC foreign-exchange turnover of $9.6 trillion per day in April 2025. That scale explains the need for dependable timestamping and data validation, but it does not make any individual signal reliable. The website publishes mechanical analysis and never represents a trade result as certain.
ESMA's CFD analysis found that 74–89% of retail CFD accounts typically lost money across reviewed jurisdictions. For that reason, the interface distinguishes active, expired, cancelled, and neutral states; preserves stop and target references; and avoids language that implies an assured return. It is a signal-delivery platform, not an execution engine or financial adviser.
Rule changes, custom delivery channels, deployment, and feed monitoring can be handled through Traadence's forex signal website development without changing the signal contract used by MT4 and the website.
