XOOMAR

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

GET
/api/markets/signals/{slug}

Signal for a single asset (btc, eth, gold, eurusd, etc.)

GET
/api/markets/signals

All 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:

  1. Open MetaTrader → Tools → Options → Expert Advisors
  2. Check "Allow WebRequest for listed URL"
  3. Add: https://xoomar.com
  4. Click OK. Restart the EA.

Download MQL Include File

Drop this in your MQL4/Include or MQL5/Include folder:

Download XoomarSignals.mqh

Sample 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.

1

Layer collection

The latest news sentiment, funding percentile (30-day window), long/short ratio, and COT index are read for the asset.

2

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.

3

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:

FieldTypeDescription
assetobject{ slug, name, kind }
newsobject{ score, articleCount, window } - AI news sentiment layer
crowdobject{ fundingRate, fundingPercentile30d, longShortRatio, score } - crowd positioning layer
institutionalobject{ cotNetPosition, cotIndex1y, reportDate, score } - COT layer
macroobject{ fearGreed } - market regime context
compositenumber | nullBlended signal, -1 (bearish) to +1 (bullish); null when no layer has data
updatedAtobjectPer-layer freshness timestamps
disclaimerstringWe 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?
Yes. We provide an MQL include file compatible with both. Use WebRequest to call the API after whitelisting xoomar.com in Expert Advisors settings.
How is the composite signal calculated?
Weighted blend: news 50%, crowd (funding percentile) 25%, institutional (COT index) 25%. Missing layers are renormalized. Range -1 to +1.
Is this a buy/sell signal?
No. It is a quantitative sentiment filter. Use it to confirm or reject entries from your own strategy. Not financial advice.
How fast does the signal change?
News layer updates hourly. Crowd layer changes with each funding interval (8h). Institutional layer is weekly (COT). The API caches 60s.
What slugs are available?
btc, eth, sol, xrp, bnb, doge, sp500, nasdaq, russell, gold, silver, oil, copper, eurusd, usdjpy, gbpusd, audusd. Use /api/markets/signals for the full list.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.