get_trading_signals
Retrieve real-time BUY/SELL signals from quantitative strategies for informed trading decisions, including symbol, quantity, price, and strategy details.
Instructions
Get latest trading signals from live quantitative strategies. Returns real-time BUY/SELL signals with symbol, quantity, price, and strategy info.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| strategyId | No | Filter by strategy ID | |
| limit | No | Number of signals to return | |
| status | No | Filter by signal status | all |
Implementation Reference
- src/signals-server.ts:19-62 (handler)Main handler implementation for get_trading_signals tool with full error handling, parameter processing, and response formatting
server.tool( 'get_trading_signals', 'Get latest trading signals from live quantitative strategies. Returns real-time BUY/SELL signals with symbol, quantity, price, and strategy info.', { strategyId: z.string().optional().describe('Filter by strategy ID'), limit: z.number().min(1).max(100).default(20).describe('Number of signals to return'), status: z.enum(['pending', 'confirmed', 'skipped', 'all']).default('all').describe('Filter by signal status'), }, async ({ strategyId, limit, status }) => { try { const params: Record<string, any> = { limit }; if (strategyId) params.strategyId = strategyId; if (status && status !== 'all') params.status = status; const result = await client.getSignals(params); if (result.code !== 0) { return { content: [{ type: 'text', text: `Error: ${result.message || 'Failed to fetch signals'}` }] }; } const signals = result.data || []; const formatted = signals.map((s: any) => ({ id: s._id, strategy: s.strategyName || s.strategyId, symbol: s.symbol, action: s.action, quantity: s.quantity, price: s.price, time: s.timestamp, status: s.status, source: s.source, })); return { content: [{ type: 'text', text: JSON.stringify({ signals: formatted, count: formatted.length }, null, 2), }], }; } catch (error: any) { return { content: [{ type: 'text', text: `Error fetching signals: ${error.message}` }] }; } } ); - src/http-server.ts:53-68 (handler)Alternative handler implementation for get_trading_signals in HTTP server mode with simplified response formatting
server.tool( 'get_trading_signals', 'Get latest trading signals from live quantitative strategies', { strategyId: z.string().optional().describe('Filter by strategy ID'), limit: z.number().min(1).max(100).default(20).describe('Number of signals'), status: z.enum(['pending', 'confirmed', 'skipped', 'all']).default('all').describe('Signal status filter'), }, async ({ strategyId, limit, status }) => { const params: Record<string, any> = { limit }; if (strategyId) params.strategyId = strategyId; if (status && status !== 'all') params.status = status; const result = await client.getSignals(params); return { content: [{ type: 'text', text: JSON.stringify(result.data || [], null, 2) }] }; } ); - src/common/client.ts:51-53 (helper)API client method that makes the actual HTTP request to fetch trading signals from the QuantToGo backend
async getSignals(params: { strategyId?: string; limit?: number; status?: string } = {}) { return this.call('/getTradingNotifications', params); } - src/common/types.ts:34-49 (schema)Type definition for TradingSignal interface that defines the structure of signal data returned by the API
export interface TradingSignal { _id: string; signalId?: string; strategyId: string; strategyName?: string; symbol: string; action: 'BUY' | 'SELL' | 'HOLD'; quantity: number; price?: number; timestamp: string; source: 'QC' | 'JQ'; status: 'pending' | 'confirmed' | 'skipped' | 'expired'; userDecision?: 'EXECUTE' | 'SKIP'; accountType?: string; currency?: string; }