← Back
module.exports = {
  apps: [{
    name: 'of-trader',
    script: 'src/main.py',
    interpreter: '/home/app/of-trader/venv/bin/python3',
    cwd: '/home/app/of-trader',
    autorestart: true,
    max_restarts: 10,
    restart_delay: 5000,
    env: {
      TZ: 'America/Vancouver',
      PYTHONPATH: '/home/app/of-trader',

      // ---- SAFETY: stays dry until testnet + micro-mainnet validated ----
      DRY_RUN: 'false',
      BINANCE_TESTNET: 'false',

      // ---- Signal source (screener DB, read locally on this VPS) ----
      SCREENER_DB_PATH: '/home/app/futures-screener/server/data/users.db',
      POLL_INTERVAL_SEC: '3',

      // ---- Telegram (reuse grid-bot's own bot — NOT Bender) ----
      TELEGRAM_BOT_TOKEN: '8716285891:AAFtF_qm652Bb74FB1JW0mLSkXqPv5x_bXo',
      TELEGRAM_CHAT_ID: '191142060',

      // ---- Bracket (mirrors screener ticket) ----
      OF_TP_PCT: '2.0',
      OF_SL_PCT: '0.5',
      OF_HOLD_MAX_MIN: '10',
      OF_CAPITAL_USD: '3',
      OF_LEVERAGE: '4',

      // ---- Risk ----
      MAX_CONCURRENT_POSITIONS: '5',
      MAX_NOTIONAL_USD: '250',
      DAILY_LOSS_LIMIT_USD: '10',

      // ---- Binance keys (empty in DRY; testnet keys added in Chunk 4) ----
      BINANCE_API_KEY: 'vBUduGTyMQAzoAjw7piMxZkyBpwB313UNVjihODiBKzF2LX23smL8Mw2e5y6VSF4',
      BINANCE_API_SECRET: 'KZX2UZEI4RnzhnnfzNjECmvx5inKKXjtwHYSWBhsYiAPDlZ00cwmWimBBHvFs34T',

      // ---- TMM journal ----
      TMM_STRATEGY_TAG: 'OF.v1',
      TMM_TAG_COL_STRATEGY: '10',
    },
  }],
};