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:
@@ -43,6 +43,7 @@ interface LastTrade {
|
|||||||
takeProfit1Price: number
|
takeProfit1Price: number
|
||||||
takeProfit2Price: number
|
takeProfit2Price: number
|
||||||
isTestTrade: boolean
|
isTestTrade: boolean
|
||||||
|
signalQualityScore?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
interface NetPosition {
|
interface NetPosition {
|
||||||
@@ -280,7 +281,17 @@ export default function AnalyticsPage() {
|
|||||||
</div>
|
</div>
|
||||||
</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="bg-gray-700/30 rounded-lg p-4">
|
||||||
<div className="text-sm text-gray-400 mb-1">Exit</div>
|
<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-xl font-bold text-white">${lastTrade.exitPrice.toFixed(4)}</div>
|
||||||
@@ -288,9 +299,21 @@ export default function AnalyticsPage() {
|
|||||||
{new Date(lastTrade.exitTime).toLocaleString()}
|
{new Date(lastTrade.exitTime).toLocaleString()}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
) : null}
|
||||||
</div>
|
</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="grid md:grid-cols-3 gap-4">
|
||||||
<div className="bg-gray-700/30 rounded-lg p-3">
|
<div className="bg-gray-700/30 rounded-lg p-3">
|
||||||
<div className="text-xs text-gray-400 mb-1">Stop Loss</div>
|
<div className="text-xs text-gray-400 mb-1">Stop Loss</div>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ export async function GET() {
|
|||||||
takeProfit1Price: trade.takeProfit1Price,
|
takeProfit1Price: trade.takeProfit1Price,
|
||||||
takeProfit2Price: trade.takeProfit2Price,
|
takeProfit2Price: trade.takeProfit2Price,
|
||||||
isTestTrade: trade.isTestTrade || false,
|
isTestTrade: trade.isTestTrade || false,
|
||||||
|
signalQualityScore: trade.signalQualityScore || undefined,
|
||||||
}
|
}
|
||||||
|
|
||||||
return NextResponse.json({
|
return NextResponse.json({
|
||||||
|
|||||||
Reference in New Issue
Block a user