76 lines
3.0 KiB
Python
76 lines
3.0 KiB
Python
import os
|
|
from decimal import Decimal
|
|
|
|
# --- GLOBAL SETTINGS ---
|
|
# Use environment variables to switch profiles
|
|
# Example: TARGET_DEX="UNISWAP_V3"
|
|
TARGET_DEX = os.environ.get("TARGET_DEX", "UNISWAP_V3")
|
|
STATUS_FILE = os.environ.get("STATUS_FILE", "hedge_status.json")
|
|
|
|
# --- DEX PROFILES ---
|
|
DEX_PROFILES = {
|
|
"UNISWAP_V3": {
|
|
"NAME": "Uniswap V3 (Arbitrum)",
|
|
"COIN_SYMBOL": "ETH", # Asset to hedge on Hyperliquid
|
|
"RPC_ENV_VAR": "MAINNET_RPC_URL", # Env var to read RPC from
|
|
"NPM_ADDRESS": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
|
|
"ROUTER_ADDRESS": "0xE592427A0AEce92De3Edee1F18E0157C05861564",
|
|
"WETH_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", # WETH
|
|
"USDC_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", # USDC
|
|
"POOL_FEE": 500, # 0.05%
|
|
},
|
|
"PANCAKESWAP_V3": {
|
|
"NAME": "PancakeSwap V3 (Arbitrum)",
|
|
"COIN_SYMBOL": "ETH",
|
|
"RPC_ENV_VAR": "MAINNET_RPC_URL",
|
|
"NPM_ADDRESS": "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364",
|
|
"ROUTER_ADDRESS": "0x1b81D678ffb9C0263b24A97847620C99d213eB14",
|
|
"WETH_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
"USDC_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
"POOL_FEE": 500,
|
|
},
|
|
"UNISWAP_BNB": {
|
|
"NAME": "Uniswap V3 (BNB Chain)",
|
|
"COIN_SYMBOL": "BNB", # Hedge BNB
|
|
"RPC_ENV_VAR": "BNB_RPC_URL", # Needs a BSC RPC
|
|
# Uniswap V3 Official Addresses on BNB Chain
|
|
"NPM_ADDRESS": "0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613",
|
|
"ROUTER_ADDRESS": "0xB971eF87ede563556b2ED4b1C0b0019111Dd35d2",
|
|
# Pool: 0x47a90a2d92a8367a91efa1906bfc8c1e05bf10c4
|
|
# Tokens: WBNB / USDT
|
|
"WETH_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", # WBNB
|
|
"USDC_ADDRESS": "0x55d398326f99059fF775485246999027B3197955", # USDT (BSC)
|
|
"POOL_FEE": 500, # 0.05%
|
|
},
|
|
"PANCAKESWAP_BNB": {
|
|
"NAME": "PancakeSwap V3 (BNB Chain)",
|
|
"COIN_SYMBOL": "BNB",
|
|
"RPC_ENV_VAR": "BNB_RPC_URL",
|
|
"NPM_ADDRESS": "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364",
|
|
"ROUTER_ADDRESS": "0x1b81D678ffb9C0263b24A97847620C99d213eB14", # Smart Router
|
|
# Pool: 0x172fcD41E0913e95784454622d1c3724f546f849 (USDT/WBNB)
|
|
"WETH_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", # WBNB
|
|
"USDC_ADDRESS": "0x55d398326f99059fF775485246999027B3197955", # USDT
|
|
"POOL_FEE": 100,
|
|
}
|
|
}
|
|
|
|
# --- STRATEGY SETTINGS ---
|
|
MONITOR_INTERVAL_SECONDS = 60
|
|
CLOSE_POSITION_ENABLED = True
|
|
OPEN_POSITION_ENABLED = True
|
|
REBALANCE_ON_CLOSE_BELOW_RANGE = True
|
|
|
|
TARGET_INVESTMENT_VALUE_USDC = 2000
|
|
INITIAL_HEDGE_CAPITAL_USDC = 1000
|
|
|
|
RANGE_WIDTH_PCT = Decimal("0.05") # +/- 5%
|
|
SLIPPAGE_TOLERANCE = Decimal("0.02") # 2%
|
|
TRANSACTION_TIMEOUT_SECONDS = 30
|
|
|
|
# --- HELPER TO GET ACTIVE CONFIG ---
|
|
def get_current_config():
|
|
conf = DEX_PROFILES.get(TARGET_DEX)
|
|
if not conf:
|
|
raise ValueError(f"Unknown DEX profile: {TARGET_DEX}")
|
|
return conf |