Zum Inhalt springen

Chain-Format

Jede Chain ist JSON. Genau dieses JSON bekommst du beim Exportieren, und genau so liegen die Vorlagen im Repository. Das Format ist als JSON-Schema (Draft 2020-12) beschrieben: chain-1.json herunterladen.

Der RSI-Alarm aus Erster Alarm in drei Minuten:

rsi-unter-30.json
{
"$schema": "https://bellchain.app/schema/chain-1.json",
"name": "BTC RSI unter 30",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "r1", "type": "core.rsi", "position": { "x": 260, "y": 40 }, "settings": { "length": 14 } },
{ "id": "k1", "type": "core.compare", "position": { "x": 480, "y": 40 }, "settings": { "operator": "below", "value": 30 } },
{ "id": "t1", "type": "core.telegram", "position": { "x": 700, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "r1.in" },
{ "from": "r1.out", "to": "k1.in" },
{ "from": "k1.out", "to": "t1.in" }
]
}
Feld Pflicht Inhalt
$schema Verweis auf das Schema, für Editoren mit Autovervollständigung
name ja Name der Chain, 1 bis 120 Zeichen; erscheint in Nachrichten als {{kette}}
version ja Version des Chain-Formats, derzeit immer 1
description freier Text, bis 2.000 Zeichen
meta Angaben für die Vorlagen-Galerie: title und description je Sprache (de, en), tags, author, source
nodes ja die Bausteine, höchstens 200
edges ja die Verbindungen, höchstens 1.000

Ein Eintrag in nodes:

Feld Inhalt
id eindeutig in der Chain, beginnt mit einem Buchstaben, ohne Punkt, bis 32 Zeichen, etwa c1
type Typ des Bausteins mit Namensraum, etwa core.rsi; die Typen stehen in der Baustein-Referenz unter „Technische Angaben“
position x und y auf dem Board
settings Einstellungen als Zahl, Text oder Wahrheitswert; fehlende ergänzt Bellchain mit dem Standardwert

Eine Verbindung in edges führt von einem Ausgang zu einem Eingang, beide als node.pin: "from": "c1.close", "to": "r1.in". Mitwachsende Eingänge wie bei UND heißen in0, in1 und so weiter.

core.rsi nimmt immer die neueste Version eines Bausteins. Soll sich eine Chain nie unbemerkt ändern, hältst du die Version fest: core.rsi@1 nimmt die neueste 1.x, core.rsi@1.0.0 genau diese. Ändert sich das Rechenergebnis eines Bausteins, steigt seine Hauptversion.

Beim Laden, Importieren und Testen prüft Bellchain in dieser Reihenfolge:

  1. Struktur gegen das JSON-Schema
  2. eindeutige ids und bekannte Bausteine
  3. Einstellungen gegen die Beschreibung jedes Bausteins; fehlende werden ergänzt
  4. Verbindungen: Node und Pin existieren, Typen passen, jeder Eingang hat höchstens eine Verbindung, kein Node an sich selbst
  5. keine Kreise, dieselbe Zeiteinheit für alle Kerzen
  6. offene Pflicht-Eingänge und leere Pflichtfelder

Punkt 6 ist im Entwurf ein Hinweis und beim Aktivieren ein Fehler. Jede Meldung nennt die Stelle im JSON, etwa /nodes/2/settings/length, auf Deutsch und Englisch.

Code Bedeutet
schema Struktur passt nicht zum Schema
duplicate-node zwei Nodes mit derselben id
unknown-type Baustein unbekannt oder Version nicht vorhanden
unknown-setting, invalid-setting Einstellung gibt es nicht oder Wert ungültig
required-setting Pflichtfeld leer, etwa die Adresse eines Webhooks
unknown-node, unknown-pin Verbindung zeigt ins Leere
type-mismatch Pin-Typen passen nicht zusammen
input-taken Eingang hat schon eine Verbindung
self-loop, cycle Node an sich selbst oder Kreis
required-input, too-few-inputs Pflicht-Eingang offen oder zu wenige mitwachsende Eingänge verbunden
timeframe-mismatch Kerzen mit verschiedenen Zeiteinheiten