Push merge conflict
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
using Exilion.TradingAtomics;
|
||||
using Managing.Infrastructure.Databases.MongoDb.Attributes;
|
||||
using Managing.Infrastructure.Databases.MongoDb.Configurations;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Infrastructure.Databases.MongoDb.Collections
|
||||
{
|
||||
@@ -12,6 +11,7 @@ namespace Managing.Infrastructure.Databases.MongoDb.Collections
|
||||
public int WinRate { get; set; }
|
||||
public decimal GrowthPercentage { get; set; }
|
||||
public decimal HodlPercentage { get; set; }
|
||||
public TradingBotConfigDto Config { get; set; }
|
||||
public List<PositionDto> Positions { get; set; }
|
||||
public List<SignalDto> Signals { get; set; }
|
||||
public List<CandleDto> Candles { get; set; }
|
||||
@@ -22,17 +22,5 @@ namespace Managing.Infrastructure.Databases.MongoDb.Collections
|
||||
public UserDto User { get; set; }
|
||||
public PerformanceMetrics Statistics { get; set; }
|
||||
public double Score { get; set; }
|
||||
|
||||
// TradingBotConfig properties
|
||||
public string AccountName { get; set; }
|
||||
public Ticker Ticker { get; set; }
|
||||
public string ScenarioName { get; set; }
|
||||
public Timeframe Timeframe { get; set; }
|
||||
public bool IsForWatchingOnly { get; set; }
|
||||
public decimal BotTradingBalance { get; set; }
|
||||
public BotType BotType { get; set; }
|
||||
public bool IsForBacktest { get; set; }
|
||||
public int CooldownPeriod { get; set; }
|
||||
public int MaxLossStreak { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ using Managing.Domain.Backtests;
|
||||
using Managing.Domain.Bots;
|
||||
using Managing.Domain.Candles;
|
||||
using Managing.Domain.MoneyManagements;
|
||||
using Managing.Domain.Risk;
|
||||
using Managing.Domain.Scenarios;
|
||||
using Managing.Domain.Statistics;
|
||||
using Managing.Domain.Strategies;
|
||||
@@ -132,20 +133,7 @@ public static class MongoMappers
|
||||
if (b == null)
|
||||
return null;
|
||||
|
||||
var config = new TradingBotConfig
|
||||
{
|
||||
AccountName = b.AccountName,
|
||||
Ticker = b.Ticker,
|
||||
ScenarioName = b.ScenarioName,
|
||||
Timeframe = b.Timeframe,
|
||||
IsForWatchingOnly = b.IsForWatchingOnly,
|
||||
BotTradingBalance = b.BotTradingBalance,
|
||||
BotType = b.BotType,
|
||||
IsForBacktest = b.IsForBacktest,
|
||||
CooldownPeriod = b.CooldownPeriod,
|
||||
MaxLossStreak = b.MaxLossStreak,
|
||||
MoneyManagement = Map(b.MoneyManagement)
|
||||
};
|
||||
var config = Map(b.Config);
|
||||
|
||||
var bTest = new Backtest(
|
||||
config,
|
||||
@@ -181,6 +169,7 @@ public static class MongoMappers
|
||||
WinRate = result.WinRate,
|
||||
GrowthPercentage = result.GrowthPercentage,
|
||||
HodlPercentage = result.HodlPercentage,
|
||||
Config = Map(result.Config),
|
||||
Positions = Map(result.Positions),
|
||||
Signals = result.Signals.Select(s => Map(s)).ToList(),
|
||||
Candles = result.Candles.Select(c => Map(c)).ToList(),
|
||||
@@ -191,16 +180,6 @@ public static class MongoMappers
|
||||
StartDate = result.StartDate,
|
||||
EndDate = result.EndDate,
|
||||
Score = result.Score,
|
||||
AccountName = result.Config.AccountName,
|
||||
Ticker = result.Config.Ticker,
|
||||
ScenarioName = result.Config.ScenarioName,
|
||||
Timeframe = result.Config.Timeframe,
|
||||
IsForWatchingOnly = result.Config.IsForWatchingOnly,
|
||||
BotTradingBalance = result.Config.BotTradingBalance,
|
||||
BotType = result.Config.BotType,
|
||||
IsForBacktest = result.Config.IsForBacktest,
|
||||
CooldownPeriod = result.Config.CooldownPeriod,
|
||||
MaxLossStreak = result.Config.MaxLossStreak
|
||||
};
|
||||
}
|
||||
|
||||
@@ -933,4 +912,122 @@ public static class MongoMappers
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region TradingBotConfig
|
||||
|
||||
public static TradingBotConfigDto Map(TradingBotConfig config)
|
||||
{
|
||||
if (config == null)
|
||||
return null;
|
||||
|
||||
return new TradingBotConfigDto
|
||||
{
|
||||
AccountName = config.AccountName,
|
||||
MoneyManagement = Map(config.MoneyManagement),
|
||||
Ticker = config.Ticker,
|
||||
Timeframe = config.Timeframe,
|
||||
IsForWatchingOnly = config.IsForWatchingOnly,
|
||||
BotTradingBalance = config.BotTradingBalance,
|
||||
IsForBacktest = config.IsForBacktest,
|
||||
CooldownPeriod = config.CooldownPeriod,
|
||||
MaxLossStreak = config.MaxLossStreak,
|
||||
FlipPosition = config.FlipPosition,
|
||||
Name = config.Name,
|
||||
RiskManagement = Map(config.RiskManagement),
|
||||
Scenario = Map(config.Scenario),
|
||||
ScenarioName = config.ScenarioName,
|
||||
MaxPositionTimeHours = config.MaxPositionTimeHours,
|
||||
CloseEarlyWhenProfitable = config.CloseEarlyWhenProfitable,
|
||||
FlipOnlyWhenInProfit = config.FlipOnlyWhenInProfit,
|
||||
UseSynthApi = config.UseSynthApi,
|
||||
UseForPositionSizing = config.UseForPositionSizing,
|
||||
UseForSignalFiltering = config.UseForSignalFiltering,
|
||||
UseForDynamicStopLoss = config.UseForDynamicStopLoss
|
||||
};
|
||||
}
|
||||
|
||||
public static TradingBotConfig Map(TradingBotConfigDto dto)
|
||||
{
|
||||
if (dto == null)
|
||||
return null;
|
||||
|
||||
return new TradingBotConfig
|
||||
{
|
||||
AccountName = dto.AccountName,
|
||||
MoneyManagement = Map(dto.MoneyManagement),
|
||||
Ticker = dto.Ticker,
|
||||
Timeframe = dto.Timeframe,
|
||||
IsForWatchingOnly = dto.IsForWatchingOnly,
|
||||
BotTradingBalance = dto.BotTradingBalance,
|
||||
IsForBacktest = dto.IsForBacktest,
|
||||
CooldownPeriod = dto.CooldownPeriod,
|
||||
MaxLossStreak = dto.MaxLossStreak,
|
||||
FlipPosition = dto.FlipPosition,
|
||||
Name = dto.Name,
|
||||
RiskManagement = Map(dto.RiskManagement),
|
||||
Scenario = Map(dto.Scenario),
|
||||
ScenarioName = dto.ScenarioName,
|
||||
MaxPositionTimeHours = dto.MaxPositionTimeHours,
|
||||
CloseEarlyWhenProfitable = dto.CloseEarlyWhenProfitable,
|
||||
FlipOnlyWhenInProfit = dto.FlipOnlyWhenInProfit,
|
||||
UseSynthApi = dto.UseSynthApi,
|
||||
UseForPositionSizing = dto.UseForPositionSizing,
|
||||
UseForSignalFiltering = dto.UseForSignalFiltering,
|
||||
UseForDynamicStopLoss = dto.UseForDynamicStopLoss
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region RiskManagement
|
||||
|
||||
public static RiskManagementDto Map(RiskManagement riskManagement)
|
||||
{
|
||||
if (riskManagement == null)
|
||||
return null;
|
||||
|
||||
return new RiskManagementDto
|
||||
{
|
||||
AdverseProbabilityThreshold = riskManagement.AdverseProbabilityThreshold,
|
||||
FavorableProbabilityThreshold = riskManagement.FavorableProbabilityThreshold,
|
||||
RiskAversion = riskManagement.RiskAversion,
|
||||
KellyMinimumThreshold = riskManagement.KellyMinimumThreshold,
|
||||
KellyMaximumCap = riskManagement.KellyMaximumCap,
|
||||
MaxLiquidationProbability = riskManagement.MaxLiquidationProbability,
|
||||
SignalValidationTimeHorizonHours = riskManagement.SignalValidationTimeHorizonHours,
|
||||
PositionMonitoringTimeHorizonHours = riskManagement.PositionMonitoringTimeHorizonHours,
|
||||
PositionWarningThreshold = riskManagement.PositionWarningThreshold,
|
||||
PositionAutoCloseThreshold = riskManagement.PositionAutoCloseThreshold,
|
||||
KellyFractionalMultiplier = riskManagement.KellyFractionalMultiplier,
|
||||
RiskTolerance = riskManagement.RiskTolerance,
|
||||
UseExpectedUtility = riskManagement.UseExpectedUtility,
|
||||
UseKellyCriterion = riskManagement.UseKellyCriterion
|
||||
};
|
||||
}
|
||||
|
||||
public static RiskManagement Map(RiskManagementDto dto)
|
||||
{
|
||||
if (dto == null)
|
||||
return null;
|
||||
|
||||
return new RiskManagement
|
||||
{
|
||||
AdverseProbabilityThreshold = dto.AdverseProbabilityThreshold,
|
||||
FavorableProbabilityThreshold = dto.FavorableProbabilityThreshold,
|
||||
RiskAversion = dto.RiskAversion,
|
||||
KellyMinimumThreshold = dto.KellyMinimumThreshold,
|
||||
KellyMaximumCap = dto.KellyMaximumCap,
|
||||
MaxLiquidationProbability = dto.MaxLiquidationProbability,
|
||||
SignalValidationTimeHorizonHours = dto.SignalValidationTimeHorizonHours,
|
||||
PositionMonitoringTimeHorizonHours = dto.PositionMonitoringTimeHorizonHours,
|
||||
PositionWarningThreshold = dto.PositionWarningThreshold,
|
||||
PositionAutoCloseThreshold = dto.PositionAutoCloseThreshold,
|
||||
KellyFractionalMultiplier = dto.KellyFractionalMultiplier,
|
||||
RiskTolerance = dto.RiskTolerance,
|
||||
UseExpectedUtility = dto.UseExpectedUtility,
|
||||
UseKellyCriterion = dto.UseKellyCriterion
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user