FROM python:3.11-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 WORKDIR /app # scikit-learn runtime dependency on Debian slim. RUN apt-get update \ && apt-get install -y --no-install-recommends libgomp1 ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade pip \ && pip install --no-cache-dir -r /app/requirements.txt COPY . /app # Hugging Face persistent storage is typically mounted at /data. RUN mkdir -p /data ENV BOT_INTERVAL=15m \ BOT_POLL_SECONDS=45 \ BOT_STATE_FILE=/data/learning_state.joblib \ BOT_REPORT_FILE=/data/paper_report.json \ BOT_HEALTH_HOST=0.0.0.0 \ BOT_HEALTH_PORT=7860 \ PORT=7860 \ BOT_HF_ADVISOR_URL= \ BOT_HF_ADVISOR_TOKEN= \ BOT_HF_ADVISOR_MODE=blend \ BOT_HF_ADVISOR_MIN_CONFIDENCE=0.60 \ BOT_HF_ADVISOR_BLEND_WEIGHT=0.35 \ BOT_HF_ADVISOR_TIMEOUT_SECONDS=4.0 \ BOT_MIN_MODEL_SAMPLES_FOR_SIGNAL=50 \ BOT_PAUSE_ON_NEGATIVE_EXPECTANCY=1 \ BOT_PAUSE_EXPECTANCY_LOOKBACK=30 \ BOT_PAUSE_EXPECTANCY_THRESHOLD_USD=-1.0 \ BOT_PAUSE_MAX_DRAWDOWN_PCT=12.0 \ BOT_PAUSE_COOLDOWN_MINUTES=180 \ BOT_TELEGRAM_ML_REPORT_HOURS=6 \ BOT_TELEGRAM_ML_REPORT_MIN_TRADES=15 \ BOT_SL_MULT=1.3 \ BOT_TP_MULT=2.0 \ BOT_ENABLE_LIVE= \ BOT_LIVE_STARTUP_TEST= \ BOT_LIVE_STARTUP_TEST_COIN=HYPE \ BOT_LIVE_STARTUP_TEST_NOTIONAL=12 EXPOSE 7860 CMD ["sh", "-c", "python adaptive_bot.py \ --interval ${BOT_INTERVAL} \ --poll-seconds ${BOT_POLL_SECONDS} \ --state-file ${BOT_STATE_FILE} \ --report-file ${BOT_REPORT_FILE} \ --sl-mult ${BOT_SL_MULT} \ --tp-mult ${BOT_TP_MULT} \ --pause-cooldown-minutes ${BOT_PAUSE_COOLDOWN_MINUTES} \ --live-startup-test-coin ${BOT_LIVE_STARTUP_TEST_COIN} \ --live-startup-test-notional ${BOT_LIVE_STARTUP_TEST_NOTIONAL} \ ${BOT_ENABLE_LIVE:+--enable-live} \ ${BOT_LIVE_STARTUP_TEST:+--live-startup-test}"]