"""Modify TP of open positions to closer targets."""
# Run from project root: python scripts/modify_tp.py
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from dotenv import load_dotenv
load_dotenv()

import MetaTrader5 as mt5

# Connect
mt5.initialize(
    login=int(os.getenv("MT5_LOGIN")),
    password=os.getenv("MT5_PASSWORD"),
    server=os.getenv("MT5_SERVER"),
    path=os.getenv("MT5_PATH"),
)

# Get current tick
tick = mt5.symbol_info_tick("XAUUSD")
current_price = tick.bid
print(f"Current price: {current_price:.2f}")

# Get open positions
positions = mt5.positions_get()
if positions:
    for pos in positions:
        print(f"\n#{pos.ticket} | {'BUY' if pos.type == 0 else 'SELL'} {pos.volume} {pos.symbol}")
        print(f"   Open: {pos.price_open:.2f} | Current: {pos.price_current:.2f}")
        print(f"   Current SL: {pos.sl:.2f} | Current TP: {pos.tp:.2f}")
        print(f"   Profit: ${pos.profit:,.2f}")

        # Set TP 5 points above current to lock in profits
        if pos.type == 0:  # BUY
            new_tp = current_price + 5  # 5 points above current for quick TP
            new_sl = pos.price_open - 10   # Tighter stop loss (protect profit)
        else:  # SELL
            new_tp = current_price - 5
            new_sl = pos.price_open + 10

        print(f"   New SL: {new_sl:.2f} | New TP: {new_tp:.2f}")

        # Modify position
        request = {
            "action": mt5.TRADE_ACTION_SLTP,
            "symbol": pos.symbol,
            "position": pos.ticket,
            "sl": new_sl,
            "tp": new_tp,
        }

        result = mt5.order_send(request)
        if result.retcode == mt5.TRADE_RETCODE_DONE:
            print(f"   MODIFIED successfully!")
        else:
            print(f"   Failed to modify: {result.comment} (code: {result.retcode})")
else:
    print("No open positions")

mt5.shutdown()
