From b54f4a29b7b82e0efa609b47cc63c51f54ffedda Mon Sep 17 00:00:00 2001 From: "derek.holloway" Date: Fri, 13 Mar 2026 10:35:20 -0700 Subject: [PATCH] Add simulated stock history to UI --- WebServer/Components/Pages/Home.razor | 14 +++++++++----- WebServer/Controllers/ProjectTest.cs | 7 +++++-- WebServer/Entities/PurchasedStock.cs | 4 +++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/WebServer/Components/Pages/Home.razor b/WebServer/Components/Pages/Home.razor index 6121ab48..aa2147cd 100644 --- a/WebServer/Components/Pages/Home.razor +++ b/WebServer/Components/Pages/Home.razor @@ -81,14 +81,16 @@
-

Auto Trade History

+

@HistoryTitle

@foreach (PurchasedStock cur in Session.TradeHistory){

@cur.Symbol

Purchased Quantity: @cur.Quantity

Purchased Price: @cur.PurchasePrice

-

Sell Price: @cur.PurchasePrice

+

Sell Price: @cur.PurchasePrice


+

Buy Date: @cur.BuyDate.ToString("MM/dd/yy")


+

Sell Date: @cur.BuyDate.ToString("MM/dd/yy")

}
@@ -105,7 +107,7 @@ loginSession? Session = null; string resultError = ""; - + string HistoryTitle = "Auto Trade History"; @@ -218,8 +220,10 @@ // Simulate 1 month D683_Project_Test tests = new D683_Project_Test(aiModule); - float score = await tests.Simulate(Session.TrackedStocks); - TestResults = $"The amount of money the AI did better than the SPY: ${score} or { score / 10 }% better"; + (float, List) score = await tests.Simulate(Session.TrackedStocks); + TestResults = $"The amount of money the AI did better than the SPY: ${score} or { score.Item1 / 10 }% better"; + Session.TradeHistory = score.Item2; + HistoryTitle = "Simulated History"; } } \ No newline at end of file diff --git a/WebServer/Controllers/ProjectTest.cs b/WebServer/Controllers/ProjectTest.cs index 07a4543a..b06b0049 100644 --- a/WebServer/Controllers/ProjectTest.cs +++ b/WebServer/Controllers/ProjectTest.cs @@ -16,7 +16,7 @@ namespace Controllers.ProjectTest { _aiModule = aiModule; } - public async Task Simulate(List TrackedStocks) { + public async Task<(float, List)> Simulate(List TrackedStocks) { float StartingMoney = Money; // Run once for each day 30 days straight for (int i=30; i>=0; i--) { @@ -68,6 +68,8 @@ namespace Controllers.ProjectTest { Money = Money + sellPrice; // Mark as sold cur.Sold = true; + // Set Sell Date + cur.SellDate = DateTime.Now.AddDays(-i); } } @@ -85,6 +87,7 @@ namespace Controllers.ProjectTest { Symbol = HighestRanking.Symbol.ToUpper(), PurchasePrice = stockPrice, Quantity = MaxQty, + BuyDate = DateTime.Now.AddDays(-i) } ); Money = Money - ( stockPrice * MaxQty ); } @@ -103,7 +106,7 @@ namespace Controllers.ProjectTest { float earned = StartingMoney / SPYbegin * SPYend; // Return the difference between the AI and the SPY -> if value returned is 10. The AI did better than the SPY by $10 - return Money - earned; + return (Money - earned, StockHistory); } diff --git a/WebServer/Entities/PurchasedStock.cs b/WebServer/Entities/PurchasedStock.cs index 7332acfe..90a8e041 100644 --- a/WebServer/Entities/PurchasedStock.cs +++ b/WebServer/Entities/PurchasedStock.cs @@ -5,7 +5,9 @@ namespace Entities { public float Quantity { get; set; } = 0; public float PurchasePrice { get; set; } = 0; public float SellPrice { get; set; } = 0; - public bool Sold = false; + public bool Sold { get; set; } = false; + public DateTime BuyDate { get; set; } = new DateTime(); + public DateTime SellDate { get; set; } = new DateTime(); } } \ No newline at end of file