// strategy.mjs: what the agent runs on every closed 15-minute SOL-USD bar. export const config = { rsiLen: 7, rsiBuy: 30, rsiExit: 70, emaLen: 96, stop: 0.02, risk: 0.9, maxHold: 40, }; export function onBar(s, f) { const r = f.rsi(config.rsiLen); const trend = f.bar.close > f.ema(config.emaLen).value; if (s.flat) { if (r.crossUp(config.rsiBuy) && trend) { return s.long(config.risk); } return; } const stopPx = s.entry * (1 - config.stop); if (f.bar.low <= stopPx) return s.close("stop", stopPx); if (r.value >= config.rsiExit) return s.close("signal"); if (s.held >= config.maxHold) return s.close("timeout"); }