Add Genetic workers

This commit is contained in:
2025-07-10 19:15:57 +07:00
parent c2c181e417
commit 0b4f2173e0
20 changed files with 1752 additions and 3 deletions

View File

@@ -0,0 +1,31 @@
using Managing.Infrastructure.Databases.MongoDb.Attributes;
using Managing.Infrastructure.Databases.MongoDb.Configurations;
using static Managing.Common.Enums;
namespace Managing.Infrastructure.Databases.MongoDb.Collections
{
[BsonCollection("GeneticRequests")]
public class GeneticRequestDto : Document
{
public string RequestId { get; set; }
public UserDto User { get; set; }
public DateTime? CompletedAt { get; set; }
public string Status { get; set; }
public Ticker Ticker { get; set; }
public Timeframe Timeframe { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public decimal Balance { get; set; }
public int PopulationSize { get; set; }
public int Generations { get; set; }
public double MutationRate { get; set; }
public string SelectionMethod { get; set; }
public int ElitismPercentage { get; set; }
public double MaxTakeProfit { get; set; }
public List<IndicatorType> EligibleIndicators { get; set; } = new();
public double? BestFitness { get; set; }
public string? BestIndividual { get; set; }
public string? ErrorMessage { get; set; }
public string? ProgressInfo { get; set; }
}
}

View File

@@ -182,6 +182,71 @@ public static class MongoMappers
#endregion
#region Genetic Requests
internal static GeneticRequest Map(GeneticRequestDto dto)
{
if (dto == null)
return null;
return new GeneticRequest
{
RequestId = dto.RequestId,
User = Map(dto.User),
CreatedAt = dto.CreatedAt,
CompletedAt = dto.CompletedAt,
Status = Enum.Parse<GeneticRequestStatus>(dto.Status),
Ticker = dto.Ticker,
Timeframe = dto.Timeframe,
StartDate = dto.StartDate,
EndDate = dto.EndDate,
Balance = dto.Balance,
PopulationSize = dto.PopulationSize,
Generations = dto.Generations,
MutationRate = dto.MutationRate,
SelectionMethod = dto.SelectionMethod,
ElitismPercentage = dto.ElitismPercentage,
MaxTakeProfit = dto.MaxTakeProfit,
EligibleIndicators = dto.EligibleIndicators,
BestFitness = dto.BestFitness,
BestIndividual = dto.BestIndividual,
ErrorMessage = dto.ErrorMessage,
ProgressInfo = dto.ProgressInfo
};
}
internal static GeneticRequestDto Map(GeneticRequest geneticRequest)
{
if (geneticRequest == null)
return null;
return new GeneticRequestDto
{
RequestId = geneticRequest.RequestId,
User = Map(geneticRequest.User),
CompletedAt = geneticRequest.CompletedAt,
Status = geneticRequest.Status.ToString(),
Ticker = geneticRequest.Ticker,
Timeframe = geneticRequest.Timeframe,
StartDate = geneticRequest.StartDate,
EndDate = geneticRequest.EndDate,
Balance = geneticRequest.Balance,
PopulationSize = geneticRequest.PopulationSize,
Generations = geneticRequest.Generations,
MutationRate = geneticRequest.MutationRate,
SelectionMethod = geneticRequest.SelectionMethod,
ElitismPercentage = geneticRequest.ElitismPercentage,
MaxTakeProfit = geneticRequest.MaxTakeProfit,
EligibleIndicators = geneticRequest.EligibleIndicators,
BestFitness = geneticRequest.BestFitness,
BestIndividual = geneticRequest.BestIndividual,
ErrorMessage = geneticRequest.ErrorMessage,
ProgressInfo = geneticRequest.ProgressInfo
};
}
#endregion
#region Candles
public static Candle Map(CandleDto candle)