Indicateur

Fathom Flow

Une poussée de volume fait-elle vraiment avancer le prix ? Suivez les impulsions et les zones d’absorption pour remettre chaque mouvement en contexte.

Combine quatre lectures de l'order flow : les accélérations (fenêtres d'une seconde au volume exceptionnel), les épuisements (retournement du delta cumulé après un pic), les ralentissements (profil des derniers ticks) et les absorptions (une consolidation suivie d'une sortie, qui pose des niveaux de contrôle et d'extrême projetés). Chaque dessin est publié à la clôture de sa barre, republié à chaque changement d'état, puis devient définitif quand il ne peut plus changer. Le calcul repart à zéro chaque semaine.

Identifiant
flow-tracker
Objets reçus
drawing
Calcul
Depuis le début de la semaine
Coût sur l’historique
1 compute unit par trade

S’abonner

Les mêmes params fonctionnent en temps réel, sur l’historique et en export. Ceux que vous omettez prennent leur valeur par défaut.

Message subscribe
{
  "t": "subscribe",
  "sub": "flow-tracker",
  "instrument": "NQ.front",
  "indicator": "flow-tracker",
  "params": {
    "absorption": "medium",
    "acceleration": "medium",
    "exhaustion": "medium",
    "levelMode": "conservative",
    "projectionBars": 10,
    "slowdown": "medium",
    "timeframe": 60
  },
  "mode": "live",
  "from": "live"
}

Paramètres

Dès qu’un paramètre s’écarte de sa valeur par défaut, la subscription compte comme une configuration personnalisée. Une nouvelle valeur peut demander de préparer un nouveau calcul (status warming).

