API sinyal yo

API piblik sa a bay sinyal yo an JSON — ou ka konekte yon bot Telegram, yon Expert Advisor, oswa yon lòt app sou li. Li gratis, san kle, read-only.

GET /api/public/signals

Paramèt (tout opsyonèl): pair, timeframe, limit.

curl "https://fxsignal.io/api/public/signals?pair=EURUSD&timeframe=15m"
curl "https://fxsignal.io/api/public/signals?limit=6&timeframe=1h"

Repons

{
  "ok": true,
  "apiVersion": "v1",
  "timeframe": "15m",
  "count": 1,
  "generatedAt": "2026-08-19T12:00:00.000Z",
  "status": {
    "marketStatus": "live",          // live | stale | market_closed | unavailable
    "dataSource": "Yahoo Finance",
    "dataService": "Yahoo Finance Chart API v8 (REST, public, no API key)",
    "dataTransport": "REST (HTTPS polling)",
    "dataTimestamp": "2026-08-19T12:00:00.000Z",
    "lastPriceUpdate": "2026-08-19T12:00:00.000Z",
    "dataAgeSeconds": 12,
    "marketState": "live",           // live | stale_data | market_closed | data_unavailable
    "dataQuality": "excellent",      // excellent | good | delayed | stale | unavailable
    "signalCalculatedAt": "2026-08-19T12:00:03.000Z",
    "freshnessLimitSeconds": 120,
    "marketOpen": true,
    "isLive": true,
    "isStale": false,
    "latencyMs": 180
  },
  "rateLimit": { "limit": 30, "remaining": 29, "windowSeconds": 60, "scope": "global" },
  "signals": [
    {
      "apiVersion": "v1",
      "signalId": "EURUSD-15m-20260819-120003",  // inik, pa duplike
      "signalStatus": "active",      // active | tp1_hit | tp2_hit | stopped | expired | cancelled
      "isNewSignal": true,
      "createdAt": "2026-08-19T12:00:03.000Z",
      "expiresAt": "2026-08-19T15:00:03.000Z",
      "closedAt": null,
      "resultPips": null,
      "resultR": null,
      "marketState": "live",
      "dataQuality": "excellent",
      "strength": "strong",          // wait | weak | standard | strong
      "strengthLabel": "STRONG BUY",
      "setupLabel": "STRONG SETUP",
      "signalPriceSource": "Yahoo Finance",
      "chartSource": "TradingView",
      "priceDeviation": {
        "referenceSource": "Frankfurter (ECB daily reference rate)",
        "referencePrice": 1.09180,
        "priceDifferencePips": 3,
        "thresholdPips": 60,
        "priceSourceMismatch": false,
        "warning": null
      },
      "pair": "EURUSD=X",
      "label": "EUR/USD",
      "timeframe": "15m",
      "price": 1.09214,
      "direction": "buy",            // buy | sell | neutral
      "action": "BUY",               // BUY | SELL | WAIT
      "confidence": 78,              // 0-100 konfliyans scoring
      "setupQuality": "good",        // wait | weak | good | strong
      "scoreBreakdown": {
        "htfAlignment": 15, "marketStructure": 14, "bosChoch": 12,
        "orderBlock": 9, "fairValueGap": 6, "liquiditySweep": 8,
        "ema": 4, "rsi": 5, "session": 5, "riskReward": 10
      },
      "higherTimeframes": [
        { "timeframe": "H4", "trend": "bullish" },
        { "timeframe": "H1", "trend": "bullish" }
      ],
      "structuralConfirmations": 4,
      "marketStructure": "bullish",
      "bosChoch": "BOS",
      "orderBlock": { "top": 1.09210, "bottom": 1.09120 },
      "fairValueGap": { "top": 1.09300, "bottom": 1.09250 },
      "liquiditySweep": { "direction": "bullish", "price": 1.09050 },
      "rsi": 57.2,
      "session": "london",
      "inKillzone": true,
      "entry": 1.09180,
      "stopLoss": 1.08920,
      "takeProfit1": 1.09540,
      "takeProfit2": 1.09800,
      "riskReward": 2.1,
      "reasons": ["bos", "order_block: 1.09120 – 1.09210", "killzone: london"],
      "signalCalculatedAt": "2026-08-19T12:00:03.000Z",
      "dataTimestamp": "2026-08-19T12:00:00.000Z",
      "status": { "marketStatus": "live", "isLive": true, "dataAgeSeconds": 12 }
    }
  ]
}

Erè

400 invalid_query | invalid_pair | invalid_timeframe
429 rate_limited        (Retry-After header)
503 market_data_unavailable  -> "Market data temporarily unavailable — retrying connection"
500 server_error

LIVE / STALE

Chak kotasyon gen yon timestamp. Si li depase 120 segond, li pa make LIVE ankò — li vin STALE, epi sinyal la tounen WAIT. Lè mache Forex la fèmen (Van. 21:00 UTC → Dim. 21:00 UTC), marketStatus = market_closed. Nou pa janm bay yon fo pri LIVE.

Scoring konfyans (100 pwen)

HTF alignment 15 | Market structure 15 | BOS/CHOCH 15
Order Block 10 | Fair Value Gap 10 | Liquidity sweep 10
EMA 5 | RSI 5 | Session/Killzone 5 | Risk Reward 10
0-49 WAIT | 50-69 weak | 70-84 good | 85-100 strong
BUY/SELL mande omwen 2 konfimasyon estriktirèl + estrikti aliyen + pa gen konfli HTF

GET /api/public/instruments

Bay lis pè ak timeframe ki disponib yo.

  • EURUSD=XEUR/USD
  • GBPUSD=XGBP/USD
  • USDJPY=XUSD/JPY
  • XAUUSD=XXAU/USD (Lò)
  • AUDUSD=XAUD/USD
  • USDCAD=XUSD/CAD
  • USDCHF=XUSD/CHF
  • NZDUSD=XNZD/USD
  • EURJPY=XEUR/JPY
  • GBPJPY=XGBP/JPY

Timeframe

  • 5mM5
  • 15mM15
  • 1hH1
  • 4hH4
  • 1dD1

Limit ak avètisman

  • Rate limit: 30 rekèt/minit pou /signals ak 60 rekèt/minit pou /instruments, pa IP (kòd 429 ak Retry-After).
  • Sinyal yo se analiz edikatif, se pa konsèy finansye. Trading gen gwo risk.
  • CORS: Access-Control-Allow-Origin: *