Update account/position and platform summary
This commit is contained in:
@@ -9,11 +9,11 @@ namespace Managing.Domain.Trades
|
||||
[GenerateSerializer]
|
||||
public class Position
|
||||
{
|
||||
public Position(Guid identifier, string accountName, TradeDirection originDirection, Ticker ticker,
|
||||
public Position(Guid identifier, int accountId, TradeDirection originDirection, Ticker ticker,
|
||||
LightMoneyManagement moneyManagement, PositionInitiator initiator, DateTime date, User user)
|
||||
{
|
||||
Identifier = identifier;
|
||||
AccountName = accountName;
|
||||
AccountId = accountId;
|
||||
OriginDirection = originDirection;
|
||||
Ticker = ticker;
|
||||
MoneyManagement = moneyManagement;
|
||||
@@ -23,9 +23,9 @@ namespace Managing.Domain.Trades
|
||||
User = user;
|
||||
}
|
||||
|
||||
[Id(0)] [Required] public string AccountName { get; set; }
|
||||
[Id(0)] [Required] public DateTime Date { get; set; }
|
||||
|
||||
[Id(1)] [Required] public DateTime Date { get; set; }
|
||||
[Id(1)] [Required] public int AccountId { get; set; }
|
||||
|
||||
[Id(2)] [Required] public TradeDirection OriginDirection { get; set; }
|
||||
|
||||
@@ -56,20 +56,24 @@ namespace Managing.Domain.Trades
|
||||
[JsonPropertyName("ProfitAndLoss")]
|
||||
public ProfitAndLoss ProfitAndLoss { get; set; }
|
||||
|
||||
[Id(10)] [Required] public PositionStatus Status { get; set; }
|
||||
[Id(10)] public decimal UiFees { get; set; }
|
||||
|
||||
[Id(11)] public string SignalIdentifier { get; set; }
|
||||
[Id(11)] public decimal GasFees { get; set; }
|
||||
|
||||
[Id(12)] [Required] public Guid Identifier { get; set; }
|
||||
[Id(12)] [Required] public PositionStatus Status { get; set; }
|
||||
|
||||
[Id(13)] [Required] public PositionInitiator Initiator { get; set; }
|
||||
[Id(13)] public string SignalIdentifier { get; set; }
|
||||
|
||||
[Id(14)] [Required] public User User { get; set; }
|
||||
[Id(14)] [Required] public Guid Identifier { get; set; }
|
||||
|
||||
[Id(15)] [Required] public PositionInitiator Initiator { get; set; }
|
||||
|
||||
[Id(16)] [Required] public User User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Identifier of the bot or entity that initiated this position
|
||||
/// </summary>
|
||||
[Id(15)] [Required] public Guid InitiatorIdentifier { get; set; }
|
||||
[Id(17)] [Required] public Guid InitiatorIdentifier { get; set; }
|
||||
|
||||
public bool IsFinished()
|
||||
{
|
||||
@@ -80,5 +84,46 @@ namespace Managing.Domain.Trades
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calculates the total fees for this position based on GMX V2 fee structure
|
||||
/// </summary>
|
||||
/// <returns>The total fees for the position</returns>
|
||||
public decimal CalculateTotalFees()
|
||||
{
|
||||
return UiFees + GasFees;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the net PnL after deducting fees
|
||||
/// </summary>
|
||||
/// <returns>The net PnL after fees</returns>
|
||||
public decimal GetNetPnL()
|
||||
{
|
||||
if (ProfitAndLoss?.Realized == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ProfitAndLoss.Realized - CalculateTotalFees();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the UI fees for this position
|
||||
/// </summary>
|
||||
/// <param name="uiFees">The UI fees to add</param>
|
||||
public void AddUiFees(decimal uiFees)
|
||||
{
|
||||
UiFees += uiFees;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the gas fees for this position
|
||||
/// </summary>
|
||||
/// <param name="gasFees">The gas fees to add</param>
|
||||
public void AddGasFees(decimal gasFees)
|
||||
{
|
||||
GasFees += gasFees;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user