ParamètreTypeDéfautValeurs possiblesUnitéDescription
absorptionchoicemediumweak · medium · strong—Sensibilité des absorptions.
accelerationchoicemediumweak · medium · strong—Sensibilité des accélérations (fenêtres d'une seconde).
exhaustionchoicemediumweak · medium · strong—Sensibilité des épuisements.
levelModechoiceconservativeconservative · medium · aggressive—Placement des niveaux de contrôle et d'extrême.
projectionBarsinteger101 à 1 000barresDurée de projection des niveaux, en barres.
slowdownchoicemediumweak · medium · strong—Sensibilité des ralentissements.
timeframeinteger6015 · 60 · 300—Durée des barres, en secondes : 15, 60 ou 300.

Objets reçus

Chaque objet garde le même id d’une mise à jour à l’autre. Ses données sont dans le champ data. Les prix sont en ticks : multipliez-les par le tick size de l’instrument (GET /v1/instruments) pour obtenir des points.

drawing mis à jour en continu

Dessin ; provisoire tant qu'il peut changer.

Format de l’id : <kind>:<weekStart>:<ordinal>. Tant qu’il évolue, l’objet est envoyé avec final: false, et chaque nouvelle version remplace entièrement la précédente. Sa dernière version porte final: true.

ChampTypeUnitéPrésentDescription
kindstring · acceleration | exhaustion | slowdown | control | extreme—toujoursType : accélération (rectangle), épuisement et ralentissement (flèches), contrôle et extrême (lignes).
activeboolean—parfoisRectangle ou ligne encore projeté.
barstringtimestamp (ns)toujoursDébut de la barre d'ancrage.
endnumberbarresparfoisFin du dessin, en barres depuis la barre d'ancrage ; présent pour les rectangles et lignes terminés.
highintegerticksparfoisHaut d'un rectangle.
labelstring · AC | PC | AE | PE—parfoisLigne : contrôle (C) ou extrême (E), issu de l'absorption (A) ou du prix (P).
lowintegerticksparfoisBas d'un rectangle.
priceintegerticksparfoisPrix d'une flèche ou d'une ligne.
sidestring · buy | sell—parfoisLigne : côté du delta du groupe absorbé.
startnumberbarrestoujoursDébut du dessin, en barres depuis la barre d'ancrage.
upboolean—toujoursSens haussier.
variantinteger—parfoisÉpuisement : 0 s'il est détecté sur les volumes, 1 sur les nombres de trades.
visibleboolean—toujoursDessin affiché ; un ralentissement peut être masqué puis réaffiché.

Warming du calcul

Le calcul repart de zéro au début de chaque semaine (samedi 00:00 UTC). Pendant la fermeture du week-end, il conserve l’état de la semaine écoulée ; les objets encore ouverts sont finalisés au premier trade de la nouvelle semaine. Si personne n’utilise encore vos paramètres, le serveur recalcule d’abord la semaine depuis son début (status warming), puis passe en direct (status live).

L’historique suit les mêmes règles : une requête sur une période passée renvoie exactement ce que le temps réel a publié.

Exemples de messages

Messages reçus avec les paramètres de la subscription ci-dessus. Sur le WebSocket, chaque message contient aussi sub et cursor.

Version finale
{
  "t": "upsert",
  "id": "slowdown:2026-09-19:732",
  "final": true,
  "ts": "1790208060524236599",
  "data": {
    "kind": "slowdown",
    "bar": "1790207760000000000",
    "start": 0,
    "price": 123043,
    "up": false,
    "visible": false
  }
}
Version en cours
{
  "t": "upsert",
  "id": "slowdown:2026-09-19:733",
  "final": false,
  "ts": "1790208060524236599",
  "data": {
    "kind": "slowdown",
    "bar": "1790208000000000000",
    "start": 0,
    "price": 123024,
    "up": false,
    "visible": false
  }
}
Version finale
{
  "t": "upsert",
  "id": "exhaustion:2026-09-19:737",
  "final": true,
  "ts": "1790209200076693991",
  "data": {
    "kind": "exhaustion",
    "bar": "1790209140000000000",
    "start": 0,
    "price": 122953,
    "up": true,
    "visible": true,
    "variant": 0
  }
}
Version en cours
{
  "t": "upsert",
  "id": "control:2026-09-19:741",
  "final": false,
  "ts": "1790209920141869579",
  "data": {
    "kind": "control",
    "bar": "1790209860000000000",
    "start": 0,
    "price": 122927,
    "up": true,
    "visible": true,
    "active": true,
    "label": "AC",
    "side": "sell"
  }
}
Version en cours
{
  "t": "upsert",
  "id": "extreme:2026-09-19:742",
  "final": false,
  "ts": "1790209920141869579",
  "data": {
    "kind": "extreme",
    "bar": "1790209860000000000",
    "start": 0,
    "price": 122913,
    "up": true,
    "visible": true,
    "active": true,
    "label": "AE",
    "side": "sell"
  }
}
Version finale
{
  "t": "upsert",
  "id": "control:2026-09-19:741",
  "final": true,
  "ts": "1790210520086671473",
  "data": {
    "kind": "control",
    "bar": "1790209860000000000",
    "start": 0,
    "end": 10,
    "price": 122927,
    "up": true,
    "visible": true,
    "active": false,
    "label": "AC",
    "side": "sell"
  }
}

Schémas JSON

Pour valider ou typer vos données : les schémas JSON des paramètres et de data, aussi disponibles par GET /v1/indicators. Le SDK peut en générer les types.

Schéma des paramètres
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://fathomcharts.com/schemas/flow-tracker/params.json",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "absorption": {
      "description": "Sensibilité des absorptions.",
      "type": "string",
      "default": "medium",
      "enum": [
        "weak",
        "medium",
        "strong"
      ]
    },
    "acceleration": {
      "description": "Sensibilité des accélérations (fenêtres d'une seconde).",
      "type": "string",
      "default": "medium",
      "enum": [
        "weak",
        "medium",
        "strong"
      ]
    },
    "exhaustion": {
      "description": "Sensibilité des épuisements.",
      "type": "string",
      "default": "medium",
      "enum": [
        "weak",
        "medium",
        "strong"
      ]
    },
    "levelMode": {
      "description": "Placement des niveaux de contrôle et d'extrême.",
      "type": "string",
      "default": "conservative",
      "enum": [
        "conservative",
        "medium",
        "aggressive"
      ]
    },
    "projectionBars": {
      "description": "Durée de projection des niveaux, en barres.",
      "type": "integer",
      "default": 10,
      "minimum": 1,
      "maximum": 1000
    },
    "slowdown": {
      "description": "Sensibilité des ralentissements.",
      "type": "string",
      "default": "medium",
      "enum": [
        "weak",
        "medium",
        "strong"
      ]
    },
    "timeframe": {
      "description": "Durée des barres, en secondes : 15, 60 ou 300.",
      "type": "integer",
      "default": 60,
      "enum": [
        15,
        60,
        300
      ]
    }
  }
}
Schéma du champ data
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://fathomcharts.com/schemas/flow-tracker/data.json",
  "title": "drawing",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "kind": {
      "description": "Type : accélération (rectangle), épuisement et ralentissement (flèches), contrôle et extrême (lignes).",
      "type": "string",
      "enum": [
        "acceleration",
        "exhaustion",
        "slowdown",
        "control",
        "extreme"
      ]
    },
    "active": {
      "description": "Rectangle ou ligne encore projeté.",
      "type": "boolean"
    },
    "bar": {
      "description": "Début de la barre d'ancrage.",
      "type": "string",
      "pattern": "^[0-9]+$"
    },
    "end": {
      "description": "Fin du dessin, en barres depuis la barre d'ancrage ; présent pour les rectangles et lignes terminés.",
      "type": "number"
    },
    "high": {
      "description": "Haut d'un rectangle.",
      "type": "integer"
    },
    "label": {
      "description": "Ligne : contrôle (C) ou extrême (E), issu de l'absorption (A) ou du prix (P).",
      "type": "string",
      "enum": [
        "AC",
        "PC",
        "AE",
        "PE"
      ]
    },
    "low": {
      "description": "Bas d'un rectangle.",
      "type": "integer"
    },
    "price": {
      "description": "Prix d'une flèche ou d'une ligne.",
      "type": "integer"
    },
    "side": {
      "description": "Ligne : côté du delta du groupe absorbé.",
      "type": "string",
      "enum": [
        "buy",
        "sell"
      ]
    },
    "start": {
      "description": "Début du dessin, en barres depuis la barre d'ancrage.",
      "type": "number"
    },
    "up": {
      "description": "Sens haussier.",
      "type": "boolean"
    },
    "variant": {
      "description": "Épuisement : 0 s'il est détecté sur les volumes, 1 sur les nombres de trades.",
      "type": "integer"
    },
    "visible": {
      "description": "Dessin affiché ; un ralentissement peut être masqué puis réaffiché.",
      "type": "boolean"
    }
  },
  "required": [
    "kind",
    "bar",
    "start",
    "up",
    "visible"
  ]
}