Indicateur

Fathom Walls

Certains niveaux tiennent, encore et encore. Repérez ceux que les acheteurs ou les vendeurs défendent à répétition.

Sur barres closes, repère un groupe d'extrêmes proches : des hauts ou des bas répétés à moins de tickGrouping ticks, sans cassure au-delà de tickBreakoutMargin. Les cellules à l'extrême doivent concentrer un volume suffisant, dominé par un côté. Au plus un signal par barre, toujours définitif. Le calcul repart à zéro chaque semaine.

Identifiant
liquidity-walls
Objets reçus
signal
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": "liquidity-walls",
  "instrument": "NQ.front",
  "indicator": "liquidity-walls",
  "params": {
    "minClusterVolume": 30,
    "minDeltaPercent": 40,
    "minPerBarVolume": 10,
    "minimumBars": 2,
    "nearnessBars": 100,
    "tickBreakoutMargin": 0,
    "tickGrouping": 4,
    "timeframe": 15
  },
  "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
minClusterVolumeinteger4000 à 10 000 000contratsVolume total que les cellules du mur doivent dépasser (seuil exclu).
minDeltaPercentinteger700 à 100%Part minimum du côté dominant dans le volume des cellules du mur.
minPerBarVolumeinteger1000 à 1 000 000contratsVolume minimum d'une cellule pour qu'elle soit retenue.
minimumBarsinteger22 à 100barresNombre minimum de cellules retenues.
nearnessBarsinteger201 à 1 000barresAncienneté maximum d'un extrême du groupe, en barres.
tickBreakoutMargininteger10 à 100ticksDépassement toléré au-delà de l'extrême du groupe de barres.
tickGroupinginteger11 à 100ticksProfondeur du mur sous ou au-dessus de l'extrême.
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.

signal envoyé terminé

Signal de la barre close barStartNs.

Format de l’id : <barStartNs>. Chaque objet est envoyé une seule fois, déjà terminé (final: true).

ChampTypeUnitéPrésentDescription
cellsinteger—toujoursNombre de cellules qui qualifient le mur.
priceintegertickstoujoursExtrême testé par la barre.
sidestring · buy | sell—toujourssell : mur vendeur au plus haut ; buy : mur acheteur au plus bas.
sideVolumeintegercontratstoujoursVolume du côté dominant dans ces cellules.
volumeintegercontratstoujoursVolume des cellules du mur.

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": "1790217915000000000",
  "final": true,
  "ts": "1790217934086470651",
  "data": {
    "price": 122988,
    "side": "sell",
    "volume": 72,
    "sideVolume": 60,
    "cells": 4
  }
}

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/liquidity-walls/params.json",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "minClusterVolume": {
      "description": "Volume total que les cellules du mur doivent dépasser (seuil exclu).",
      "type": "integer",
      "default": 400,
      "minimum": 0,
      "maximum": 10000000
    },
    "minDeltaPercent": {
      "description": "Part minimum du côté dominant dans le volume des cellules du mur.",
      "type": "integer",
      "default": 70,
      "minimum": 0,
      "maximum": 100
    },
    "minPerBarVolume": {
      "description": "Volume minimum d'une cellule pour qu'elle soit retenue.",
      "type": "integer",
      "default": 100,
      "minimum": 0,
      "maximum": 1000000
    },
    "minimumBars": {
      "description": "Nombre minimum de cellules retenues.",
      "type": "integer",
      "default": 2,
      "minimum": 2,
      "maximum": 100
    },
    "nearnessBars": {
      "description": "Ancienneté maximum d'un extrême du groupe, en barres.",
      "type": "integer",
      "default": 20,
      "minimum": 1,
      "maximum": 1000
    },
    "tickBreakoutMargin": {
      "description": "Dépassement toléré au-delà de l'extrême du groupe de barres.",
      "type": "integer",
      "default": 1,
      "minimum": 0,
      "maximum": 100
    },
    "tickGrouping": {
      "description": "Profondeur du mur sous ou au-dessus de l'extrême.",
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "maximum": 100
    },
    "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/liquidity-walls/data.json",
  "title": "signal",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "cells": {
      "description": "Nombre de cellules qui qualifient le mur.",
      "type": "integer"
    },
    "price": {
      "description": "Extrême testé par la barre.",
      "type": "integer"
    },
    "side": {
      "description": "`sell` : mur vendeur au plus haut ; `buy` : mur acheteur au plus bas.",
      "type": "string",
      "enum": [
        "buy",
        "sell"
      ]
    },
    "sideVolume": {
      "description": "Volume du côté dominant dans ces cellules.",
      "type": "integer"
    },
    "volume": {
      "description": "Volume des cellules du mur.",
      "type": "integer"
    }
  },
  "required": [
    "price",
    "side",
    "volume",
    "sideVolume",
    "cells"
  ]
}