← Back
"""
Gerchik Levels Strategy — Configuration.
All params configurable via environment variables.
"""

import os

# === Enable/Disable ===
GERCHIK_ENABLED = os.environ.get("GERCHIK_ENABLED", "false").lower() == "true"

# Allowed models (comma-separated: A,B,C,D). Default: only A (bounce)
GERCHIK_ALLOWED_MODELS = set(
    m.strip().upper()
    for m in os.environ.get("GERCHIK_ALLOWED_MODELS", "A").split(",")
    if m.strip()
)

# === Position Sizing ===
GERCHIK_SIZE_USDT = float(os.environ.get("GERCHIK_SIZE_USDT", "10"))
GERCHIK_LEVERAGE = int(os.environ.get("GERCHIK_LEVERAGE", "5"))
GERCHIK_MAX_POSITIONS = int(os.environ.get("GERCHIK_MAX_POSITIONS", "3"))

# === Risk/Reward ===
GERCHIK_MIN_RR = float(os.environ.get("GERCHIK_MIN_RR", "3.0"))  # Minimum risk:reward ratio

# TP split ratios (must sum to 1.0)
GERCHIK_TP1_RR = float(os.environ.get("GERCHIK_TP1_RR", "3.0"))     # TP1 = 3x SL
GERCHIK_TP2_RR = float(os.environ.get("GERCHIK_TP2_RR", "4.0"))     # TP2 = 4x SL
GERCHIK_TP3_RR = float(os.environ.get("GERCHIK_TP3_RR", "5.0"))     # TP3 = 5x SL
GERCHIK_TP1_CLOSE_PCT = 0.50  # Close 50% at TP1
GERCHIK_TP2_CLOSE_PCT = 0.50  # Close 50% of remaining at TP2
# Rest closes at TP3

# Move SL to BE after N stoploss-distances in profit
GERCHIK_BE_TRIGGER_STOPLOSS_MULT = 2.0  # 2x SL distance = move to BE

# === Level Detection ===
GERCHIK_LEVEL_MIN_TOUCHES = int(os.environ.get("GERCHIK_LEVEL_MIN_TOUCHES", "3"))
GERCHIK_LEVEL_TOLERANCE_PCT = float(os.environ.get("GERCHIK_LEVEL_TOLERANCE_PCT", "0.15"))
GERCHIK_LEVEL_CANDLES = int(os.environ.get("GERCHIK_LEVEL_CANDLES", "500"))  # 1H candles
GERCHIK_MAX_LEVELS = int(os.environ.get("GERCHIK_MAX_LEVELS", "10"))

# SL buffer beyond level (% added to SL past the level)
GERCHIK_SL_BUFFER_PCT = float(os.environ.get("GERCHIK_SL_BUFFER_PCT", "0.1"))

# Max SL allowed (skip trade if SL is too big)
GERCHIK_MAX_SL_PCT = float(os.environ.get("GERCHIK_MAX_SL_PCT", "2.0"))

# === Scanning ===
GERCHIK_SCAN_INTERVAL = int(os.environ.get("GERCHIK_SCAN_INTERVAL", "300"))  # 5 min
GERCHIK_CHECK_INTERVAL = int(os.environ.get("GERCHIK_CHECK_INTERVAL", "3"))  # Position check

# === Instrument Filters ===
GERCHIK_MIN_VOLUME_24H = float(os.environ.get("GERCHIK_MIN_VOLUME_24H", "50000000"))  # $50M
GERCHIK_MIN_ATR_PCT = float(os.environ.get("GERCHIK_MIN_ATR_PCT", "0.5"))
GERCHIK_TOP_N_PAIRS = int(os.environ.get("GERCHIK_TOP_N_PAIRS", "50"))

# === Order Type ===
GERCHIK_USE_LIMIT_ORDERS = os.environ.get("GERCHIK_USE_LIMIT_ORDERS", "true").lower() == "true"
GERCHIK_LIMIT_FALLBACK_SEC = int(os.environ.get("GERCHIK_LIMIT_FALLBACK_SEC", "10"))
GERCHIK_USE_EXCHANGE_ORDERS = os.environ.get("GERCHIK_USE_EXCHANGE_ORDERS", "true").lower() == "true"

# Fees
TAKER_FEE_PCT = 0.04
MAKER_FEE_PCT = 0.02

# Model labels
MODEL_LABELS = {
    "A": "Отбой от уровня",
    "B": "Ложный пробой",
    "C": "Сложный ложный пробой",
    "D": "Пробой уровня",
}

📜 Git History

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