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.
Ein Beispiel
Abschnitt betitelt „Ein Beispiel“Der RSI-Alarm aus Erster Alarm in drei Minuten:
{ "$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" } ]}Die Felder
Abschnitt betitelt „Die Felder“| 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.
Versionen festhalten
Abschnitt betitelt „Versionen festhalten“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.
Wie Bellchain eine Chain prüft
Abschnitt betitelt „Wie Bellchain eine Chain prüft“Beim Laden, Importieren und Testen prüft Bellchain in dieser Reihenfolge:
- Struktur gegen das JSON-Schema
- eindeutige ids und bekannte Bausteine
- Einstellungen gegen die Beschreibung jedes Bausteins; fehlende werden ergänzt
- Verbindungen: Node und Pin existieren, Typen passen, jeder Eingang hat höchstens eine Verbindung, kein Node an sich selbst
- keine Kreise, dieselbe Zeiteinheit für alle Kerzen
- 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 |
Importieren legt immer eine Kopie an. Fehler verhindern den Import, Hinweise nicht. So lassen sich auch halbfertige Chains weitergeben.