limit:Optional[int]=Query(None,ge=1,le=1000,description="Maximum number of stocks to return (1-1000). If not specified, returns first 600 stocks (3 pages) for performance."),
max_pages:Optional[int]=Query(3,ge=1,le=10,description="Maximum pages to fetch (1-10). Each page has ~200 stocks. Higher values may cause rate limiting.")
max_pages:Optional[int]=Query(3,ge=1,le=10,description="Maximum pages to fetch (1-10). Each page has ~200 stocks. Higher values may cause rate limiting."),
n:Optional[int]=Query(500,ge=1,description="Total number of trending stocks to return after combining most active + gainers (default: 500)"),
most_active_limit:Optional[int]=Query(None,ge=1,description="Number of most active stocks to include. If not specified, returns all available stocks (~170)."),
gainers_limit:Optional[int]=Query(None,ge=1,description="Number of 52-week gainers to fetch. If not specified, fetches enough to reach target 'n' after combining with most active.")
gainers_limit:Optional[int]=Query(None,ge=1,description="Number of 52-week gainers to fetch. If not specified, fetches enough to reach target 'n' after combining with most active."),