8112366c97
- Move utility scripts to scripts/ (check_market, check_positions, etc.) - Move test files to tests/ (test_modules, test_mt5_connection, etc.) - Move deprecated dashboards to archive/ - Move research files to docs/research/ - Add sys.path fix to all moved Python files - Rewrite README.md with architecture diagram and badges - Add CLAUDE.md project guide - Add MIT LICENSE - Update .gitignore with archive/ pattern Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
"""Check open positions and account status."""
|
|
# Run from project root: python scripts/check_positions.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"),
|
|
)
|
|
|
|
# Account info
|
|
account = mt5.account_info()
|
|
print("=" * 50)
|
|
print("ACCOUNT STATUS")
|
|
print("=" * 50)
|
|
print(f"Balance: ${account.balance:,.2f}")
|
|
print(f"Equity: ${account.equity:,.2f}")
|
|
print(f"Margin: ${account.margin:,.2f}")
|
|
print(f"Free Margin: ${account.margin_free:,.2f}")
|
|
print(f"Profit: ${account.profit:,.2f}")
|
|
print(f"Leverage: 1:{account.leverage}")
|
|
|
|
# Open positions
|
|
print("\n" + "=" * 50)
|
|
print("OPEN POSITIONS")
|
|
print("=" * 50)
|
|
positions = mt5.positions_get()
|
|
if positions:
|
|
for pos in positions:
|
|
print(f"#{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" SL: {pos.sl:.2f} | TP: {pos.tp:.2f}")
|
|
print(f" Profit: ${pos.profit:,.2f}")
|
|
print()
|
|
else:
|
|
print("No open positions")
|
|
|
|
# Recent history
|
|
print("=" * 50)
|
|
print("RECENT DEALS (Last 10)")
|
|
print("=" * 50)
|
|
from datetime import datetime, timedelta
|
|
deals = mt5.history_deals_get(datetime.now() - timedelta(days=1), datetime.now())
|
|
if deals:
|
|
for deal in deals[-10:]:
|
|
deal_type = "BUY" if deal.type == 0 else "SELL" if deal.type == 1 else "OTHER"
|
|
print(f"#{deal.ticket} | {deal_type} {deal.volume} @ {deal.price:.2f} | Profit: ${deal.profit:,.2f}")
|
|
else:
|
|
print("No recent deals")
|
|
|
|
mt5.shutdown()
|