From 62809a01ea7e0cef703840e9b35d4f64130a69a2 Mon Sep 17 00:00:00 2001 From: kaedwen Date: Thu, 9 Jul 2026 21:11:58 +0200 Subject: [PATCH] parallel source fetch with timeout Signed-off-by: kaedwen --- .gitignore | 4 +- cmd/ibtest/main.go | 228 ++++++++++++++++++++++++++++++ config.yaml | 145 ------------------- data/aitrade.db | Bin 327680 -> 0 bytes data/aitrade.db.backup.1782978610 | Bin 94208 -> 0 bytes pkg/app/app.go | 7 +- pkg/app/news/aggregator.go | 105 ++++++++------ pkg/app/news/json_sources.go | 40 ++++-- pkg/app/news/sources.go | 23 ++- pkg/config/config.go | 1 + 10 files changed, 353 insertions(+), 200 deletions(-) create mode 100644 cmd/ibtest/main.go delete mode 100644 config.yaml delete mode 100644 data/aitrade.db delete mode 100644 data/aitrade.db.backup.1782978610 diff --git a/.gitignore b/.gitignore index c816185..ee318f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -.claude \ No newline at end of file +.claude +data/ +config.yaml \ No newline at end of file diff --git a/cmd/ibtest/main.go b/cmd/ibtest/main.go new file mode 100644 index 0000000..ecea4eb --- /dev/null +++ b/cmd/ibtest/main.go @@ -0,0 +1,228 @@ +package main + +import ( + "flag" + "fmt" + "log" + "os" + "os/signal" + "strconv" + "syscall" + "time" + + "github.com/scmhub/ibapi" +) + +type Wrapper struct { + ibapi.Wrapper + connected bool + nextID int64 + errorMsg string + marketDataRecv bool +} + +func (w *Wrapper) ConnectAck() { + fmt.Println("✓ Connected to IB Gateway") + w.connected = true +} + +func (w *Wrapper) NextValidID(orderId int64) { + fmt.Printf("✓ Next valid order ID: %d\n", orderId) + w.nextID = orderId +} + +func (w *Wrapper) ManagedAccounts(accountsList []string) { + fmt.Printf("✓ Managed accounts: %v\n", accountsList) +} + +func (w *Wrapper) Error(id int64, errorCode int64, errorMsgType int64, errorString string, advancedOrderRejectJson string) { + // Info messages (2100-2199) or connection status messages + if errorCode >= 2100 && errorCode < 2200 { + fmt.Printf("ℹ Info [%d]: %s\n", errorCode, errorString) + } else if errorCode >= 1100 && errorCode < 1300 { + // Warning messages (1100-1299) - system/connection warnings + fmt.Printf("⚠ Warning [%d]: %s\n", errorCode, errorString) + } else if errorCode > 1783000000000 { + // Very high error codes are typically connection status messages + // Ignore or log as debug + } else { + fmt.Printf("✗ Error [%d]: %s\n", errorCode, errorString) + w.errorMsg = errorString + } +} + +func (w *Wrapper) CurrentTime(t int64) { + serverTime := time.Unix(t, 0) + fmt.Printf("✓ Server time: %s\n", serverTime.Format("2006-01-02 15:04:05 MST")) +} + +func (w *Wrapper) ConnectionClosed() { + fmt.Println("⚠ Connection closed by server") + w.connected = false +} + +func (w *Wrapper) TickPrice(reqID int64, tickType ibapi.TickType, price float64, attrib ibapi.TickAttrib) { + w.marketDataRecv = true + tickName := map[ibapi.TickType]string{ + 1: "BID", 2: "ASK", 4: "LAST", 6: "HIGH", 7: "LOW", 9: "CLOSE", + 14: "OPEN", 15: "LOW_13_WEEK", 16: "HIGH_13_WEEK", 17: "LOW_26_WEEK", 18: "HIGH_26_WEEK", + 19: "LOW_52_WEEK", 20: "HIGH_52_WEEK", 35: "LAST_TIMESTAMP", 37: "MARK_PRICE", + 66: "BID_EXCH", 67: "ASK_EXCH", 68: "LAST_EXCH", 72: "HIGH_52W", 73: "LOW_52W", + 75: "PREV_CLOSE", 76: "HALTED", + } + name := tickName[tickType] + if name == "" { + name = fmt.Sprintf("Type_%d", tickType) + } + + timestamp := time.Now().Format("15:04:05") + fmt.Printf("[%s] %-22s %.2f\n", timestamp, name, price) +} + +func (w *Wrapper) TickSize(reqID int64, tickType ibapi.TickType, size ibapi.Decimal) { + w.marketDataRecv = true + tickName := map[ibapi.TickType]string{ + 0: "BID_SIZE", 3: "ASK_SIZE", 5: "LAST_SIZE", 8: "VOLUME", + 21: "AVG_VOLUME", 27: "CALL_OPTION_VOLUME", 28: "PUT_OPTION_VOLUME", + 29: "CALL_OPEN_INTEREST", 30: "PUT_OPEN_INTEREST", 34: "AUCTION_VOLUME", + 69: "BID_SIZE_EXCH", 70: "ASK_SIZE_EXCH", 71: "LAST_SIZE_EXCH", 74: "VOLUME_52W", + } + name := tickName[tickType] + if name == "" { + name = fmt.Sprintf("Type_%d", tickType) + } + + timestamp := time.Now().Format("15:04:05") + fmt.Printf("[%s] %-22s %s\n", timestamp, name, size.String()) +} + +func (w *Wrapper) TickString(reqID int64, tickType ibapi.TickType, value string) { + w.marketDataRecv = true + tickName := map[ibapi.TickType]string{ + 32: "BID_EXCH", 33: "ASK_EXCH", 45: "LAST_TIMESTAMP", 48: "RT_VOLUME", + 84: "LAST_EXCH", 85: "LAST_REG_TIME", 88: "DELAYED_LAST_TIMESTAMP", + } + name := tickName[tickType] + if name == "" { + name = fmt.Sprintf("Type_%d", tickType) + } + + // Convert Unix timestamp to ISO format for timestamp fields + displayValue := value + if tickType == 45 || tickType == 88 { // LAST_TIMESTAMP or DELAYED_LAST_TIMESTAMP + if ts, err := strconv.ParseInt(value, 10, 64); err == nil { + displayValue = time.Unix(ts, 0).Format(time.RFC3339) + } + } + + timestamp := time.Now().Format("15:04:05") + fmt.Printf("[%s] %-22s %s\n", timestamp, name, displayValue) +} + +func main() { + host := flag.String("host", "127.0.0.1", "IB Gateway host") + port := flag.Int("port", 4002, "IB Gateway port (4001 for live, 4002 for paper)") + clientID := flag.Int("client", 1, "Client ID") + timeout := flag.Int("timeout", 10, "Connection timeout in seconds") + symbol := flag.String("symbol", "", "Symbol to subscribe to market data (e.g. AAPL, TSLA)") + exchange := flag.String("exchange", "SMART", "Exchange for market data") + currency := flag.String("currency", "USD", "Currency for market data") + marketDataType := flag.Int("mdtype", 3, "Market data type: 1=Live, 2=Frozen, 3=Delayed(15min), 4=Delayed-Frozen") + flag.Parse() + + fmt.Printf("Testing IB Gateway connection...\n") + fmt.Printf("Host: %s:%d\n", *host, *port) + fmt.Printf("Client ID: %d\n\n", *clientID) + + wrapper := &Wrapper{} + client := ibapi.NewEClient(wrapper) + + // Connect + fmt.Println("→ Connecting...") + if err := client.Connect(*host, *port, int64(*clientID)); err != nil { + log.Fatalf("✗ Connection failed: %v\n", err) + } + defer client.Disconnect() + + // Wait for connection + start := time.Now() + for !wrapper.connected && time.Since(start) < time.Duration(*timeout)*time.Second { + time.Sleep(100 * time.Millisecond) + } + + if !wrapper.connected { + log.Fatal("✗ Connection timeout") + } + + // Wait for NextValidId + start = time.Now() + for wrapper.nextID == 0 && time.Since(start) < time.Duration(*timeout)*time.Second { + time.Sleep(100 * time.Millisecond) + } + + if wrapper.nextID == 0 { + log.Fatal("✗ Did not receive NextValidId") + } + + // Request server time + fmt.Println("\n→ Requesting server time...") + client.ReqCurrentTime() + + // Wait for response + time.Sleep(1 * time.Second) + + // Subscribe to market data if symbol provided + if *symbol != "" { + fmt.Printf("\n→ Subscribing to market data for %s...\n", *symbol) + + contract := &ibapi.Contract{ + Symbol: *symbol, + SecType: "STK", + Exchange: *exchange, + Currency: *currency, + } + + // Request market data type + // MarketDataType: 1=Live, 2=Frozen, 3=Delayed(15min), 4=Delayed-Frozen + mdTypeDesc := map[int]string{ + 1: "Live", + 2: "Frozen", + 3: "Delayed (15min)", + 4: "Delayed-Frozen", + } + fmt.Printf(" Market data type: %s\n", mdTypeDesc[*marketDataType]) + client.ReqMarketDataType(int64(*marketDataType)) + time.Sleep(500 * time.Millisecond) + + // Request market data + // ReqID: 1, Contract, GenericTickList: "", Snapshot: false, RegulatorySnapshot: false, MktDataOptions: nil + client.ReqMktData(1, contract, "", false, false, nil) + + // Wait for initial market data + fmt.Println(" Receiving market data... (Press Ctrl+C to exit)") + time.Sleep(2 * time.Second) + + if !wrapper.marketDataRecv { + fmt.Println(" ⚠ No market data received yet - may require market data subscription or market is closed") + } + + // Setup signal handler for graceful shutdown + sigChan := make(chan os.Signal, 1) + signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) + + // Wait for Ctrl+C + <-sigChan + fmt.Println("\n\n→ Shutting down...") + + // Cancel market data subscription + client.CancelMktData(1) + fmt.Println(" Market data subscription cancelled") + } else { + fmt.Println("\n✓ Connection test successful!") + fmt.Println("\nConnection details:") + fmt.Printf(" - Next Order ID: %d\n", wrapper.nextID) + fmt.Printf(" - Client ID: %d\n", *clientID) + } + + os.Exit(0) +} diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 31b3d00..0000000 --- a/config.yaml +++ /dev/null @@ -1,145 +0,0 @@ -# AI Trading Application Configuration -# This file can be placed at: -# - ./config.yaml (current directory) -# - ~/.config/aitrade/config.yaml -# - /etc/aitrade/config.yaml -# Or specify with: CONFIG_FILE=/path/to/config.yaml ./aitrade - -# Interactive Brokers Gateway -ib_gateway: - host: 127.0.0.1 - port: 4002 # 4002 for paper trading, 4001 for live - client_id: 777 # Use unique client ID (avoid 1, which may be used by other sessions) - market_data_type: 3 # 1=Live, 2=Frozen, 3=Delayed(15min), 4=Delayed-Frozen - -# Trading Configuration -trading: - # Strategy: defensive, normal, aggressive - strategy: normal - - # Stop Loss - stop_loss_enabled: true - stop_loss_percent: 3.0 - - # Rate Limiting - max_trades_per_hour: 6 - max_parallel_trades: 5 - pending_time: 300s # Seconds or Go duration (300, "5m", "1h30m") - - # Dry Run Mode (Paper Trading) - dry_run: false # Using IB Paper Trading account instead - dry_run_balance: 100000.0 - - # Auto Trading - trading_enabled: true - trading_interval: 60 # Seconds or Go duration (60, "1m", "5m") - watch_symbols: - - AAPL - - MSFT - - GOOGL - - TSLA - - AMZN - - # SELL Triggers - take_profit_percent: 5.0 - hold_time_minutes: 30 - sell_on_negative_sentiment: true - - # Trade Limits - max_trade_value: 2000.0 # 0 = unlimited - -# Database -database: - path: ./data/aitrade.db - -# Web Server -web: - host: 0.0.0.0 - port: "8080" - -# OpenID Connect (Optional) -oidc: - enabled: false - issuer: https://auth.example.com - client_id: aitrade - client_secret: your-secret-here - redirect_url: http://localhost:8080/oauth2/callback - scopes: - - openid - - profile - - email - -# News Aggregation -news: - poll_interval: 300s # Seconds or Go duration (300s = 5 minutes) - - # Default rate limits for all sources (can be overridden per source) - default_rate_limit: - max_per_hour: 100 # Poll every 5min = 12/hour, 100 gives plenty of buffer - max_per_day: 1000 - - # News Feed Sources - sources: - - name: "CNBC Top News" - url: "https://www.cnbc.com/id/100003114/device/rss/rss.html" - type: rss - enabled: true - - - name: "MarketWatch" - url: "https://feeds.marketwatch.com/marketwatch/realtimeheadlines" - type: rss - enabled: true - - - name: "Alpha Vantage News" - url: "https://www.alphavantage.co/query?function=NEWS_SENTIMENT&apikey=R8JA9C1DIEKM4SZM" - type: alphavantage - enabled: true - rate_limit: - max_per_hour: 5 # API key limit: 500/day - max_per_day: 500 - - - name: "Finnhub News" - url: "https://finnhub.io/api/v1/news?category=general&token=ca9mjbiad3ibg816q5b0" - type: finnhub - enabled: true - rate_limit: - max_per_hour: 60 # API key limit: 60/minute - max_per_day: 0 - - # Example: Feed with Basic Auth and Rate Limiting - # - name: "Reuters Business" - # url: "https://www.reuters.com/business/finance/rss" - # type: rss - # enabled: false - # auth: - # type: basic - # username: "your-username" - # password: "your-password" - # rate_limit: - # max_per_hour: 10 - # max_per_day: 100 - - # Example: Feed with custom headers (e.g., API key) - # - name: "Custom Feed" - # url: "https://example.com/feed" - # type: rss - # enabled: true - # headers: - # Authorization: "Bearer your-token" - # X-API-Key: "your-api-key" - # rate_limit: - # max_per_hour: 0 # Unlimited per hour - # max_per_day: 1000 # But limited to 1000/day - -# LLM Sentiment Scorer (Optional - requires Ollama) -llm_scorer: - enabled: true # Set to true to enable LLM-based sentiment - endpoint: http://192.168.40.133:11434 - model_name: mistral # "mistral", "llama2", "llama2:70b" - timeout: 120s # Seconds or Go duration (increased for CPU-only inference) - temperature: 0.3 # 0.0-1.0, lower = more deterministic - max_retries: 2 - ensemble_weight: 0.7 # 0.0-1.0 (1.0 = LLM only, 0.7 = 70% LLM + 30% keyword) - -# Logging -log_level: debug # debug, info, warn, error diff --git a/data/aitrade.db b/data/aitrade.db deleted file mode 100644 index c2da189572255675a0de71e7e9c7634edf797c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327680 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 diff --git a/data/aitrade.db.backup.1782978610 b/data/aitrade.db.backup.1782978610 deleted file mode 100644 index 903461e2b2b8c9fdcbfceb3d913247277bb589b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 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 0 { diff --git a/pkg/app/news/aggregator.go b/pkg/app/news/aggregator.go index f626f11..9a235d6 100644 --- a/pkg/app/news/aggregator.go +++ b/pkg/app/news/aggregator.go @@ -4,10 +4,12 @@ import ( "context" "fmt" "log/slog" + "sync/atomic" "time" "github.com/pheinrich/aitrade/pkg/config" "github.com/pheinrich/aitrade/pkg/db" + "golang.org/x/sync/errgroup" ) type Aggregator struct { @@ -16,6 +18,7 @@ type Aggregator struct { analyzer *Analyzer llmScorer *LLMScorer pollInterval time.Duration + fetchTimeout time.Duration logger *slog.Logger onNewsUpdated func() // Callback for SSE notifications } @@ -23,6 +26,7 @@ type Aggregator struct { func NewAggregator( newsRepo *db.NewsRepository, pollInterval time.Duration, + fetchTimeout time.Duration, llmScorer *LLMScorer, logger *slog.Logger, ) *Aggregator { @@ -32,6 +36,7 @@ func NewAggregator( analyzer: NewAnalyzer(), llmScorer: llmScorer, pollInterval: pollInterval, + fetchTimeout: fetchTimeout, logger: logger, } @@ -141,59 +146,79 @@ func (a *Aggregator) Run(ctx context.Context) error { func (a *Aggregator) fetchAllSources(ctx context.Context) error { a.logger.Debug("fetching from all news sources") - totalFetched := 0 - totalStored := 0 + var totalFetched, totalStored atomic.Int64 + // Use errgroup for parallel fetching + g, gCtx := errgroup.WithContext(ctx) + + // Launch goroutines for each source for _, source := range a.sources { - articles, err := source.Fetch(ctx) - if err != nil { - a.logger.Warn("failed to fetch from source", - slog.String("source", source.Name()), - slog.Any("error", err), - ) - continue - } + src := source // Capture loop variable + g.Go(func() error { + // Create a timeout context for this specific source + sourceCtx, cancel := context.WithTimeout(gCtx, a.fetchTimeout) + defer cancel() - totalFetched += len(articles) - - // Analyze sentiment and store - for _, article := range articles { - // Always use keyword analyzer first (fast) - a.analyzer.Analyze(article) - - // If LLM scorer enabled, use it (may fallback to keyword) - if a.llmScorer != nil && a.llmScorer.Enabled() { - if err := a.llmScorer.Analyze(ctx, article); err != nil { - a.logger.Warn("LLM scoring failed", - slog.String("url", article.URL), - slog.Any("error", err)) - // Article already has keyword sentiment, continue - } - } else { - // No LLM scorer, mark as keyword-only - article.SentimentMethod = "keyword" - } - - if err := a.newsRepo.Create(ctx, article); err != nil { - a.logger.Error("failed to store article", - slog.String("url", article.URL), + articles, err := src.Fetch(sourceCtx) + if err != nil { + a.logger.Warn("failed to fetch from source", + slog.String("source", src.Name()), slog.Any("error", err), ) - continue + return nil // Don't fail entire operation on single source error } - totalStored++ - } + totalFetched.Add(int64(len(articles))) + + // Analyze sentiment and store + for _, article := range articles { + // Always use keyword analyzer first (fast) + a.analyzer.Analyze(article) + + // If LLM scorer enabled, use it (may fallback to keyword) + if a.llmScorer != nil && a.llmScorer.Enabled() { + if err := a.llmScorer.Analyze(sourceCtx, article); err != nil { + a.logger.Warn("LLM scoring failed", + slog.String("url", article.URL), + slog.Any("error", err)) + // Article already has keyword sentiment, continue + } + } else { + // No LLM scorer, mark as keyword-only + article.SentimentMethod = "keyword" + } + + if err := a.newsRepo.Create(sourceCtx, article); err != nil { + a.logger.Error("failed to store article", + slog.String("url", article.URL), + slog.Any("error", err), + ) + continue + } + + totalStored.Add(1) + } + + return nil + }) } + // Wait for all goroutines to complete + if err := g.Wait(); err != nil { + return err + } + + fetched := int(totalFetched.Load()) + stored := int(totalStored.Load()) + a.logger.Info("news fetch completed", - slog.Int("fetched", totalFetched), - slog.Int("stored", totalStored), - slog.Int("duplicates", totalFetched-totalStored), + slog.Int("fetched", fetched), + slog.Int("stored", stored), + slog.Int("duplicates", fetched-stored), ) // Notify listeners if new articles were stored - if totalStored > 0 && a.onNewsUpdated != nil { + if stored > 0 && a.onNewsUpdated != nil { a.onNewsUpdated() } diff --git a/pkg/app/news/json_sources.go b/pkg/app/news/json_sources.go index 475a12a..c6b5b4a 100644 --- a/pkg/app/news/json_sources.go +++ b/pkg/app/news/json_sources.go @@ -40,10 +40,22 @@ type alphaVantageResponse struct { func NewAlphaVantageSource(name, url string, logger *slog.Logger) *AlphaVantageSource { now := time.Now() return &AlphaVantageSource{ - name: name, - url: url, - logger: logger, - httpClient: &http.Client{Timeout: 30 * time.Second}, + name: name, + url: url, + logger: logger, + httpClient: &http.Client{ + Timeout: 30 * time.Second, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + if len(via) >= 10 { + return fmt.Errorf("stopped after 10 redirects") + } + logger.Debug("following redirect", + slog.String("source", name), + slog.String("from", via[len(via)-1].URL.String()), + slog.String("to", req.URL.String())) + return nil + }, + }, lastHourReset: now, lastDayReset: now, } @@ -181,10 +193,22 @@ type finnhubArticle struct { func NewFinnhubSource(name, url string, logger *slog.Logger) *FinnhubSource { now := time.Now() return &FinnhubSource{ - name: name, - url: url, - logger: logger, - httpClient: &http.Client{Timeout: 30 * time.Second}, + name: name, + url: url, + logger: logger, + httpClient: &http.Client{ + Timeout: 30 * time.Second, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + if len(via) >= 10 { + return fmt.Errorf("stopped after 10 redirects") + } + logger.Debug("following redirect", + slog.String("source", name), + slog.String("from", via[len(via)-1].URL.String()), + slog.String("to", req.URL.String())) + return nil + }, + }, lastHourReset: now, lastDayReset: now, } diff --git a/pkg/app/news/sources.go b/pkg/app/news/sources.go index ccc1fc1..43b42a3 100644 --- a/pkg/app/news/sources.go +++ b/pkg/app/news/sources.go @@ -40,11 +40,24 @@ type RSSSource struct { func NewRSSSource(name, url string, logger *slog.Logger) *RSSSource { now := time.Now() return &RSSSource{ - name: name, - url: url, - parser: gofeed.NewParser(), - logger: logger, - httpClient: &http.Client{Timeout: 30 * time.Second}, + name: name, + url: url, + parser: gofeed.NewParser(), + logger: logger, + httpClient: &http.Client{ + Timeout: 30 * time.Second, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + // Follow up to 10 redirects (default behavior, made explicit) + if len(via) >= 10 { + return fmt.Errorf("stopped after 10 redirects") + } + logger.Debug("following redirect", + slog.String("source", name), + slog.String("from", via[len(via)-1].URL.String()), + slog.String("to", req.URL.String())) + return nil + }, + }, headers: make(map[string]string), lastHourReset: now, lastDayReset: now, diff --git a/pkg/config/config.go b/pkg/config/config.go index bd9c17b..57a1fb0 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -64,6 +64,7 @@ type OIDCConfig struct { type NewsConfig struct { PollInterval Duration `yaml:"poll_interval"` + FetchTimeout Duration `yaml:"fetch_timeout"` // Timeout per source (fetch + processing) DefaultRateLimit *RateLimit `yaml:"default_rate_limit,omitempty"` Sources []NewsSource `yaml:"sources"` }