From 83ee4f633c68072e84d1dea93bb7d0a52c6581b5 Mon Sep 17 00:00:00 2001 From: cryptooda Date: Fri, 3 Oct 2025 15:55:47 +0700 Subject: [PATCH] Update Agent search to display the balance tracked --- .../src/generated/ManagingApi.ts | 22 +++- .../src/generated/ManagingApiTypes.ts | 22 +++- .../src/pages/dashboardPage/agentSearch.tsx | 120 ++++++++++++++++-- 3 files changed, 146 insertions(+), 18 deletions(-) diff --git a/src/Managing.WebApp/src/generated/ManagingApi.ts b/src/Managing.WebApp/src/generated/ManagingApi.ts index 1656bc7f..c9f18ae4 100644 --- a/src/Managing.WebApp/src/generated/ManagingApi.ts +++ b/src/Managing.WebApp/src/generated/ManagingApi.ts @@ -4497,12 +4497,28 @@ export interface UserStrategyDetailsViewModel { volumeLast24H?: number; wins?: number; losses?: number; - positions?: Position[] | null; + positions?: PositionViewModel[] | null; identifier?: string; walletBalances?: { [key: string]: number; } | null; ticker?: Ticker; } +export interface PositionViewModel { + date: Date; + accountId: number; + originDirection: TradeDirection; + ticker: Ticker; + Open: Trade; + StopLoss: Trade; + TakeProfit1: Trade; + ProfitAndLoss?: ProfitAndLoss | null; + uiFees?: number; + gasFees?: number; + status: PositionStatus; + signalIdentifier?: string | null; + identifier: string; +} + export interface PlatformSummaryViewModel { lastUpdated?: Date; lastSnapshot?: Date; @@ -4556,6 +4572,7 @@ export interface AgentSummaryViewModel { totalVolume?: number; totalBalance?: number; totalFees?: number; + backtestCount?: number; } export enum SortableFields { @@ -4577,8 +4594,7 @@ export interface AgentBalanceHistory { export interface AgentBalance { agentName?: string | null; - totalValue?: number; - totalAccountUsdValue?: number; + totalBalanceValue?: number; botsAllocationUsdValue?: number; pnL?: number; time?: Date; diff --git a/src/Managing.WebApp/src/generated/ManagingApiTypes.ts b/src/Managing.WebApp/src/generated/ManagingApiTypes.ts index f5faf507..311c33e1 100644 --- a/src/Managing.WebApp/src/generated/ManagingApiTypes.ts +++ b/src/Managing.WebApp/src/generated/ManagingApiTypes.ts @@ -980,12 +980,28 @@ export interface UserStrategyDetailsViewModel { volumeLast24H?: number; wins?: number; losses?: number; - positions?: Position[] | null; + positions?: PositionViewModel[] | null; identifier?: string; walletBalances?: { [key: string]: number; } | null; ticker?: Ticker; } +export interface PositionViewModel { + date: Date; + accountId: number; + originDirection: TradeDirection; + ticker: Ticker; + Open: Trade; + StopLoss: Trade; + TakeProfit1: Trade; + ProfitAndLoss?: ProfitAndLoss | null; + uiFees?: number; + gasFees?: number; + status: PositionStatus; + signalIdentifier?: string | null; + identifier: string; +} + export interface PlatformSummaryViewModel { lastUpdated?: Date; lastSnapshot?: Date; @@ -1039,6 +1055,7 @@ export interface AgentSummaryViewModel { totalVolume?: number; totalBalance?: number; totalFees?: number; + backtestCount?: number; } export enum SortableFields { @@ -1060,8 +1077,7 @@ export interface AgentBalanceHistory { export interface AgentBalance { agentName?: string | null; - totalValue?: number; - totalAccountUsdValue?: number; + totalBalanceValue?: number; botsAllocationUsdValue?: number; pnL?: number; time?: Date; diff --git a/src/Managing.WebApp/src/pages/dashboardPage/agentSearch.tsx b/src/Managing.WebApp/src/pages/dashboardPage/agentSearch.tsx index 5cd0b0b5..f623b969 100644 --- a/src/Managing.WebApp/src/pages/dashboardPage/agentSearch.tsx +++ b/src/Managing.WebApp/src/pages/dashboardPage/agentSearch.tsx @@ -1,11 +1,13 @@ import React, {useState} from 'react' import {Card, FormInput, GridTile} from '../../components/mollecules' import useApiUrlStore from '../../app/store/apiStore' +import Plot from 'react-plotly.js' +import useTheme from '../../hooks/useTheme' import { type AgentBalanceHistory, BotStatus, DataClient, - type Position, + type PositionViewModel, TradeDirection, type UserStrategyDetailsViewModel } from '../../generated/ManagingApi' @@ -13,7 +15,7 @@ import { interface AgentData { strategies: UserStrategyDetailsViewModel[] balances: AgentBalanceHistory | null - positions: Position[] + positions: PositionViewModel[] } @@ -77,8 +79,7 @@ function AgentSearch({ index }: { index: number }) { // Get the most recent balance const latestBalance = balances[balances.length - 1] return { - totalValue: latestBalance.totalValue || 0, - totalAccountValue: latestBalance.totalAccountUsdValue || 0, + totalBalanceValue: latestBalance.totalBalanceValue || 0, botsAllocation: latestBalance.botsAllocationUsdValue || 0, } } @@ -126,8 +127,33 @@ function AgentSearch({ index }: { index: number }) { } } + // Prepare chart data for balance history + const prepareChartData = () => { + const balances = agentData?.balances?.agentBalances + if (!balances || balances.length === 0) return null + + // Sort by time to ensure proper chronological order + const sortedBalances = [...balances].sort((a, b) => + new Date(a.time || 0).getTime() - new Date(b.time || 0).getTime() + ) + + const dates = sortedBalances.map(balance => new Date(balance.time || 0)) + const totalBalanceValues = sortedBalances.map(balance => balance.totalBalanceValue || 0) + const botsAllocationValues = sortedBalances.map(balance => balance.botsAllocationUsdValue || 0) + const pnlValues = sortedBalances.map(balance => balance.pnL || 0) + + return { + dates, + totalBalanceValues, + botsAllocationValues, + pnlValues + } + } + const summary = calculateSummary() const currentBalance = getCurrentBalance() + const chartData = prepareChartData() + const theme = useTheme().themeProperty() return (
@@ -189,7 +215,7 @@ function AgentSearch({ index }: { index: number }) { - {position.originDirection === TradeDirection.Long ? 'Long' : 'Short'} {position.moneyManagement.leverage}x + {position.originDirection === TradeDirection.Long ? 'Long' : 'Short'} {position.Open.leverage}x
@@ -221,14 +247,10 @@ function AgentSearch({ index }: { index: number }) { {currentBalance && (

Current Balance

-
+
-
Total Balance
-
${currentBalance.totalValue.toLocaleString(undefined, { maximumFractionDigits: 2 })}
-
-
-
Account USDC Value
-
${currentBalance.totalAccountValue.toLocaleString(undefined, { maximumFractionDigits: 2 })}
+
Total Balance Value
+
${currentBalance.totalBalanceValue.toLocaleString(undefined, { maximumFractionDigits: 2 })}
Bots Allocation
@@ -238,6 +260,80 @@ function AgentSearch({ index }: { index: number }) {
)} + {/* Balance History Chart */} + {chartData && ( +
+

Balance History

+ +
+ )} +