Files

75 lines
2.0 KiB
C#

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using FinlyticCore.Dtos.Bot;
using FinlyticCore.Dtos.TechnicalAnalysis;
using FinlyticCore.Dtos.Trading;
namespace FinlyticBot.Database.Entities;
[Table("bot_positions")]
public class BotPositionEntity
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
public Guid ProposalId { get; set; }
[Required]
[MaxLength(20)]
public string Isin { get; set; } = string.Empty;
[MaxLength(30)]
public string Symbol { get; set; } = string.Empty;
public BotExecutionVenue Venue { get; set; } = BotExecutionVenue.SyntheticPaperBroker;
[MaxLength(60)]
public string? AlpacaOrderId { get; set; }
[MaxLength(60)]
public string? ClientOrderId { get; set; }
public SignalDirection Direction { get; set; } = SignalDirection.Buy;
[Column(TypeName = "decimal(18,4)")]
public decimal Quantity { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal EntryPrice { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal AverageBuyIn { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal InitialStopLoss { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal CurrentStopLoss { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal CurrentPrice { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal TakeProfit1 { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal TakeProfit2 { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal RealizedPnlEur { get; set; }
[Column(TypeName = "decimal(18,4)")]
public decimal TotalFeesEur { get; set; }
public BotPositionStatus Status { get; set; } = BotPositionStatus.Active;
public ExitPlan ExitPlan { get; set; } = null!;
public DateTime OpenedAtUtc { get; set; } = DateTime.UtcNow;
public DateTime? ClosedAtUtc { get; set; }
public DateTime LastSyncAtUtc { get; set; } = DateTime.UtcNow;
}