Display signal quality score on analytics dashboard

- Add signalQualityScore to LastTrade interface
- Display quality score badge in last trade section (0-100)
- Color-coded: green (80+), yellow (70-79), orange (60-69)
- Shows 'Excellent', 'Good', or 'Marginal' label
- Gracefully handles null values (old trades without scores)
- Better layout when quality score is present
This commit is contained in:
mindesbunister
2025-10-31 11:34:46 +01:00
parent 090b79a07f
commit 3c79ecbe55
2 changed files with 26 additions and 2 deletions

View File

@@ -43,6 +43,7 @@ interface LastTrade {
takeProfit1Price: number
takeProfit2Price: number
isTestTrade: boolean
signalQualityScore?: number
}
interface NetPosition {
@@ -280,7 +281,17 @@ export default function AnalyticsPage() {
</div>
</div>
{lastTrade.exitTime && lastTrade.exitPrice && (
{lastTrade.signalQualityScore !== undefined ? (
<div className="bg-gray-700/30 rounded-lg p-4">
<div className="text-sm text-gray-400 mb-1">Signal Quality</div>
<div className={`text-xl font-bold ${lastTrade.signalQualityScore >= 80 ? 'text-green-400' : lastTrade.signalQualityScore >= 70 ? 'text-yellow-400' : 'text-orange-400'}`}>
{lastTrade.signalQualityScore}/100
</div>
<div className="text-xs text-gray-500">
{lastTrade.signalQualityScore >= 80 ? 'Excellent' : lastTrade.signalQualityScore >= 70 ? 'Good' : 'Marginal'}
</div>
</div>
) : lastTrade.exitTime && lastTrade.exitPrice ? (
<div className="bg-gray-700/30 rounded-lg p-4">
<div className="text-sm text-gray-400 mb-1">Exit</div>
<div className="text-xl font-bold text-white">${lastTrade.exitPrice.toFixed(4)}</div>
@@ -288,9 +299,21 @@ export default function AnalyticsPage() {
{new Date(lastTrade.exitTime).toLocaleString()}
</div>
</div>
)}
) : null}
</div>
{lastTrade.exitTime && lastTrade.exitPrice && lastTrade.signalQualityScore !== undefined && (
<div className="grid md:grid-cols-1 gap-4 mb-4">
<div className="bg-gray-700/30 rounded-lg p-4">
<div className="text-sm text-gray-400 mb-1">Exit</div>
<div className="text-xl font-bold text-white">${lastTrade.exitPrice.toFixed(4)}</div>
<div className="text-xs text-gray-500">
{new Date(lastTrade.exitTime).toLocaleString()}
</div>
</div>
</div>
)}
<div className="grid md:grid-cols-3 gap-4">
<div className="bg-gray-700/30 rounded-lg p-3">
<div className="text-xs text-gray-400 mb-1">Stop Loss</div>

View File

@@ -35,6 +35,7 @@ export async function GET() {
takeProfit1Price: trade.takeProfit1Price,
takeProfit2Price: trade.takeProfit2Price,
isTestTrade: trade.isTestTrade || false,
signalQualityScore: trade.signalQualityScore || undefined,
}
return NextResponse.json({