This repository packages a single Agent Skill that teaches a coding agent to read and understand FXCM / Gehtsoft Indicore Lua code — the custom indicators, signals, and strategies published on fxcodebase.com and run inside Trading Station / Marketscope — so it can be ported to another platform.
Indicore’s Lua dialect looks ordinary but has several semantics that quietly break naive ports:
period and often don’t start at index 0 (built-in warm-up),.DATA convention after an explicit :update(),helper.lua Ext* framework,valuemap-based terminal:execute calls and trading-table
enumeration.The skill bundles the entire Indicore SDK surface, distilled into offline reference files, so the agent can interpret real code accurately without access to the original SDK documentation.
skills/indicore-reader/assets/port-spec-template.md.A frank note on value: capable frontier models (Opus 4.8 and up) already read Indicore Lua quite well. On moderate indicators, a strong model with no skill produces a competent port on its own. This skill is not trying to teach that model to read a moving average — it earns its keep on the parts that are non-obvious even to a strong model, and it lifts weaker/cheaper models up to the level of a strong one. We validated this with a two-round benchmark (with-skill vs. no-skill, blind semantic-equivalence judging against hand-written references and the Lua source):
Concretely, the skill is strongest at:
size()-2); without that, a port signals on the forming
bar and repaints. In the benchmark this was the single largest correctness swing.Draw/context model,
multi-timeframe getSyncHistory with date-based (not index-based) alignment, the
valuemap/terminal:execute trading layer, and the two strategy “eras”. These are where a
model working from memory guesses and gets it subtly wrong..DATA convention, live-vs-end-of-turn shifts, chained MA-of-MA
construction, and the WMA-vs-LWMA ambiguity. In testing, skill-guided ports (and careful
unguided ones) even out-performed a human reference that had simplified a strategy’s true
entry logic to a plain moving-average cross.Rule of thumb: the harder the artifact and the cheaper the model, the more the skill is worth. On a top-tier model doing simple indicators it’s a consistency aid; on signals, heatmaps, multi-timeframe studies, and trading strategies — or on smaller models — it’s the difference between a faithful port and a plausible-but-wrong one.
README.md ← this file
INSTALL.md ← how to install / use the skill
skills/
indicore-reader/
SKILL.md ← the skill (workflow + when to use)
references/ ← the distilled, self-contained SDK
data-model.md ← streams, sources, instance, period indexing, .DATA
parameters-and-profile.md ← Init(): profile + parameter declaration API
core-and-math.md ← core.* and mathex.* helpers and constants
builtin-indicators.md ← standard indicator catalog (args + output fields)
signals.md ← the Ext* signal framework
strategies.md ← trading API, valuemaps, the two strategy eras
host-and-drawing.md ← drawing/fonts/alerts (mostly droppable plumbing)
owner-drawing.md ← owner-drawn Draw/context + multi-timeframe getSyncHistory
corpus-idioms.md ← field guide: real code shapes, eras, quality caveats
assets/
port-spec-template.md ← the deliverable template
The skill is about understanding the source (platform-neutral). It deliberately does not embed mapping tables for specific targets (MT4/MT5, NinjaTrader, cTrader, Pine, …); it produces a neutral spec you can then implement anywhere.
The reference material is distilled from the FXCM Indicore SDK 3.2 developer documentation and from publicly published fxcodebase.com studies. Indicore, Trading Station, and Marketscope are trademarks of their respective owners.