← Назад
require('dotenv').config(); const config = { port: process.env.PORT || 8080, apiKey: process.env.API_KEY || 'default_key', databaseUrl: process.env.DATABASE_URL, nodeEnv: process.env.NODE_ENV || 'development', binance: { tickerUrl: 'https://eapi.binance.com/eapi/v1/ticker', markUrl: 'https://eapi.binance.com/eapi/v1/mark', apiKey: process.env.BINANCE_API_KEY || '', apiSecret: process.env.BINANCE_API_SECRET || '', eapiBase: 'https://eapi.binance.com', }, trading: { enabled: process.env.TRADING_ENABLED === 'true', // Gamma Play auto-trading autoGamma: { enabled: process.env.AUTO_GAMMA_ENABLED === 'true', maxCostDefault: parseFloat(process.env.AUTO_GAMMA_MAX_COST) || 3, // $3 for SOL/BNB/XRP/DOGE maxCostMajor: parseFloat(process.env.AUTO_GAMMA_MAX_COST_MAJOR) || 5, // $5 for BTC/ETH majorAssets: ['BTC', 'ETH'], maxPositions: parseInt(process.env.AUTO_GAMMA_MAX_POS) || 5, minConfidence: parseInt(process.env.AUTO_GAMMA_MIN_CONF) || 90, maxDte: parseFloat(process.env.AUTO_GAMMA_MAX_DTE) || 1, // <= 1 day (24h) minDelta: parseFloat(process.env.AUTO_GAMMA_MIN_DELTA) || 0.3, // no far OTM maxDelta: parseFloat(process.env.AUTO_GAMMA_MAX_DELTA) || 0.7, // no deep ITM maxDistancePct: parseFloat(process.env.AUTO_GAMMA_MAX_DIST) || 1, // < 1% from strike minCostUsd: parseFloat(process.env.AUTO_GAMMA_MIN_COST) || 0.5, // skip dust noCounterTrend: true, tpPct: parseFloat(process.env.AUTO_GAMMA_TP_PCT) || 100, // TP +100% assets: (process.env.AUTO_GAMMA_ASSETS || 'BTC,ETH,SOL,BNB,XRP,DOGE').split(','), }, }, cache: { fastInterval: parseInt(process.env.FAST_REFRESH_MS) || 30 * 1000, // 30s — prices + Greeks slowInterval: parseInt(process.env.SLOW_REFRESH_MS) || 5 * 60 * 1000, // 5m — IV history + signals refreshInterval: 5 * 60 * 1000, // legacy fallback }, ws: { heartbeatInterval: 30000, }, telegram: { botToken: process.env.TELEGRAM_BOT_TOKEN || '', chatId: process.env.TELEGRAM_CHAT_ID || '', }, alerts: { minConfidence: parseInt(process.env.ALERT_MIN_CONFIDENCE) || 75, }, }; module.exports = config;