50 lines
1.9 KiB
C#
50 lines
1.9 KiB
C#
using Managing.Domain.MoneyManagements;
|
|
using Managing.Domain.Users;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using static Managing.Common.Enums;
|
|
|
|
namespace Managing.Domain.Trades
|
|
{
|
|
public class Position
|
|
{
|
|
public Position(string identifier, string accountName, TradeDirection originDirection, Ticker ticker,
|
|
MoneyManagement moneyManagement, PositionInitiator positionInitiator, DateTime date, User user)
|
|
{
|
|
Identifier = identifier;
|
|
AccountName = accountName;
|
|
OriginDirection = originDirection;
|
|
Ticker = ticker;
|
|
MoneyManagement = moneyManagement;
|
|
Initiator = positionInitiator;
|
|
Date = date;
|
|
Status = Initiator == PositionInitiator.PaperTrading ? PositionStatus.Filled : PositionStatus.New;
|
|
User = user;
|
|
}
|
|
|
|
[Required] public string AccountName { get; }
|
|
[Required] public DateTime Date { get; set; }
|
|
[Required] public TradeDirection OriginDirection { get; }
|
|
[Required] public Ticker Ticker { get; }
|
|
[Required] public MoneyManagement MoneyManagement { get; }
|
|
[Required] public Trade Open { get; set; }
|
|
[Required] public Trade StopLoss { get; set; }
|
|
[Required] public Trade TakeProfit1 { get; set; }
|
|
public Trade TakeProfit2 { get; set; }
|
|
public ProfitAndLoss ProfitAndLoss { get; set; }
|
|
[Required] public PositionStatus Status { get; set; }
|
|
public string SignalIdentifier { get; set; }
|
|
[Required] public string Identifier { get; set; }
|
|
[Required] public PositionInitiator Initiator { get; }
|
|
[Required] public User User { get; set; }
|
|
|
|
public bool IsFinished()
|
|
{
|
|
return Status switch
|
|
{
|
|
PositionStatus.Finished => true,
|
|
PositionStatus.Flipped => true,
|
|
_ => false
|
|
};
|
|
}
|
|
}
|
|
} |