← Back
β˜†
"""
WT Bot v3 β€” Configuration
==========================
All settings in one place. Override via ecosystem.config.js env vars.
"""

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", "")

# ============================================================
# STRATEGY: S3_EMA_Filter on 5m
# ============================================================
TIMEFRAME = "5m"
# WaveTrend params β€” TV LazyBear REAL defaults (fixed: was 9/12/3, too sensitive)
WT_CHANNEL_LEN = 10
WT_AVG_LEN = 21
WT_MA_LEN = 4
WT_OVERSOLD = -50
WT_OVERBOUGHT = 50
EMA_PERIOD = 200
# Max bars after leaving zone where cross still counts as valid entry
WT_ZONE_LOOKBACK = 3

# SL/TP
SL_PCT = 0.02          # 2% stop loss
TP_PCT = 0.03          # 3% β€” legacy, used only for log estimates

# TP1 partial + trailing
TP1_PCT = 0.015         # 1.5% β€” close 50% of position (was 1.0%, avg winner too low)
TP1_CLOSE_RATIO = 0.5   # close 50% at TP1
TRAIL_ACTIVATION_PCT = 0.015  # trailing starts after TP1 (1.5%)
TRAIL_CALLBACK_PCT = 0.012    # 1.2% trailing distance (was 0.7%, too tight β†’ premature exits)

# ============================================================
# SCREENER
# ============================================================
SCAN_INTERVAL_SEC = 300         # 5 ΠΌΠΈΠ½ΡƒΡ‚
MIN_VOLUME_24H = 50_000_000    # $50M ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ (Vol<50M = WR 32%, Vol>70M = WR 66%)
MIN_TRADES_24H = 300_000       # 300K сдСлок ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ
ATR_MIN_PCT = 3.0              # ATR(14) ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ % (1h)
ATR_MAX_PCT = 999.0            # Π±Π΅Π· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»ΠΈΠΌΠΈΡ‚Π°
ATR_PERIOD = 14
NATR_5M_MIN = 1.2              # NATR(14) Π½Π° 5m ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ % β€” отсСкаСт "спящиС" ΠΌΠΎΠ½Π΅Ρ‚Ρ‹ (BERA 0.77% = лосс)

# ============================================================
# RISK MANAGEMENT
# ============================================================
TRADE_SIZE_USD = 5.0            # $5 Π½Π° сдСлку
LEVERAGE = 10                   # 10x
MAX_POSITIONS = 5               # макс ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ
COOLDOWN_MIN = 15               # ΠΌΠΈΠ½ΡƒΡ‚ cooldown послС стопа Π½Π° символ

# ============================================================
# COMMISSION
# ============================================================
MAKER_FEE = 0.0002      # 0.02% maker (limit orders)
TAKER_FEE = 0.0004      # 0.04% taker (market orders)

# ============================================================
# BLACKLIST β€” тяТёлыС ΠΌΠΎΠ½Π΅Ρ‚Ρ‹ (Ρ‚ΠΎΠΏ CMC) + ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅
# ============================================================
BLACKLIST = {
    # Π’ΠΎΠΏ CMC β€” Π½Π΅ Ρ‚ΠΎΡ€Π³ΡƒΠ΅ΠΌ
    "BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT", "XRPUSDT",
    "DOGEUSDT", "ADAUSDT", "DOTUSDT", "LTCUSDT", "LINKUSDT",
    "AVAXUSDT", "TRXUSDT", "MATICUSDT", "SHIBUSDT", "TONUSDT",
    "BCHUSDT", "XLMUSDT", "ATOMUSDT", "ICPUSDT", "UNIUSDT",
    # Binance TradFi / ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅
    "XAUUSDT", "PEPEUSDT", "1000PEPEUSDT",
    # Data-driven blacklist (Apr 6): 0-22% WR, total -$12.79
    "BANKUSDT", "NOMUSDT", "LITUSDT",
}

# ============================================================
# CIRCUIT BREAKER β€” ΠΏΠ°ΡƒΠ·Π° послС сСрии лоссов
# ============================================================
CIRCUIT_BREAKER_LOSSES = 3       # ΠΏΠ°ΡƒΠ·Π° послС N лоссов подряд
CIRCUIT_BREAKER_PAUSE_MIN = 30   # ΠΏΠ°ΡƒΠ·Π° Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ…

# ============================================================
# FILES
# ============================================================
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data")
WHITELIST_FILE = os.path.join(DATA_DIR, "whitelist.json")
POSITIONS_FILE = os.path.join(DATA_DIR, "positions.json")
TRADE_LOG_FILE = os.path.join(DATA_DIR, "trade_log.json")
COOLDOWNS_FILE = os.path.join(DATA_DIR, "cooldowns.json")

πŸ“œ Git History

c6f6bd5chore: initial commit β€” version control setup5 weeks ago
Show last diff
Loading...