Saxo connector
This commit is contained in:
@@ -1664,3 +1664,59 @@ export const useDeleteSavedStrategy = () => {
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['saved-strategies'] }),
|
||||
})
|
||||
}
|
||||
|
||||
// ── Saxo connection ───────────────────────────────────────────────────────────
|
||||
|
||||
export type SaxoStatus = {
|
||||
connected: boolean; configured: boolean; environment: string
|
||||
expires_at?: string; refresh_expires_at?: string
|
||||
}
|
||||
|
||||
export const useSaxoStatus = () =>
|
||||
useQuery<SaxoStatus>({
|
||||
queryKey: ['saxo-status'],
|
||||
queryFn: () => api.get('/saxo/status').then(r => r.data),
|
||||
refetchInterval: 60_000,
|
||||
})
|
||||
|
||||
export const useDisconnectSaxo = () => {
|
||||
const qc = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: () => api.post('/saxo/disconnect').then(r => r.data),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['saxo-status'] }),
|
||||
})
|
||||
}
|
||||
|
||||
export const useSaxoWatchlist = () =>
|
||||
useQuery<{ symbols: string[] }>({
|
||||
queryKey: ['saxo-watchlist'],
|
||||
queryFn: () => api.get('/saxo/watchlist').then(r => r.data),
|
||||
})
|
||||
|
||||
export const useUpdateSaxoWatchlist = () => {
|
||||
const qc = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: (symbols: string[]) => api.put('/saxo/watchlist', { symbols }).then(r => r.data),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['saxo-watchlist'] }),
|
||||
})
|
||||
}
|
||||
|
||||
export const useSnapshotSaxoNow = () =>
|
||||
useMutation({
|
||||
mutationFn: (symbol: string) => api.post(`/saxo/snapshot-now/${encodeURIComponent(symbol)}`).then(r => r.data),
|
||||
})
|
||||
|
||||
export type SaxoSnapshotRow = {
|
||||
id: string; symbol: string; snapshot_date: string; spot: number | null
|
||||
expiry_date: string; strike: number; option_type: 'call' | 'put'
|
||||
bid: number | null; ask: number | null; mid: number | null; volatility_pct: number | null
|
||||
delta: number | null; gamma: number | null; theta: number | null; vega: number | null
|
||||
created_at: string
|
||||
}
|
||||
|
||||
export const useSaxoHistory = (symbol?: string) =>
|
||||
useQuery<SaxoSnapshotRow[]>({
|
||||
queryKey: ['saxo-history', symbol],
|
||||
queryFn: () => api.get('/saxo/history', { params: symbol ? { symbol } : {} }).then(r => r.data),
|
||||
enabled: !!symbol,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user