← Назад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;