//+------------------------------------------------------------------+ //| Update chart display | //+------------------------------------------------------------------+ void UpdateChartDisplay(string regime_text) { static long last_update = 0; if(GetTickCount() - last_update < 1000) return; double basket_profit = CalculateBasketProfit(); double basket_profit_percent = CalculateBasketProfitPercent(); int open_positions = CountOpenPositions(); string trailing_status = basket_trailing_active ? "ACTIVE" : "INACTIVE"; string breakeven_status = basket_breakeven_level > 0 ? "BREAKEVEN+" : "NOT SET"; Comment("\n", "=== ADAPTIVE SCALPER PRO ===\n", "Status: RUNNING\n", "Trades Today: ", daily_trade_count, "/", MaxTradesPerDay, "\n", "Open Positions: ", open_positions, "\n", "Basket Profit: $", DoubleToString(basket_profit, 2), " (", DoubleToString(basket_profit_percent, 2), "%)\n", "Trailing: ", trailing_status, " | ", breakeven_status, "\n", "Market Regime: ", regime_text, "\n", "Spread: ", SymbolInfoInteger(_Symbol, SYMBOL_SPREAD), " points\n", "Account Equity: $", DoubleToString(AccountInfoDouble(ACCOUNT_EQUITY), 2), "\n", "Last Update: ", TimeToString(TimeCurrent(), TIME_SECONDS) ); last_update = GetTickCount(); } //+------------------------------------------------------------------+ //| Count open positions for this EA | //+------------------------------------------------------------------+ int CountOpenPositions() { int count = 0; int total = PositionsTotal(); for(int i = 0; i < total; i++) { if(PositionGetSymbol(i) == _Symbol && PositionGetInteger(POSITION_MAGIC) == 123456) { count++; } } return count; }