← Back
"""
Grid Bot — Configuration v3 (NEUTRAL GRID, низкая волатильность)
==================================================================
Переосмысленная стратегия: ищем СПЯЩИЕ монеты в узком рейндже,
а не волатильные (как в v2). Это фундаментально противоположный подход.

Депо: $150, биржа: Binance Futures

v3 изменения vs v2:
- НЕТ гонки за волой: NATR < 0.65% (раньше MV ≥ 65 — искали активность)
- Profit target per grid: +1% equity → ротация
- Soft SL per grid: -3% equity → закрытие без inventory blow-up
- Rebalance 90 min (было 5 min — recenter жрал прибыль)
- Coin lockout: 2 убыточных грида → бан 2 часа
- Max exposure 70% equity
- Funding filter: |funding| < 0.035% (перегретый рынок = скоро breakout)
- EMA20 slope < 0.4% (защита от тренда)
- Vol ≥ $150M (ликвидность мажоров)
- ✗ Time stop выключен (по просьбе Rick'а)
"""

import os

# ============================================================
# BINANCE
# ============================================================
BINANCE_API_KEY = os.getenv("BINANCE_API_KEY", "")
BINANCE_API_SECRET = os.getenv("BINANCE_API_SECRET", "")

# ============================================================
# TELEGRAM
# ============================================================
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "")
TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "")

# ============================================================
# DEPOSIT & SIZING (под $150)
# ============================================================
DEPOSIT_USD = float(os.getenv("DEPOSIT_USD", "150"))

# ============================================================
# GRID STRATEGY
# ============================================================
GRID_LEVELS = 4                 # 4 per side (4 buy + 4 sell = 8 total)
GRID_SPACING_PCT = 0.45         # base spacing 0.45% (overridden by ATR)
POSITION_SIZE_USD = 11.0        # $11 → notional $22 (Binance min $20 + запас)
LEVERAGE = 2                    # 2x

# Расчёт экспозиции (только MAX одна сторона при нейтральном гриде):
# BO $11 × 2x = $22 notional/order
# Max one-side: 4 × $22 = $88 notional/grid = 59% от $150
# 2 grids × $88 = $176 notional = 117% (в worst case обе стороны в минусе)

# ATR-adaptive spacing
ATR_SPACING_ENABLED = True
ATR_PERIOD = 14
ATR_SPACING_MULT = 0.90         # spacing = ATR/price * 100 * mult (v3.2: 1.15→0.90)
SPACING_MIN_PCT = 0.40          # floor (v3.2: 0.35→0.40)
SPACING_MAX_PCT = 0.50          # ceiling (v3.2: 0.60→0.50, узкий диапазон под ETH boковик)

# ============================================================
# INVENTORY MANAGEMENT (более мягкое — rely on soft SL вместо)
# ============================================================
INVENTORY_WARN_LEVELS = 3
INVENTORY_MAX_LEVELS = 6
UNSTUCK_ENABLED = True
UNSTUCK_THRESHOLD = 5           # было 4 — реже триггерим, soft SL защитит раньше
UNSTUCK_CLOSE_PCT = 0.50

# ============================================================
# TRAILING CENTER (90 мин rebalance — реже = меньше P&L жор)
# ============================================================
EMA_CENTER_PERIOD = 20
CENTER_UPDATE_SEC = 5400        # 90 min (было 300 = 5 min)
CENTER_DRIFT_THRESHOLD = 6

# ============================================================
# PROFIT TARGET & SOFT SL (per grid session)
# ============================================================
PROFIT_TARGET_USD = 1.50        # +1% от $150 → закрыть грид и ротировать
SOFT_SL_USD = 4.50              # -3% от $150 → закрыть грид (защита от slow bleed)

# ============================================================
# SCREENER (новые фильтры под Neutral Grid)
# ============================================================
SCREENER_INTERVAL_SEC = 300
SCREENER_MIN_VOLUME = 100_000_000   # $100M (Rick 16 Apr v3.2: 150→100M, +кандидатов)
SCREENER_BB_PERIOD = 20
SCREENER_BB_STD = 2.0
SCREENER_BB_WIDTH_MIN = 0.3
SCREENER_BB_WIDTH_MAX = 1.5
SCREENER_ADX_PERIOD = 14
SCREENER_ADX_MAX = 22           # строже (было 25)
SCREENER_BREAKOUT_BB_MULT = 1.5
SCREENER_BREAKOUT_ADX = 28
SCREENER_TOP_N = 30
SCREENER_TF = "15m"

