# Exchange selection EXCHANGE=aster # Pick aster (default) or grvt # Aster API credentials ASTER_API_KEY= ASTER_API_SECRET= # Core trading symbol and sizing TRADE_SYMBOL=BTCUSDT # Trading pair symbol TRADE_AMOUNT=0.001 # Base order quantity (base asset, e.g. BTC) # Risk management (USD amounts unless noted) LOSS_LIMIT=0.04 # Max loss per trade in USDT before forced close TRAILING_PROFIT=0.2 # Trailing stop activation profit (USDT) TRAILING_CALLBACK_RATE=0.2 # Trailing callback percent (e.g. 0.2 => 0.2%) PROFIT_LOCK_TRIGGER_USD=0.08 # Start moving base stop once unrealized PnL > this (USDT) PROFIT_LOCK_OFFSET_USD=0.04 # Base stop offset from entry after trigger (USDT) BOLLINGER_LENGTH=20 # SMA window (minutes) used for Bollinger bandwidth BOLLINGER_STD_MULTIPLIER=2 # Standard deviation multiplier for Bollinger bands MIN_BOLLINGER_BANDWIDTH=0.001 # Require bandwidth >= this ratio before new entries # Precision (per-symbol exchange filters) PRICE_TICK=0.1 # Price tick size (e.g. BTCUSDT uses 0.1) QTY_STEP=0.001 # Quantity step size (e.g. BTC min step 0.001) # Engine cadence and UI POLL_INTERVAL_MS=500 # Trend engine poll interval (ms) MAX_LOG_ENTRIES=200 # Max log entries shown in dashboard KLINE_INTERVAL=1m # Kline interval (e.g., 1m/3m/5m) MAX_CLOSE_SLIPPAGE_PCT=0.05 # Max allowed deviation vs mark when closing (0.05 => 5%) # Maker-only settings MAKER_LOSS_LIMIT=0.05 # Maker loss cap (USDT). Defaults to LOSS_LIMIT if unset MAKER_BID_OFFSET=0 # Bid quote offset from top bid (USDT) MAKER_ASK_OFFSET=0 # Ask quote offset from top ask (USDT) MAKER_REFRESH_INTERVAL_MS=1500 # Maker refresh cadence (ms) MAKER_MAX_CLOSE_SLIPPAGE_PCT=0.05 # Maker close slippage guard (fallbacks to MAX_CLOSE_SLIPPAGE_PCT) MAKER_PRICE_TICK=0.1 # Maker price tick size (defaults to PRICE_TICK) # GRVT authentication (set when EXCHANGE=grvt) GRVT_API_KEY= GRVT_API_SECRET= GRVT_SUB_ACCOUNT_ID= GRVT_INSTRUMENT=BTC_USDT_Perp GRVT_SYMBOL=BTCUSDT GRVT_ENV=prod # Optional advanced overrides # GRVT_COOKIE="gravity=..." # Pre-provisioned session cookie (auto-refresh uses API key when absent) # GRVT_ACCOUNT_ID= # Populated automatically after login # GRVT_SIGNER_PATH=./grvt-signer.cjs # Custom signature provider module # Lighter authentication (set when EXCHANGE=lighter) LIGHTER_ACCOUNT_INDEX= LIGHTER_API_PRIVATE_KEY= # 40-byte hex private key (e.g., 0x...) LIGHTER_API_KEY_INDEX=0 # API key slot (default 0) LIGHTER_SYMBOL=BTCUSDT # Trading pair (defaults to TRADE_SYMBOL when omitted) LIGHTER_ENV=testnet # mainnet | testnet | staging | dev # LIGHTER_BASE_URL=https://testnet.zklighter.elliot.ai # LIGHTER_CHAIN_ID=300 # Override inferred chain id when needed # LIGHTER_MARKET_ID=1 # Prefer explicit market id when symbols differ # LIGHTER_PRICE_DECIMALS=3 # Manual override for price decimals (optional) # LIGHTER_SIZE_DECIMALS=3 # Manual override for size decimals (optional)