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.
{
"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ètre | Type | Défaut | Valeurs possibles | Unité | Description |
|---|---|---|---|---|---|
absorption | choice | medium | weak · medium · strong | — | Sensibilité des absorptions. |
acceleration | choice | medium | weak · medium · strong | — | Sensibilité des accélérations (fenêtres d'une seconde). |
exhaustion | choice | medium | weak · medium · strong | — | Sensibilité des épuisements. |
levelMode | choice | conservative | conservative · medium · aggressive | — | Placement des niveaux de contrôle et d'extrême. |
projectionBars | integer | 10 | 1 à 1 000 | barres | Durée de projection des niveaux, en barres. |
slowdown | choice | medium | weak · medium · strong | — | Sensibilité des ralentissements. |
timeframe | integer | 60 | 15 · 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.
| Champ | Type | Unité | Présent | Description |
|---|---|---|---|---|
kind | string · acceleration | exhaustion | slowdown | control | extreme | — | toujours | Type : accélération (rectangle), épuisement et ralentissement (flèches), contrôle et extrême (lignes). |
active | boolean | — | parfois | Rectangle ou ligne encore projeté. |
bar | string | timestamp (ns) | toujours | Début de la barre d'ancrage. |
end | number | barres | parfois | Fin du dessin, en barres depuis la barre d'ancrage ; présent pour les rectangles et lignes terminés. |
high | integer | ticks | parfois | Haut d'un rectangle. |
label | string · AC | PC | AE | PE | — | parfois | Ligne : contrôle (C) ou extrême (E), issu de l'absorption (A) ou du prix (P). |
low | integer | ticks | parfois | Bas d'un rectangle. |
price | integer | ticks | parfois | Prix d'une flèche ou d'une ligne. |
side | string · buy | sell | — | parfois | Ligne : côté du delta du groupe absorbé. |
start | number | barres | toujours | Début du dessin, en barres depuis la barre d'ancrage. |
up | boolean | — | toujours | Sens haussier. |
variant | integer | — | parfois | Épuisement : 0 s'il est détecté sur les volumes, 1 sur les nombres de trades. |
visible | boolean | — | toujours | Dessin 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.
{
"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
}
}{
"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
}
}{
"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
}
}{
"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"
}
}{
"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"
}
}{
"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
{
"$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
{
"$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"
]
}