- .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]>
49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
"""Holt die echten IEX-Minutenkerzen eines Handelstags und legt sie als JSON ab. Nur lesend.
|
|
|
|
Koordinator-Werkzeug, nicht Teil des Repos. Der einzige Netzzugriff ist der lesende Kerzenabruf
|
|
bei Alpaca; ausgegeben werden Anzahl und Eckkurse, nie ein Schluessel. Die Datei ist die Eingabe
|
|
fuer neustart_echtlauf.py. Entstanden in der Abschlusspruefung zu Paket F (2026-09-20).
|
|
Aufruf (WSL, aus dem Projektordner): python hole_kerzen.py JJJJ-MM-TT <ziel.json>
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path.cwd()))
|
|
|
|
from trading.paper.config import lade_paper_config
|
|
from trading.paper.kerzen import HANDELSZONE
|
|
from trading.paper.kerzen import AlpacaKerzenquelle
|
|
from trading.paper.kerzen import handelsende
|
|
|
|
|
|
def main() -> int:
|
|
datum, ziel = sys.argv[1], Path(sys.argv[2])
|
|
config = lade_paper_config("config/paper.toml")
|
|
mitternacht = datetime.strptime(datum, "%Y-%m-%d").replace(tzinfo=HANDELSZONE)
|
|
quelle = AlpacaKerzenquelle.from_secrets(None, feed=config.feed, timeout=20.0)
|
|
kerzen = quelle.kerzen_des_tages(config.instrument_id, handelsende(mitternacht))
|
|
ziel.write_text(
|
|
json.dumps(
|
|
[
|
|
{"zeit": k.zeit.isoformat(), "open": k.open, "high": k.high,
|
|
"low": k.low, "close": k.close, "volume": k.volume}
|
|
for k in kerzen
|
|
]
|
|
),
|
|
encoding="utf-8",
|
|
)
|
|
print(f"{datum}: {len(kerzen)} Kerzen in {config.instrument_id} nach {ziel}")
|
|
if kerzen:
|
|
kurse = [k.close for k in kerzen]
|
|
print(f" erste {kerzen[0].zeit.isoformat()} Schluss {kurse[0]}, "
|
|
f"letzte {kerzen[-1].zeit.isoformat()} Schluss {kurse[-1]}, "
|
|
f"Tief {min(kurse)}, Hoch {max(kurse)}")
|
|
return 0 if kerzen else 2
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|