Automatischer Push: 32 Datei(en) geändert

- .claude/agents/executer.md
- .claude/agents/planer.md
- .claude/agents/pruefer.md
- .claude/agents/recherche.md
- .claude/skills/plan-executer-pruefung/SKILL.md
- .claude/workflows/executer-welle.js
- .claude/workflows/plankritik.js
- .claude/workflows/pruefung.js
- .claude/workflows/welle-mit-pruefung.js
- .gitignore
- .vault-tools/regelwerk-check/ENTWURF.md
- .vault-tools/regelwerk-check/regelwerk_check.py
- … und 20 weitere

Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Pascal MichelandClaude Opus 5 committed 2026-09-24 04:00:02 +02:00
1 parent d7ffc9a5b5
commit 67d674cd0b
32 files changed
+1618 -88

No files matched your search

@@ -0,0 +1,87 @@
"""Liest die Antwortformen dreier Alpaca-Endpunkte fuer Paket M (zehn Aktien). Nur lesend, keine Order.
Koordinator-Werkzeug, nicht Teil des Repos (entstanden 2026-09-24 nachts). Ausgegeben werden Schluessel,
Typen, Seitenmarken und die Handelsfelder der Anlagen (tradable, shortable, easy_to_borrow, fractionable,
marginable) -- keine Kontodaten, kein Schluessel. Endpunkte:
GET /v2/assets/{symbol} (Handels-API, paper-api)
GET /v2/stocks/trades/latest?symbols=... (Daten-API, feed=iex)
GET /v2/stocks/bars?symbols=...&timeframe=1Min (Daten-API, feed=iex, Seitenverhalten ueber Symbole)
Aufruf (WSL, TRADING_GEHEIMNISSE gesetzt): python alpaca_formen_lesen.py JJJJ-MM-TT SYMBOL [SYMBOL ...]
"""
import sys
import tomllib
from pathlib import Path
import requests
sys.path.insert(0, str(Path.cwd()))
from trading import geheimnisse # noqa: E402
HANDEL = "https://paper-api.alpaca.markets"
DATEN = "https://data.alpaca.markets"
def form(wert, tiefe=0):
if isinstance(wert, dict):
if tiefe > 1:
return "{...}"
return "{" + ", ".join(f"{k}: {form(v, tiefe + 1)}" for k, v in list(wert.items())[:14]) + "}"
if isinstance(wert, list):
return f"[{len(wert)} x {form(wert[0], tiefe + 1) if wert else '-'}]"
return type(wert).__name__
def main() -> int:
tag, symbole = sys.argv[1], sys.argv[2:]
werte = tomllib.loads(geheimnisse.pfad().read_text(encoding="utf-8"))["alpaca"]
s = requests.Session()
s.trust_env = False
s.headers.update({"APCA-API-KEY-ID": werte["key_id"], "APCA-API-SECRET-KEY": werte["secret_key"]})
print("== /v2/assets/{symbol}")
for sym in symbole:
a = s.get(f"{HANDEL}/v2/assets/{sym}", timeout=20)
if a.status_code != 200:
print(sym, "HTTP", a.status_code)
continue
j = a.json()
felder = {k: j.get(k) for k in ("symbol", "exchange", "status", "tradable", "shortable", "easy_to_borrow", "fractionable", "marginable")}
print(felder)
print("Schluessel einer Anlage:", sorted(j.keys()) if symbole else "-")
print("== /v2/stocks/trades/latest (gebuendelt)")
t = s.get(f"{DATEN}/v2/stocks/trades/latest", params={"symbols": ",".join(symbole), "feed": "iex"}, timeout=20)
print("HTTP", t.status_code, "Form:", form(t.json()))
trades = t.json().get("trades", {})
print("Symbole mit Trade:", len(trades), "von", len(symbole), "; Felder eines Trades:", sorted(next(iter(trades.values())).keys()) if trades else "-")
print("== /v2/stocks/bars (gebuendelt, Seiten)")
start, ende = f"{tag}T13:30:00Z", f"{tag}T20:00:00Z"
seiten, gesamt, je_symbol, token = 0, 0, {}, None
while True:
p = {"symbols": ",".join(symbole), "timeframe": "1Min", "start": start, "end": ende, "feed": "iex", "limit": 10000, "adjustment": "raw"}
if token:
p["page_token"] = token
b = s.get(f"{DATEN}/v2/stocks/bars", params=p, timeout=30)
if b.status_code != 200:
print("HTTP", b.status_code, b.text[:200])
return 1
j = b.json()
seiten += 1
if seiten == 1:
print("Form erste Seite:", form(j))
for sym, liste in (j.get("bars") or {}).items():
je_symbol[sym] = je_symbol.get(sym, 0) + len(liste)
gesamt += len(liste)
token = j.get("next_page_token")
if not token or seiten > 20:
break
print("Seiten:", seiten, "Balken gesamt:", gesamt)
print("Balken je Symbol:", dict(sorted(je_symbol.items())))
return 0
if __name__ == "__main__":
raise SystemExit(main())