scan
SKILL.md
Scan A-share market for stocks matching user criteria.
Arguments
$ARGUMENTS = screening criteria in natural language. If empty, ask the user.
Instructions
- Parse criteria into pre_filter (PriceData) and filter_fn (K-line) layers
- Create script at
scanning/{name}_scan.py - Run and show results
Choosing scan type
- Price/volume/PE only (no K-line needed):
quick_scan(pre_filter)-- instant - Needs history (MA, MACD, patterns):
scan(filter_fn, pre_filter)-- two-layer
pre_filter (Layer 1)
Receives PriceData. Key fields:
p.code, p.name, p.close, p.open, p.high, p.low, p.volume, p.amount,
p.lastClose, p.pe, p.totalShares, p.flowShares, p.upperLimit, p.lowerLimit
p.volume > 0 and p.close > 3 and "ST" not in p.name # typical
filter_fn (Layer 2)
Receives (code, name, bars). Return {"score": float, "reason": str, ...} or None.
def filter_fn(code, name, bars):
if len(bars) < 30:
return None
close, high, low, vol = bars_to_arrays(bars)
# ... compute indicators (use catquant.indicators) ...
if condition:
return {"score": value, "reason": "description"}
return None
scan() / quick_scan()
scan(filter_fn, pre_filter=None, universe=None, count=250,
cycle=1440, source="facecat", max_results=20,
sort_key="score", ascending=False, verbose=True, refresh=False)
quick_scan(pre_filter=None, max_results=50, sort_key="close", ascending=False)
Weekly Installs
2
Repository
fidingks/mao-quantFirst Seen
3 days ago
Security Audits
Installed on
amp2
cline2
openclaw2
opencode2
cursor2
kimi-cli2