# QuantDinger local configuration (copy to `.env` and edit) # `run.py` will load `backend_api_python/.env` automatically if present. # # This file is organized as: # 1) first-time deployment settings at the top # 2) advanced / rarely changed settings at the bottom # For Docker image source / ports, use the project-root `.env`. # ========================= # Auth (required) # ========================= # Also derives Fernet key for encrypting qd_exchange_credentials.encrypted_config (do not rotate casually). SECRET_KEY=quantdinger-secret-key-change-me ADMIN_USER=quantdinger ADMIN_PASSWORD=123456 ADMIN_EMAIL= # ========================= # Core app # ========================= DATABASE_URL=postgresql://quantdinger:quantdinger123@postgres:5432/quantdinger FRONTEND_URL=http://localhost:8888 ENABLE_REGISTRATION=true # ========================= # AI / LLM (choose one provider) # ========================= LLM_PROVIDER=openrouter OPENROUTER_API_KEY= OPENROUTER_MODEL=openai/gpt-4o # Optional: dedicated model for AI code generation (fallback to provider default if empty) AI_CODE_GEN_MODEL= OPENAI_API_KEY= OPENAI_MODEL=gpt-4o GOOGLE_API_KEY= GOOGLE_MODEL=gemini-1.5-flash DEEPSEEK_API_KEY= DEEPSEEK_MODEL=deepseek-chat GROK_API_KEY= GROK_MODEL=grok-beta # ========================= # Common background jobs # ========================= ENABLE_PENDING_ORDER_WORKER=true ENABLE_PORTFOLIO_MONITOR=true DISABLE_RESTORE_RUNNING_STRATEGIES=false # ========================= # Email / SMTP (optional) # ========================= SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= SMTP_FROM= SMTP_USE_TLS=true SMTP_USE_SSL=false # ========================= # Proxy (optional) # ========================= # PROXY_URL=socks5h://127.0.0.1:10808 # local # PROXY_URL=socks5h://host.docker.internal:10808 # Docker PROXY_URL= # Outbound HTTPS to exchanges when using PROXY_URL (especially SOCKS). If you see # SSLCertVerificationError / "unable to get local issuer certificate": # - Prefer: install OS ca-certificates in the image, or point to a PEM bundle: # LIVE_TRADING_CA_BUNDLE=/path/to/ca-bundle.pem # (REQUESTS_CA_BUNDLE / SSL_CERT_FILE are also honored.) # - Last resort only: LIVE_TRADING_SSL_VERIFY=false # disables TLS verify — insecure #LIVE_TRADING_CA_BUNDLE= #LIVE_TRADING_SSL_VERIFY= # ========================= # Captcha / OAuth (optional) # ========================= TURNSTILE_SITE_KEY= TURNSTILE_SECRET_KEY= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GOOGLE_REDIRECT_URI=http://localhost:5000/api/auth/oauth/google/callback GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= GITHUB_REDIRECT_URI=http://localhost:5000/api/auth/oauth/github/callback # ========================= # Billing / payments # ========================= BILLING_ENABLED=false # Credit unit cost BILLING_COST_AI_ANALYSIS=10 BILLING_COST_AI_CODE_GEN=30 CREDITS_REGISTER_BONUS=100 CREDITS_REFERRAL_BONUS=50 # Membership plans MEMBERSHIP_MONTHLY_PRICE_USD=19.9 MEMBERSHIP_YEARLY_PRICE_USD=199 MEMBERSHIP_LIFETIME_PRICE_USD=499 MEMBERSHIP_MONTHLY_CREDITS=500 MEMBERSHIP_YEARLY_CREDITS=8000 MEMBERSHIP_LIFETIME_MONTHLY_CREDITS=800 # USDT payment USDT_PAY_ENABLED=false USDT_PAY_CHAIN=TRC20 USDT_TRC20_XPUB= USDT_TRC20_CONTRACT=TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj TRONGRID_BASE_URL=https://api.trongrid.io TRONGRID_API_KEY= USDT_PAY_CONFIRM_SECONDS=30 USDT_PAY_EXPIRE_MINUTES=30 USDT_WORKER_POLL_INTERVAL=30 # ========================= # Advanced / rarely changed # ========================= # Network / App tuning PYTHON_API_HOST=0.0.0.0 PYTHON_API_PORT=5000 PYTHON_API_DEBUG=false RATE_LIMIT=100 ENABLE_CACHE=false ENABLE_REQUEST_LOG=true # Strategy / execution tuning PENDING_ORDER_STALE_SEC=90 ORDER_MODE=market MAKER_WAIT_SEC=10 MAKER_OFFSET_BPS=2 STRATEGY_TICK_INTERVAL_SEC=10 PRICE_CACHE_TTL_SEC=10 K_LINE_HISTORY_GET_NUMBER=500 SIGNAL_NOTIFY_TIMEOUT_SEC=6 # LLM advanced tuning OPENROUTER_API_URL=https://openrouter.ai/api/v1/chat/completions OPENROUTER_TEMPERATURE=0.7 OPENROUTER_MAX_TOKENS=4000 OPENROUTER_TIMEOUT=300 OPENROUTER_CONNECT_TIMEOUT=30 OPENAI_BASE_URL=https://api.openai.com/v1 DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 GROK_BASE_URL=https://api.x.ai/v1 # Data sources DATA_SOURCE_TIMEOUT=30 DATA_SOURCE_RETRY=3 DATA_SOURCE_RETRY_BACKOFF=0.5 FINNHUB_API_KEY= FINNHUB_TIMEOUT=10 FINNHUB_RATE_LIMIT=60 CCXT_DEFAULT_EXCHANGE=coinbase CCXT_TIMEOUT=10000 YFINANCE_TIMEOUT=30 TIINGO_API_KEY= TIINGO_TIMEOUT=10 # AI search / news SEARCH_PROVIDER=google SEARCH_MAX_RESULTS=10 SEARCH_GOOGLE_API_KEY= SEARCH_GOOGLE_CX= SEARCH_BING_API_KEY= TAVILY_API_KEYS= SERPAPI_KEYS= # SMS / phone (optional) TWILIO_ACCOUNT_SID= TWILIO_AUTH_TOKEN= TWILIO_FROM_NUMBER= # Security / verification tuning SECURITY_IP_MAX_ATTEMPTS=10 SECURITY_IP_WINDOW_MINUTES=5 SECURITY_IP_BLOCK_MINUTES=15 SECURITY_ACCOUNT_MAX_ATTEMPTS=5 SECURITY_ACCOUNT_WINDOW_MINUTES=60 SECURITY_ACCOUNT_BLOCK_MINUTES=30 VERIFICATION_CODE_EXPIRE_MINUTES=10 VERIFICATION_CODE_RATE_LIMIT=60 VERIFICATION_CODE_IP_HOURLY_LIMIT=10 VERIFICATION_CODE_MAX_ATTEMPTS=5 VERIFICATION_CODE_LOCK_MINUTES=30 # AI analysis tuning ENABLE_CONFIDENCE_CALIBRATION=false ENABLE_AI_ENSEMBLE=false AI_ENSEMBLE_MODELS=openai/gpt-4o,openai/gpt-4o-mini ENABLE_REFLECTION_WORKER=false REFLECTION_WORKER_INTERVAL_SEC=86400 REFLECTION_MIN_AGE_DAYS=7 REFLECTION_VALIDATE_LIMIT=200 AI_CALIBRATION_MARKETS=Crypto AI_CALIBRATION_LOOKBACK_DAYS=30 AI_CALIBRATION_MIN_SAMPLES=80 AI_ANALYSIS_CONSENSUS_TIMEFRAMES=1D,4H # Internal INTERNAL_API_KEY=