Update SpotBot PNL calculation and enhance documentation guidelines

- Added logic to calculate broker PNL when it is zero or invalid, using actual prices for more accurate profit and loss reporting.
- Improved logging to provide detailed information when PNL is calculated, enhancing visibility into trading performance.
- Updated documentation guidelines to discourage unnecessary .md files unless explicitly requested by users.
This commit is contained in:
2026-01-06 16:24:53 +07:00
parent 55eb1e7086
commit 58eee1a878
2 changed files with 18 additions and 0 deletions

View File

@@ -99,3 +99,4 @@ Key Principles
- do not implement business logic on the controller, keep the business logic for Service files - do not implement business logic on the controller, keep the business logic for Service files
- When adding new property to and Orleans state, always add the property after the last one and increment the id - When adding new property to and Orleans state, always add the property after the last one and increment the id
- Do not use "npm" use only "bun" command for Web3Proxy and WebApp - Do not use "npm" use only "bun" command for Web3Proxy and WebApp
- Do not write .md documentation useless asked by the user in the prompt

View File

@@ -984,6 +984,23 @@ public class SpotBot : TradingBotBase
var totalBotFees = position.GasFees + position.UiFees; var totalBotFees = position.GasFees + position.UiFees;
var brokerRealizedPnl = brokerPosition.ProfitAndLoss.Realized; var brokerRealizedPnl = brokerPosition.ProfitAndLoss.Realized;
// If broker PNL is 0 or invalid, calculate it ourselves using actual prices
if (brokerRealizedPnl == 0 && brokerPosition.Open != null)
{
var entryPrice = position.Open.Price;
var exitPrice = brokerPosition.Open.Price;
var quantity = position.Open.Quantity;
// Calculate PNL: (exitPrice - entryPrice) * quantity for LONG
brokerRealizedPnl = TradingBox.CalculatePnL(entryPrice, exitPrice, quantity, 1, position.OriginDirection);
await LogDebugAsync(
$"⚠️ Broker PNL was 0, calculated from prices\n" +
$"Entry Price: `${entryPrice:F2}` | Exit Price: `${exitPrice:F2}`\n" +
$"Quantity: `{quantity:F8}`\n" +
$"Calculated PNL: `${brokerRealizedPnl:F2}`");
}
position.ProfitAndLoss = new ProfitAndLoss position.ProfitAndLoss = new ProfitAndLoss
{ {
Realized = brokerRealizedPnl, Realized = brokerRealizedPnl,