75 lines
2.0 KiB
C#
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;
|
|
}
|