mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
Added new configuration options for maker points bands, including target distances and maximum distance limits. Updated the logic to handle these configurations, ensuring backward compatibility with existing defaults. Enhanced documentation and tests to cover the new features and ensure correct functionality across the system.
227 lines
11 KiB
Bash
227 lines
11 KiB
Bash
# UI language (zh | en)
|
|
LANG=zh
|
|
|
|
# Exchange selection
|
|
EXCHANGE=aster # Pick aster (default) or binance/standx/grvt/lighter/backpack/paradex/nado
|
|
|
|
# Aster API credentials
|
|
ASTER_API_KEY=
|
|
ASTER_API_SECRET=
|
|
|
|
# Binance API credentials (set when EXCHANGE=binance)
|
|
BINANCE_API_KEY=
|
|
BINANCE_API_SECRET=
|
|
BINANCE_SYMBOL=BTCUSDT # Trading symbol. Use BTCUSDT_PERP to force perpetual when ambiguous.
|
|
BINANCE_MARKET_TYPE=perp # perp | spot | auto
|
|
# BINANCE_SANDBOX=false
|
|
# BINANCE_SPOT_REST_URL=https://api.binance.com
|
|
# BINANCE_FUTURES_REST_URL=https://fapi.binance.com
|
|
# BINANCE_SPOT_WS_URL=wss://stream.binance.com:9443/ws
|
|
# BINANCE_FUTURES_WS_URL=wss://fstream.binance.com/ws
|
|
|
|
# StandX authentication (set when EXCHANGE=standx)
|
|
STANDX_TOKEN=
|
|
STANDX_SYMBOL=BTC-USD
|
|
# STANDX_BASE_URL=https://perps.standx.com
|
|
# STANDX_WS_URL=wss://perps.standx.com/ws-stream/v1
|
|
# STANDX_SESSION_ID=
|
|
# Optional: request signing key (ed25519 private key, supports hex or base58 format)
|
|
# STANDX_REQUEST_PRIVATE_KEY=
|
|
# Token expiry configuration (recommended method: creation date + validity days
|
|
# Get these values when generating API token at https://standx.com/user/session
|
|
# STANDX_TOKEN_CREATE_DATE=2026-01-15 # Token creation date (YYYY-MM-DD format)
|
|
# STANDX_TOKEN_VALIDITY_DAYS=30 # Token validity period in days
|
|
# Legacy method: direct expiry timestamp (Unix seconds)
|
|
# STANDX_TOKEN_EXPIRY=1737092800
|
|
|
|
# Core trading symbol and sizing
|
|
TRADE_SYMBOL=BTCUSDT # Trading pair symbol
|
|
TRADE_AMOUNT=0.001 # Base order quantity (base asset, e.g. BTC)
|
|
|
|
# Swing Trading
|
|
SWING_DIRECTION=short # short | long | both
|
|
SWING_STOP_LOSS_PCT=0.05 # 0.05 = 5%
|
|
|
|
# Risk management (USD amounts unless noted)
|
|
LOSS_LIMIT=0.04 # Max loss per trade in USDT before for
|
|
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 unrealiz
|
|
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.
|
|
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=500 # 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)
|
|
|
|
# Maker-points Binance depth imbalance monitor
|
|
MAKER_POINTS_BINANCE_DEPTH_WINDOW_BPS=3 # Binance depth monitor window ar
|
|
MAKER_POINTS_BINANCE_DEPTH_IMBALANCE_RATIO=9 # Imbalance threshold ratio (e.g. 9 => one side >= 9x)
|
|
|
|
# Maker-points quote distance (all optional — omit a line to use the default shown)
|
|
# StandX scores by distance from MARK PRICE on a linear gradient: 100% at 0 bps,
|
|
# 40% at 10 bps, 12.5% at 30 bps, and exactly 0 at 100 bps and beyond.
|
|
#
|
|
# Target distance from mark price per band (bps). Defaults: 9 / 29 / 40.
|
|
# 40 bps is used for the far band because the old 99 bps edge quote only earns
|
|
# a 0.18% multiplier — 1/60th of what 40 bps earns — while tying up the same margin.
|
|
# MAKER_POINTS_BAND_0_10_BPS=9
|
|
# MAKER_POINTS_BAND_10_30_BPS=29
|
|
# MAKER_POINTS_BAND_30_100_BPS=40
|
|
#
|
|
# Hard cap on quote distance (bps). 95 leaves a safety margin before the 100 bp
|
|
# Automatically raised to the widest ENABLED band, so a quote is never pulled back
|
|
# toward the book (that would be the direction most likely to get filled). Capped at 100.
|
|
# MAKER_POINTS_MAX_DISTANCE_BPS=95
|
|
#
|
|
# Per-band reprice tolerance = max(MAKER_POINTS_MIN_REPRICE_BPS, band bps x this ratio).
|
|
# StandX only scores quotes that rest on the book for more than 3 seconds, and
|
|
# short-cycle cancels, so far bands are deliberately slower to move than near ones.
|
|
# Higher => orders move less often and rest longer. Not recommended below 0.1.
|
|
# MAKER_POINTS_BAND_REPRICE_RATIO=0.15
|
|
# MAKER_POINTS_MIN_REPRICE_BPS=3
|
|
#
|
|
# Stop-loss trigger offset attached to entry quotes (bps), so a filled quote is closed
|
|
# immediately instead of leaving inventory. Scales with the symbol price. Set 0 to disable.
|
|
# MAKER_POINTS_SL_OFFSET_BPS=2
|
|
#
|
|
# Band on/off switches (all default true). Disabling the 0-10 band is the simplest way
|
|
# to cut fill risk, at the cost of the highest-multiplier quotes.
|
|
# MAKER_POINTS_BAND_0_10=true
|
|
# MAKER_POINTS_BAND_10_30=true
|
|
# MAKER_POINTS_BAND_30_100=true
|
|
|
|
# Grid strategy defaults
|
|
GRID_LOWER_PRICE=25000 # Grid lower bound price (quote currency)
|
|
GRID_UPPER_PRICE=35000 # Grid upper bound price
|
|
GRID_LEVELS=10 # Number of grid levels between bounds (>=2)
|
|
GRID_ORDER_SIZE=0.001 # Quantity per grid order (base asset units)
|
|
GRID_MAX_POSITION_SIZE=0.01 # Max inventory the grid may hold (base units)
|
|
GRID_REFRESH_INTERVAL_MS=1000 # Grid evaluation cadence (ms)
|
|
GRID_MAX_LOG_ENTRIES=200 # Grid trade log length (defaults to MAX_LOG_ENTRIES when unset)
|
|
GRID_DIRECTION=both # Order direction: both | long | short
|
|
GRID_STOP_LOSS_PCT=0.01 # Stop loss trigger percentage beyond bounds (0.01 => 1%)
|
|
GRID_RESTART_TRIGGER_PCT=0.01 # Restart buffer percentage inside boun
|
|
GRID_AUTO_RESTART_ENABLED=true # Automatically resume grid when price re-enters range
|
|
GRID_MAX_CLOSE_SLIPPAGE_PCT=0.05 # Close-order slippage guard relative to mark price
|
|
GRID_SHIFT_ENABLED=false # Smart-follow grid: shift the whole grid when price drifts from anchor
|
|
GRID_SHIFT_TRIGGER_PCT=0.05 # Shift trigger: |price/anchor - 1| thr
|
|
GRID_SHIFT_RANGE_PCT=0.05 # New grid half-range around the new anchor after a shift
|
|
GRID_SHIFT_CONFIRM_MS=3000 # Deviation must persist this long befo
|
|
GRID_USE_REDUCE_ONLY=false # Attach reduceOnly to EXIT orders (some venues reject it alongside entries)
|
|
GRID_EXCHANGE_STOP_ENABLED=true # Keep an exchange-side STOP_MARKET backstop (aster/binance/grvt/ondoperps)
|
|
GRID_RECONCILE_INTERVAL_MS=30000 # Periodic REST reconcile cadence when ueries
|
|
GRID_UNCOVERED_GRACE_MS=5000 # Grace before the coverage audit acts on uncovered position
|
|
# GRID_PRICE_TICK=0.1 # Optional override for grid price tick (falls back to PRICE_TICK)
|
|
# GRID_QTY_STEP=0.001 # Optional override for grid quantity step (falls back to QTY_STEP)
|
|
|
|
# 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_SYMBO
|
|
LIGHTER_ENV=testnet # mainnet | testnet | staging | dev
|
|
# LIGHTER_BASE_URL=https://testnet.zklighter.elliot.ai
|
|
# LIGHTER_CHAIN_ID=300 # Override inferred chain id when neede
|
|
# 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)
|
|
|
|
# Backpack exchange configuration
|
|
# Fill these with your Backpack API credentials and preferences
|
|
|
|
BACKPACK_API_KEY=
|
|
BACKPACK_API_SECRET=
|
|
BACKPACK_PASSWORD=
|
|
BACKPACK_SUBACCOUNT=
|
|
|
|
# Use sandbox environment: "true" to enable, otherwise leave as false
|
|
BACKPACK_SANDBOX=false
|
|
|
|
# Default trading symbol (falls back to TRADE_SYMBOL or BTCUSDC)
|
|
BACKPACK_SYMBOL=BTC_USD_PERP
|
|
|
|
# Enable verbose adapter logging: set to "1" or "true"
|
|
BACKPACK_DEBUG=false
|
|
|
|
# Paradex exchange configuration
|
|
# Provide the EVM private key & wallet address for onboarded accounts.
|
|
# When EXCHANGE=paradex these values are used automatically.
|
|
|
|
PARADEX_SYMBOL=BTC-USD-PERP
|
|
PARADEX_PRIVATE_KEY=
|
|
PARADEX_WALLET_ADDRESS=
|
|
|
|
# Enable testnet endpoints by setting to "true"; defaults to false (mainnet).
|
|
# PARADEX_SANDBOX=false
|
|
|
|
# Force disabling ccxt.pro websocket usage by setting to "false" (pro is preferred when installed).
|
|
# PARADEX_USE_PRO=true
|
|
|
|
# Optional reconnect delay override (milliseconds, e.g., 2000). Leave blank for default.
|
|
# PARADEX_RECONNECT_DELAY_MS=
|
|
|
|
# Enable verbose adapter logging: set to "1" or "true"
|
|
# PARADEX_DEBUG=false
|
|
|
|
# Nado exchange configuration (Ink mainnet)
|
|
# Requires a linked signer private key + your original subaccount owner EVM address.
|
|
# When EXCHANGE=nado these values are used automatically.
|
|
|
|
NADO_ENV=inkMainnet # inkMainnet | inkTestnet
|
|
NADO_SYMBOL=BTC-PERP # Trading product symbol (e.g., BTC-PERP / ETH-PERP)
|
|
NADO_SIGNER_PRIVATE_KEY= # 32-byte 0x-prefixed private key (0x...)
|
|
NADO_SUBACCOUNT_OWNER= # EVM address of the subaccount owner (0x...)
|
|
NADO_SUBACCOUNT_NAME=default # Subaccount name (bytes12, default "default")
|
|
|
|
# Optional: market-order slippage buffer (used for IOC limit-as-market, e.g. 0.01 => 1%)
|
|
NADO_MARKET_SLIPPAGE_PCT=0.01
|
|
|
|
# Optional: stop trigger source for STOP_MARKET orders (oracle | last | mid)
|
|
NADO_STOP_TRIGGER_SOURCE=oracle
|
|
|
|
# Optional: how to handle orders smaller than Nado min_size (USDT0 notional)
|
|
# - adjust: round quantity up to the minimum allowed size (default)
|
|
# - reject: throw an error instead of auto-adjusting
|
|
NADO_MIN_SIZE_POLICY=adjust
|
|
|
|
# Optional endpoint overrides
|
|
# NADO_GATEWAY_WS_URL=wss://gateway.prod.nado.xyz/v1/ws
|
|
# NADO_SUBSCRIPTIONS_WS_URL=wss://gateway.prod.nado.xyz/v1/subscribe
|
|
# NADO_ARCHIVE_URL=https://archive.prod.nado.xyz/v1
|
|
# NADO_TRIGGER_URL=https://trigger.prod.nado.xyz/v1
|
|
# NADO_DEBUG=false
|
|
|
|
# Telegram notification configuration
|
|
# TELEGRAM_BOT_TOKEN= # Telegram bot token from @BotFather
|
|
# TELEGRAM_CHAT_ID= # Chat ID to receive notifications
|
|
# TELEGRAM_ACCOUNT_LABEL= # Account label to distinguish multiple bot instances (e.g., "Account-A") |