#!/usr/bin/env python3
"""
Script pour ouvrir une position test à $10
"""

import os
import logging
from dotenv import load_dotenv
from apollox_v2_client import ApolloXV2Client

load_dotenv()

logging.basicConfig(level=logging.INFO, format='%(message)s')
logger = logging.getLogger(__name__)

def main():
    """Ouvre une position test à $10"""

    private_key = os.getenv('WALLET_PRIVATE_KEY')
    if not private_key:
        logger.error("❌ WALLET_PRIVATE_KEY manquante dans .env")
        return

    client = ApolloXV2Client(private_key=private_key)

    # Vérifier balances
    bnb_balance = client.get_balance()
    usdt_balance = client.get_usdt_balance()

    logger.info("=" * 80)
    logger.info("💰 BALANCES")
    logger.info("=" * 80)
    logger.info(f"Wallet: {client.account.address}")
    logger.info(f"BNB: {bnb_balance:.6f}")
    logger.info(f"USDT: {usdt_balance:.2f}")
    logger.info("")

    if usdt_balance < 10:
        logger.error(f"❌ Balance USDT insuffisante (min 10$, actuel: {usdt_balance:.2f}$)")
        return

    if bnb_balance < 0.001:
        logger.error(f"❌ Balance BNB insuffisante pour gas (min 0.001, actuel: {bnb_balance:.6f})")
        return

    # Paramètres position test
    pair = 'BTCUSD_DEGEN'
    is_long = True  # LONG
    margin = 10.0
    leverage = 50  # Leverage modéré pour test

    # Récupérer prix actuel BTC
    import requests
    try:
        resp = requests.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT', timeout=10)
        btc_price = float(resp.json()['price'])
        logger.info(f"📊 Prix BTC actuel: ${btc_price:,.2f}")
    except Exception as e:
        logger.error(f"❌ Erreur récupération prix BTC: {e}")
        return

    logger.info("")
    logger.info("=" * 80)
    logger.info("📊 OUVERTURE POSITION TEST")
    logger.info("=" * 80)
    logger.info(f"Pair: {pair}")
    logger.info(f"Side: {'LONG' if is_long else 'SHORT'}")
    logger.info(f"Margin: ${margin:.2f}")
    logger.info(f"Leverage: {leverage}x")
    logger.info(f"Prix: ${btc_price:,.2f}")
    logger.info("")

    input("⚠️  Appuyez sur ENTER pour confirmer l'ouverture... ")

    logger.info("🚀 Ouverture de la position...")

    try:
        trade_hash = client.open_position(
            pair=pair,
            is_long=is_long,
            margin_usd=margin,
            leverage=leverage,
            price=btc_price,
            stop_loss=0,  # Pas de SL automatique pour test
            take_profit=0  # Pas de TP automatique pour test
        )

        if trade_hash:
            logger.info("")
            logger.info("=" * 80)
            logger.info("✅ POSITION OUVERTE")
            logger.info("=" * 80)
            logger.info(f"Trade Hash: {trade_hash}")
            logger.info("")
            logger.info("📊 La position a été enregistrée dans positions.json")
            logger.info("🔍 Le bot va maintenant la monitorer toutes les 5 min")
        else:
            logger.error("❌ Échec ouverture position")

    except Exception as e:
        logger.error(f"❌ Erreur: {e}")
        import traceback
        traceback.print_exc()

if __name__ == '__main__':
    main()
