# Data sources LIVE_SOURCE=yahoo SEED_SOURCE=yahoo YAHOO_SYMBOL=ES=F YAHOO_POLL_SECONDS=20 SEED_1H_RANGE=730d SEED_1M_RANGE=8d # Schwab. Only read once LIVE_SOURCE=schwab; blank is fine until then. # The callback must match the app registration exactly — changing it there can # re-trigger approval. The same URL works from local and production: the # redirect lands in your browser, not on the machine running the code. SCHWAB_API_KEY= SCHWAB_APP_SECRET= SCHWAB_CALLBACK_URL=https://chart.amow.com/api/qt # Under data/ so it survives a deploy — that path is the Coolify volume. SCHWAB_TOKEN_PATH=./data/.schwab_token.json SCHWAB_SYMBOL=/ES # Chart and analysis TIMEFRAMES=1m,5m,15m,30m,1h,1d BASE_TIMEFRAMES=1m,30m,1d MAX_BARS_PER_TF=5000 MA_SETS__1D=sma10,sma20,sma50,sma100,sma200 DAILY_ANCHOR_ET=18:00 MANUAL_LINES_PATH=./data/manual_lines.json CONFLUENCE_MIN_SCORE=28 # Four hours. Suppression is per price zone, so an unrelated zone still alerts; # this governs only how often the same area repeats. See README. ALERT_COOLDOWN_SECONDS=14400 # Notifications and access NTFY_TOPIC= NTFY_SERVER=https://ntfy.sh # Blank = no auth (fine locally). In production this is set in Coolify, not # here — see README. Sent as the X-Chart-Token header, or ?token= for /ws. CHART_AUTH_TOKEN= REPLAY_FILE=