# Choppiness Index
SCREENER_CHOP_PERIOD = 14
SCREENER_CHOP_MIN_ENTRY = 45    # мягче (Rick 16 Apr v3.2) — пустит больше мажоров
SCREENER_CHOP_MAX_EXIT = 40

# NATR filter (ГЛАВНОЕ ИЗМЕНЕНИЕ v3: ищем НИЗКУЮ волу)
SCREENER_NATR_MAX = 0.65        # %, волатильнее — не берём (grid blow-up risk)

# EMA20 slope filter (защита от тренда)
EMA_SLOPE_PERIOD = 20           # EMA(20) на 15m TF
EMA_SLOPE_MAX_PCT = 0.5         # |slope| < 0.5% (Rick 16 Apr v3.2)

# Funding rate filter (перегретый рынок фильтруем)
FUNDING_MAX_ABS = 0.00035       # |funding| < 0.035%

# Micro-volatility (оставляем для инфо, но НЕ hard gate)
SCREENER_MV_MIN_INFO = 5        # инфо, не блокирующий

# Candidates pool — крупные мажоры с ликвидностью $150M+
GRID_CANDIDATES = [
    "ETHUSDT", "SOLUSDT", "XRPUSDT", "DOGEUSDT", "AVAXUSDT",
    "LINKUSDT", "DOTUSDT", "NEARUSDT", "ADAUSDT", "LTCUSDT",
    "AAVEUSDT", "UNIUSDT", "ATOMUSDT", "OPUSDT", "ARBUSDT",
    "INJUSDT", "TONUSDT", "WLDUSDT", "FILUSDT", "ONDOUSDT",
    "1000PEPEUSDT", "1000SHIBUSDT", "SUIUSDT",
]

# Blacklist — TradFi-перпы требуют отдельных agreement'ов (Rick 16 Apr v3.2)
GRID_BLACKLIST = {
    "XAUUSDT", "XAGUSDT", "XAUTUSDT", "PAXGUSDT", "CLUSDT",
}

# ============================================================
# RISK MANAGEMENT
# ============================================================
MAX_LOSS_PCT = 4.50             # USD, per session — совпадает с SOFT_SL_USD
DAILY_LOSS_LIMIT_USD = 10.0     # абсолютный лимит, $10 (было % от баланса)
DAILY_LOSS_LIMIT_PCT = 6.7      # ≈ $10/$150 (для совместимости с RiskManager)

CIRCUIT_BREAKER_STOPS = 5
CIRCUIT_BREAKER_PAUSE_MIN = 30
MAX_CONCURRENT_GRIDS = 2

# Max exposure (защита от over-leveraged)
MAX_EXPOSURE_PCT = 130.0        # до 130% (нейтр. грид держит обе стороны)

# Coin lockout (2 фейла → бан)
COIN_LOCKOUT_FAILS = 2          # 2 убыточных сессии на монете
COIN_LOCKOUT_HOURS = 2          # бан 2 часа

# Cooldown после breakout
BREAKOUT_COOLDOWN_MIN = 10      # 10 мин (раньше 30)

# ============================================================
# PROFIT SYSTEM
# ============================================================
CHECKPOINT_DAY = 6
CHECKPOINT_HOUR = 21
WITHDRAW_RATIO = 0.5
EMERGENCY_DRAWDOWN_PCT = 20.0

# ============================================================
# COMMISSION
# ============================================================
MAKER_FEE = 0.0002
TAKER_FEE = 0.0004

# ============================================================
# TMM
# ============================================================
TMM_STRATEGY_TAG = "Grid.v3"
TMM_TAG_COL_STRATEGY = int(os.getenv("TMM_TAG_COL_STRATEGY", "10"))
TMM_TAG_COL_ENTRY = 1

# ============================================================
# FILES
# ============================================================
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data")
GRID_STATE_FILE = os.path.join(DATA_DIR, "grid_state.json")
SESSION_LOG_FILE = os.path.join(DATA_DIR, "session_log.json")
DAILY_PNL_FILE = os.path.join(DATA_DIR, "daily_pnl.json")
COIN_STATS_FILE = os.path.join(DATA_DIR, "coin_stats.json")   # для lockout tracking

📜 Git History

c6f6bd5chore: initial commit — version control setup5 weeks ago
Show last diff
Loading...