Free Trading Signals API for MT4, MT5 & Bots
Composite trading signals from news sentiment, crowd positioning, and institutional flows. Designed for Expert Advisors, Python scripts, and trading bots. No API key. Open CORS. 30 req/min.
Endpoints
/api/markets/signals/{slug}Signal for a single asset (btc, eth, gold, eurusd, etc.)
/api/markets/signalsAll signals in one request (for multi-market scanning bots).
Use From an Expert Advisor (MT4/MT5)
MQL's WebRequest function requires URLs to be whitelisted first:
- Open MetaTrader → Tools → Options → Expert Advisors
- Check "Allow WebRequest for listed URL"
- Add:
https://xoomar.com - Click OK. Restart the EA.
Download MQL Include File
Drop this in your MQL4/Include or MQL5/Include folder:
Download XoomarSignals.mqhSample EA Filter
#include <XoomarSignals.mqh>
void OnTick() {
// Your normal MA crossover logic
bool maLong = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)
> iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
// Filter: skip if Xoomar composite says strong bearish
double composite = XoomarGetComposite("btc");
if(maLong && composite < -0.3) {
// Conditions say long but sentiment is deeply bearish - skip
return;
}
// ... proceed with your entry logic
}Examples
curl
curl https://xoomar.com/api/markets/signals/btc
Python
import requests
r = requests.get("https://xoomar.com/api/markets/signals/btc")
signal = r.json()["data"]
print(f"BTC composite: {signal['composite']}")
print(f"News: {signal['news']['score']}, Crowd: {signal['crowd']['score']}")Honest Limits
- Data granularity is minute/hour scale. Not for HFT or sub-minute scalping.
- Signals refresh hourly (news) and every 8 hours (funding, COT weekly).
- 30 req/min per IP. Cache aggressively on your side.
- This is a sentiment filter, not a directional prediction. Use with your own strategy.
Main Features
- ✓One composite signal from -1 to +1 per asset, blending news, crowd, and institutional layers with documented weights.
- ✓Full layer transparency: every response carries the sub-scores and the raw inputs (funding percentile, COT index, article counts) that produced the composite.
- ✓Designed for machines: stable field names, numeric types, per-layer freshness timestamps, and a 60-second cache.
- ✓Free MT4/MT5 include file (XoomarSignals.mqh) for wiring signals into MetaTrader EAs.
- ✓Blend math is unit-tested and was verified by recomputing every published composite from its layers: zero mismatches.
How It Works
Signals are computed on request from the freshest layer data, cached 60 seconds.
Layer collection
The latest news sentiment, funding percentile (30-day window), long/short ratio, and COT index are read for the asset.
Scoring
Each layer maps onto a -1 to +1 score. Crowd scoring is contrarian at extremes: funding above its 90th percentile reads as crowded, not bullish.
Composite
Weights are news 0.5, crowd 0.25, institutional 0.25, renormalized across available layers. The response includes everything needed to recompute it yourself.
Real Example
Request
curl "https://xoomar.com/api/markets/signals/btc"
Response (captured live, trimmed)
{
"data": {
"asset": {
"slug": "btc",
"name": "Bitcoin",
"kind": "crypto"
},
"news": {
"score": null,
"articleCount": 0,
"window": "24h"
},
"crowd": {
"fundingRate": 2.446e-05,
"fundingPercentile30d": 32.22,
"longShortRatio": null,
"score": -0.3556
},
"institutional": {
"cotNetPosition": -6558,
"cotIndex1y": 98.08,
"reportDate": "2026-06-02",
"score": 0.9615
},
"macro": {
"fearGreed": 12
},
"composite": 0.303,
"updatedAt": {
"news": "2026-06-12T15:00:03.798Z",
"crowd": "2026-06-12T08:00:00.000Z",
"institutional": "2026-06-02"
},
"disclaimer": "Informational only. Not financial advice."
},
"updatedAt": "2026-06-12T15:08:35.469Z",
"source": "xoomar.com",
"docs": "https://xoomar.com/markets/api"
}A real subtlety on display: news score is null here (quiet news day for BTC), so the composite renormalizes over crowd and institutional layers only.
What People Build With This
EA trade filters
MetaTrader EAs read the composite before entering: skip longs when the signal is below -0.5. The .mqh include handles the HTTP and parsing.
Python strategy overlays
Add the composite as a feature column in a backtest dataframe; the layer sub-scores let you test which layer carries the alpha.
Alert pipelines
Cron a check for signals crossing zero or hitting extremes, then push to Telegram or Discord.
Position sizing
Some users scale position size by signal strength rather than gating entries, using composite magnitude as conviction.
Pricing and Fair Use
Free. No API key, no signup, no credit card. We rate limit per IP to keep the service fast for everyone; a 429 response carries a Retry-After header telling you exactly when to retry. Cache responses on your side where you can. If you are building something that needs guaranteed volume, contact us first instead of hammering the endpoint.
Response Shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an object with these fields:
| Field | Type | Description |
|---|---|---|
| asset | object | { slug, name, kind } |
| news | object | { score, articleCount, window } - AI news sentiment layer |
| crowd | object | { fundingRate, fundingPercentile30d, longShortRatio, score } - crowd positioning layer |
| institutional | object | { cotNetPosition, cotIndex1y, reportDate, score } - COT layer |
| macro | object | { fearGreed } - market regime context |
| composite | number | null | Blended signal, -1 (bearish) to +1 (bullish); null when no layer has data |
| updatedAt | object | Per-layer freshness timestamps |
| disclaimer | string | We analyze, we never advise |
The list endpoint /api/markets/signals returns this object for every covered asset. Layers are renormalized when one is missing, so composite is always comparable.
Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication, no API key, no signup. Attribution is appreciated: xoomar.com/markets.
Frequently Asked Questions
Can I use this in MT4 and MT5?
How is the composite signal calculated?
Is this a buy/sell signal?
How fast does the signal change?
What slugs are available?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.