Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Fully vectorized — no iterrows(), no apply() with Python lambdas, no
loops over rows. The engine reads the signal column in bulk; a row-loop
silently produces wrong results.
The signal column holds only 1, -1 or 0 — not booleans, not floats.
Every tunable value comes from self.config.<param>.
No row loops — grep for iterrows, apply, for idx; must be zero
All params from config — no hardcoded numbers in the signal logic
Signal values — only 1, -1, 0
Column names — pandas_ta convention: EMA_{length}, RSI_{length},
ADX_{length}, MACD_{fast}_{slow}_{signal}, BBL_{length}_{std},
BBU_{length}_{std}, SUPERTd_{length}_{multiplier}. Verify against actual
output columns — a mismatch is a runtime KeyError
NaN handling — indicators emit NaN during warm-up; NaN comparisons yield
False, which correctly maps to signal = 0
signal populated for all rows — default 0, then overwritten by masks
iloc[-1], not iloc[0] — the current bar is what the engine acts on
Indicator lookback < max_records - 50 — headroom for warm-up
No look-ahead — .shift(1) wherever entry-bar logic needs it
Confirm created: true / updated: true. Add confirm_override=True when
replacing an existing template.
The controller_code string is wrapped as a Controller object by the MCP tool —
the endpoint rejects a bare source string.
A new .py may still be shadowed by the module cached in sys.modules — if the
upload succeeds but describe keeps showing the old fields, restart the API
container.
Numbers must be numbers, not strings."ema_fast": "5" reaches the
backtesting engine as a string and fails on arithmetic.
controller_name must match the controller module name (ema_cross_adx →
bots/controllers/directional_trading/ema_cross_adx.py). It is how the backend
resolves the config class.
config_name becomes the YAML filename and the config id.
Config classes set extra="forbid" — a typo'd field is a hard rejection, not a
warning. Discover the real field set with
manage_controllers(action="describe", controller_name="<name>").
confirm_override=True is required when overwriting an existing config.
Step 6 — Modifying an existing controller
Config only:
manage_controllers(action="describe", config_name="...") — read current values
Re-upsert with confirm_override=True and the updated config_data