# MrTrades strategies — for assistants Read this file. Then call strategy_features. Do not invent predicate names. Hosted MCP: https://app.mrtrades.com/mcp Auth: X-Api-Key in client config, never in chat. Catalog: call strategy_features Human page: https://mrtrades.com/products/strategies Connect recipe: https://app.mrtrades.com/documentation/grok ## Legal names (P0 + P1) Print-seq (current same-size / same-side run on raw_trades_v2, 8s window, 8% size band): - size_run_count - size_run_notional (USD) - size_run_side (+1 buy, -1 sell) - size_run (>= 1 when count >= 5) Cloud flags, closed bars only. Bare name = 1m. - press_lower / press_upper / in_cloud / above_cloud / below_cloud / cloud_mid - suffixes: _15s _1m _15m _1h - 1m/15m/1h from agg_candles_1m_v2 - 15s from the paper/live tape - press_lower_15m can be true while press_lower is false Book (paper replays 1s ClickHouse snapshots; live uses latest book): - book_imb5 book_imb10 top5_depth_usd microprice spread_bps - If the window has no L2: paper_skipped_book=true and the filter does not pass Absorption (same math as GET /v1/viz/absorption): - absorption / absorption_bias = 60s - absorption_15s absorption_60s absorption_5m - bid_hold (>=1 when 60s > 0.25) ask_hold (>=1 when 60s < -0.25) Liquidity (same L2 + tape as iceberg blooms / book impulse): - resting_bid_usd resting_ask_usd - iceberg_bid_usd iceberg_ask_usd (tape that exceeded displayed size, 8s) - bid_pull (>=1 when bid notional drops >20% in 2s) Exit: - exit.opposing defaults true ($15k opposing print). opposing: false keeps the runner. - Implicit stop 8 bps / tp 12 bps still apply unless ret_bps is set. Trail: - arm_on: press_upper (or press_upper_15m, absorption, bid_hold, …) - or arm_ret_bps / arm_usd - pullback_bps required - Unknown arm_on → unknown_feature Paper fills (up to 500): entry_ts exit_ts side entry_px exit_px pnl_bps pnl_usd exit_reason max_favorable_bps max_adverse_bps strategy_paper days up to 30 (full tape; not a 500k-print clip). strategy_report LIVE: closed_pnl_usd, open_upnl_usd, reject_reason. One open position per symbol across all of the owner's YAMLs. scanner_print_seq symbol= filters cards to that coin. ## Missing name strategy_validate returns unknown_feature:NAME. Call product_request once on the owner's behalf: title, why, area=strategies, proposed_names=[NAME] Do not invent the predicate. Do not say it shipped. Five requests per UTC day. ## Collect-shaped YAML (example) symbol: PUMP-USD side: long alert: all: - press_lower_15m - absorption_bias >= 0.25 - size_run_notional >= 25000 entry: when_alert: true any: - in_cloud - above_cloud - book_imb5 >= 0.15 exit: opposing: false any: - below_cloud - held_s >= 14400 - trail: arm_on: press_upper pullback_bps: 50 floor_ret_bps: 80 risk: notional_usd: 2500 max_positions: 1 cooldown_s: 3600 Implicit stop/TP defaults still apply unless exit.any sets ret_bps. You do not place orders. The engine does.